summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMax Kellermann <max@musicpd.org>2020-04-03 15:55:19 +0200
committerMax Kellermann <max@musicpd.org>2020-04-03 16:21:41 +0200
commit7a58b8c3e8fef24358eb501da93ec6d2bf2de181 (patch)
treed53bb32f6ec14b40001e96c7dce9e5e9eaa04cae /src
parent56b4b010d6d1e725ad033a7f3f3e0bb23e76cdcc (diff)
fs/AllocatedPath: pass std::string_view to FromUTF8()
Diffstat (limited to 'src')
-rw-r--r--src/Mapper.cxx2
-rw-r--r--src/db/plugins/simple/SimpleDatabasePlugin.cxx2
-rw-r--r--src/db/update/Walk.cxx2
-rw-r--r--src/fs/AllocatedPath.cxx4
-rw-r--r--src/fs/AllocatedPath.hxx11
-rw-r--r--src/fs/Charset.cxx9
-rw-r--r--src/fs/Charset.hxx3
-rw-r--r--src/storage/plugins/NfsStorage.cxx2
8 files changed, 16 insertions, 19 deletions
diff --git a/src/Mapper.cxx b/src/Mapper.cxx
index 099fb92ae..740f9f290 100644
--- a/src/Mapper.cxx
+++ b/src/Mapper.cxx
@@ -119,7 +119,7 @@ map_spl_utf8_to_fs(const char *name) noexcept
filename_utf8.append(PLAYLIST_FILE_SUFFIX);
const auto filename_fs =
- AllocatedPath::FromUTF8(filename_utf8.c_str());
+ AllocatedPath::FromUTF8(filename_utf8);
if (filename_fs.IsNull())
return nullptr;
diff --git a/src/db/plugins/simple/SimpleDatabasePlugin.cxx b/src/db/plugins/simple/SimpleDatabasePlugin.cxx
index 634268954..d0bae6c0c 100644
--- a/src/db/plugins/simple/SimpleDatabasePlugin.cxx
+++ b/src/db/plugins/simple/SimpleDatabasePlugin.cxx
@@ -436,7 +436,7 @@ SimpleDatabase::Mount(const char *local_uri, const char *storage_uri)
std::string name(storage_uri);
std::replace_if(name.begin(), name.end(), IsUnsafeChar, '_');
- const auto name_fs = AllocatedPath::FromUTF8Throw(name.c_str());
+ const auto name_fs = AllocatedPath::FromUTF8Throw(name);
#ifndef ENABLE_ZLIB
constexpr bool compress = false;
diff --git a/src/db/update/Walk.cxx b/src/db/update/Walk.cxx
index ff55be1bc..a1d187933 100644
--- a/src/db/update/Walk.cxx
+++ b/src/db/update/Walk.cxx
@@ -81,7 +81,7 @@ UpdateWalk::RemoveExcludedFromDirectory(Directory &directory,
directory.ForEachSongSafe([&](Song &song){
assert(&song.parent == &directory);
- const auto name_fs = AllocatedPath::FromUTF8(song.filename.c_str());
+ const auto name_fs = AllocatedPath::FromUTF8(song.filename);
if (name_fs.IsNull() || exclude_list.Check(name_fs)) {
editor.DeleteSong(directory, &song);
modified = true;
diff --git a/src/fs/AllocatedPath.cxx b/src/fs/AllocatedPath.cxx
index 8f5d064aa..c2969580e 100644
--- a/src/fs/AllocatedPath.cxx
+++ b/src/fs/AllocatedPath.cxx
@@ -25,7 +25,7 @@
AllocatedPath::~AllocatedPath() noexcept = default;
AllocatedPath
-AllocatedPath::FromUTF8(const char *path_utf8) noexcept
+AllocatedPath::FromUTF8(std::string_view path_utf8) noexcept
{
#ifdef FS_CHARSET_ALWAYS_UTF8
return FromFS(path_utf8);
@@ -39,7 +39,7 @@ AllocatedPath::FromUTF8(const char *path_utf8) noexcept
}
AllocatedPath
-AllocatedPath::FromUTF8Throw(const char *path_utf8)
+AllocatedPath::FromUTF8Throw(std::string_view path_utf8)
{
#ifdef FS_CHARSET_ALWAYS_UTF8
return FromFS(path_utf8);
diff --git a/src/fs/AllocatedPath.hxx b/src/fs/AllocatedPath.hxx
index 5988acb79..11362ce1b 100644
--- a/src/fs/AllocatedPath.hxx
+++ b/src/fs/AllocatedPath.hxx
@@ -173,15 +173,18 @@ public:
* Convert a UTF-8 C string to an #AllocatedPath instance.
* Returns return a "nulled" instance on error.
*/
- gcc_pure gcc_nonnull_all
- static AllocatedPath FromUTF8(const char *path_utf8) noexcept;
+ gcc_pure
+ static AllocatedPath FromUTF8(std::string_view path_utf8) noexcept;
+
+ static AllocatedPath FromUTF8(const char *path_utf8) noexcept {
+ return FromUTF8(std::string_view(path_utf8));
+ }
/**
* Convert a UTF-8 C string to an #AllocatedPath instance.
* Throws a std::runtime_error on error.
*/
- gcc_nonnull_all
- static AllocatedPath FromUTF8Throw(const char *path_utf8);
+ static AllocatedPath FromUTF8Throw(std::string_view path_utf8);
/**
* Copy an #AllocatedPath object.
diff --git a/src/fs/Charset.cxx b/src/fs/Charset.cxx
index 6b4ca9f0a..71cd96908 100644
--- a/src/fs/Charset.cxx
+++ b/src/fs/Charset.cxx
@@ -118,19 +118,14 @@ PathToUTF8(PathTraitsFS::const_pointer path_fs)
#if defined(HAVE_FS_CHARSET) || defined(_WIN32)
PathTraitsFS::string
-PathFromUTF8(PathTraitsUTF8::const_pointer path_utf8)
+PathFromUTF8(PathTraitsUTF8::string_view path_utf8)
{
-#if !CLANG_CHECK_VERSION(3,6)
- /* disabled on clang due to -Wtautological-pointer-compare */
- assert(path_utf8 != nullptr);
-#endif
-
#ifdef _WIN32
const auto buffer = MultiByteToWideChar(CP_UTF8, path_utf8);
return PathTraitsFS::string(buffer);
#else
if (fs_converter == nullptr)
- return path_utf8;
+ return PathTraitsFS::string(path_utf8);
const auto buffer = fs_converter->FromUTF8(path_utf8);
return PathTraitsFS::string(buffer);
diff --git a/src/fs/Charset.hxx b/src/fs/Charset.hxx
index 7d3ec46e1..f387176f9 100644
--- a/src/fs/Charset.hxx
+++ b/src/fs/Charset.hxx
@@ -53,8 +53,7 @@ PathToUTF8(PathTraitsFS::const_pointer path_fs);
*
* Throws std::runtime_error on error.
*/
-gcc_nonnull_all
PathTraitsFS::string
-PathFromUTF8(PathTraitsUTF8::const_pointer path_utf8);
+PathFromUTF8(PathTraitsUTF8::string_view path_utf8);
#endif
diff --git a/src/storage/plugins/NfsStorage.cxx b/src/storage/plugins/NfsStorage.cxx
index ffcbe13a0..f1bdfa139 100644
--- a/src/storage/plugins/NfsStorage.cxx
+++ b/src/storage/plugins/NfsStorage.cxx
@@ -228,7 +228,7 @@ UriToNfsPath(const char *_uri_utf8)
/* assume UTF-8 when accessing NFS from Windows */
return uri_utf8;
#else
- return AllocatedPath::FromUTF8Throw(uri_utf8.c_str()).Steal();
+ return AllocatedPath::FromUTF8Throw(uri_utf8).Steal();
#endif
}