StoragePlugin: add method MapToRelativeUTF8()

Replaces map_to_relative_path() from Mapper.cxx.
This commit is contained in:
Max Kellermann
2014-02-07 19:01:06 +01:00
parent d744c997d8
commit ffd16b55a6
10 changed files with 60 additions and 55 deletions

View File

@@ -68,6 +68,14 @@ public:
gcc_pure
AllocatedPath MapChildFS(const char *uri_utf8,
const char *child_utf8) const;
/**
* Check if the given URI points inside this storage. If yes,
* then it returns a relative URI (pointing inside the given
* string); if not, returns nullptr.
*/
gcc_pure
virtual const char *MapToRelativeUTF8(const char *uri_utf8) const = 0;
};
#endif

View File

@@ -68,6 +68,8 @@ public:
virtual AllocatedPath MapFS(const char *uri_utf8) const override;
virtual const char *MapToRelativeUTF8(const char *uri_utf8) const override;
private:
AllocatedPath MapFS(const char *uri_utf8, Error &error) const;
};
@@ -130,6 +132,12 @@ LocalStorage::MapFS(const char *uri_utf8) const
return MapFS(uri_utf8, IgnoreError());
}
const char *
LocalStorage::MapToRelativeUTF8(const char *uri_utf8) const
{
return PathTraitsUTF8::Relative(base_utf8.c_str(), uri_utf8);
}
bool
LocalStorage::GetInfo(const char *uri_utf8, bool follow, FileInfo &info,
Error &error)

View File

@@ -69,6 +69,8 @@ public:
Error &error) override;
virtual std::string MapUTF8(const char *uri_utf8) const override;
virtual const char *MapToRelativeUTF8(const char *uri_utf8) const override;
};
std::string
@@ -82,6 +84,12 @@ SmbclientStorage::MapUTF8(const char *uri_utf8) const
return PathTraitsUTF8::Build(base.c_str(), uri_utf8);
}
const char *
SmbclientStorage::MapToRelativeUTF8(const char *uri_utf8) const
{
return PathTraitsUTF8::Relative(base.c_str(), uri_utf8);
}
static bool
GetInfo(const char *path, FileInfo &info, Error &error)
{