diff options
author | Max Kellermann <max@duempel.org> | 2014-11-30 00:17:08 +0100 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2014-11-30 00:28:27 +0100 |
commit | 4f80a129f13daae72e0463923250534e0d437026 (patch) | |
tree | c7e0a3713cd32b6ac7dbf318c418be79f907c23a /src/fs | |
parent | 6987f2ba82ca2205efa5a0ff9088f4555fe607c1 (diff) |
fs/Charset: return std::string from PathFromUTF8()
Don't expose pointer that requires the caller to invoke g_free(),
because that's GLib-only.
Diffstat (limited to 'src/fs')
-rw-r--r-- | src/fs/AllocatedPath.cxx | 21 | ||||
-rw-r--r-- | src/fs/AllocatedPath.hxx | 7 | ||||
-rw-r--r-- | src/fs/Charset.cxx | 4 | ||||
-rw-r--r-- | src/fs/Charset.hxx | 8 |
4 files changed, 9 insertions, 31 deletions
diff --git a/src/fs/AllocatedPath.cxx b/src/fs/AllocatedPath.cxx index 65dcff56f..bd026db74 100644 --- a/src/fs/AllocatedPath.cxx +++ b/src/fs/AllocatedPath.cxx @@ -24,21 +24,6 @@ #include "util/Error.hxx" #include "Compiler.h" -#ifdef HAVE_GLIB -#include <glib.h> -#endif - -#include <string.h> - -#ifdef HAVE_GLIB - -inline AllocatedPath::AllocatedPath(Donate, pointer _value) - :value(_value) { - g_free(_value); -} - -#endif - /* no inlining, please */ AllocatedPath::~AllocatedPath() {} @@ -46,11 +31,7 @@ AllocatedPath AllocatedPath::FromUTF8(const char *path_utf8) { #ifdef HAVE_FS_CHARSET - char *path = ::PathFromUTF8(path_utf8); - if (path == nullptr) - return AllocatedPath::Null(); - - return AllocatedPath(Donate(), path); + return AllocatedPath(::PathFromUTF8(path_utf8)); #else return FromFS(path_utf8); #endif diff --git a/src/fs/AllocatedPath.hxx b/src/fs/AllocatedPath.hxx index c345470c8..73b6891ad 100644 --- a/src/fs/AllocatedPath.hxx +++ b/src/fs/AllocatedPath.hxx @@ -44,13 +44,6 @@ class AllocatedPath { string value; - struct Donate {}; - - /** - * Donate the allocated pointer to a new #AllocatedPath object. - */ - AllocatedPath(Donate, pointer _value); - AllocatedPath(const_pointer _value):value(_value) {} AllocatedPath(string &&_value):value(std::move(_value)) {} diff --git a/src/fs/Charset.cxx b/src/fs/Charset.cxx index c98170c24..fb7313a35 100644 --- a/src/fs/Charset.cxx +++ b/src/fs/Charset.cxx @@ -157,13 +157,13 @@ PathToUTF8(const char *path_fs) #ifdef HAVE_FS_CHARSET -char * +std::string PathFromUTF8(const char *path_utf8) { assert(path_utf8 != nullptr); if (fs_charset.empty()) - return g_strdup(path_utf8); + return path_utf8; return g_convert(path_utf8, -1, fs_charset.c_str(), "utf-8", diff --git a/src/fs/Charset.hxx b/src/fs/Charset.hxx index 7a5193576..80f510ce0 100644 --- a/src/fs/Charset.hxx +++ b/src/fs/Charset.hxx @@ -52,8 +52,12 @@ gcc_pure gcc_nonnull_all std::string PathToUTF8(const char *path_fs); -gcc_malloc gcc_nonnull_all -char * +/** + * Convert the path from UTF-8. + * Returns empty string on error. + */ +gcc_pure gcc_nonnull_all +std::string PathFromUTF8(const char *path_utf8); #endif |