From ee5eba793f75b9d7534be1a79f2af211162dc564 Mon Sep 17 00:00:00 2001 From: Deomid Ryabkov Date: Fri, 23 Jun 2017 13:07:43 +0100 Subject: [PATCH] Make relative paths match the default VFS, if provided https://github.com/espressif/esp-idf/issues/158 --- components/vfs/test/test_vfs_paths.c | 2 ++ components/vfs/vfs.c | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/components/vfs/test/test_vfs_paths.c b/components/vfs/test/test_vfs_paths.c index fa00dc4e9..e9ff6a0a0 100644 --- a/components/vfs/test/test_vfs_paths.c +++ b/components/vfs/test/test_vfs_paths.c @@ -197,6 +197,8 @@ TEST_CASE("vfs parses paths correctly", "[vfs]") test_dir_opened(&inst_foobar, "/foo/bar/file"); inst_toplevel.match_path = "/tmp/foo"; test_opened(&inst_toplevel, "/tmp/foo"); + inst_toplevel.match_path = "foo"; + test_opened(&inst_toplevel, "foo"); TEST_ESP_OK( esp_vfs_unregister("/foo") ); TEST_ESP_OK( esp_vfs_unregister("/foo1") ); diff --git a/components/vfs/vfs.c b/components/vfs/vfs.c index f610fd280..f99465e4f 100644 --- a/components/vfs/vfs.c +++ b/components/vfs/vfs.c @@ -142,6 +142,11 @@ static const vfs_entry_t* get_vfs_for_path(const char* path) memcmp(path, vfs->path_prefix, vfs->path_prefix_len) != 0) { continue; } + // this is the default VFS and we don't have a better match yet. + if (vfs->path_prefix_len == 0 && !best_match) { + best_match = vfs; + continue; + } // if path is not equal to the prefix, expect to see a path separator // i.e. don't match "/data" prefix for "/data1/foo.txt" path if (len > vfs->path_prefix_len &&