Commit 4f80a129 authored by Max Kellermann's avatar Max Kellermann

fs/Charset: return std::string from PathFromUTF8()

Don't expose pointer that requires the caller to invoke g_free(), because that's GLib-only.
parent 6987f2ba
...@@ -24,21 +24,6 @@ ...@@ -24,21 +24,6 @@
#include "util/Error.hxx" #include "util/Error.hxx"
#include "Compiler.h" #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 */ /* no inlining, please */
AllocatedPath::~AllocatedPath() {} AllocatedPath::~AllocatedPath() {}
...@@ -46,11 +31,7 @@ AllocatedPath ...@@ -46,11 +31,7 @@ AllocatedPath
AllocatedPath::FromUTF8(const char *path_utf8) AllocatedPath::FromUTF8(const char *path_utf8)
{ {
#ifdef HAVE_FS_CHARSET #ifdef HAVE_FS_CHARSET
char *path = ::PathFromUTF8(path_utf8); return AllocatedPath(::PathFromUTF8(path_utf8));
if (path == nullptr)
return AllocatedPath::Null();
return AllocatedPath(Donate(), path);
#else #else
return FromFS(path_utf8); return FromFS(path_utf8);
#endif #endif
......
...@@ -44,13 +44,6 @@ class AllocatedPath { ...@@ -44,13 +44,6 @@ class AllocatedPath {
string value; string value;
struct Donate {};
/**
* Donate the allocated pointer to a new #AllocatedPath object.
*/
AllocatedPath(Donate, pointer _value);
AllocatedPath(const_pointer _value):value(_value) {} AllocatedPath(const_pointer _value):value(_value) {}
AllocatedPath(string &&_value):value(std::move(_value)) {} AllocatedPath(string &&_value):value(std::move(_value)) {}
......
...@@ -157,13 +157,13 @@ PathToUTF8(const char *path_fs) ...@@ -157,13 +157,13 @@ PathToUTF8(const char *path_fs)
#ifdef HAVE_FS_CHARSET #ifdef HAVE_FS_CHARSET
char * std::string
PathFromUTF8(const char *path_utf8) PathFromUTF8(const char *path_utf8)
{ {
assert(path_utf8 != nullptr); assert(path_utf8 != nullptr);
if (fs_charset.empty()) if (fs_charset.empty())
return g_strdup(path_utf8); return path_utf8;
return g_convert(path_utf8, -1, return g_convert(path_utf8, -1,
fs_charset.c_str(), "utf-8", fs_charset.c_str(), "utf-8",
......
...@@ -52,8 +52,12 @@ gcc_pure gcc_nonnull_all ...@@ -52,8 +52,12 @@ gcc_pure gcc_nonnull_all
std::string std::string
PathToUTF8(const char *path_fs); 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); PathFromUTF8(const char *path_utf8);
#endif #endif
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment