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 @@
#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
......
......@@ -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)) {}
......
......@@ -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",
......
......@@ -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
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