[gexiv2/wip/59: 1/2] win32: Provide UTF16 filename for exiv2
- From: Jens Georg <jensgeorg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gexiv2/wip/59: 1/2] win32: Provide UTF16 filename for exiv2
- Date: Sat, 14 Nov 2020 16:41:17 +0000 (UTC)
commit 522508e23c65531ad70ecac90e4aaad0547d675a
Author: Jens Georg <mail jensge org>
Date: Sat Nov 14 17:22:41 2020 +0100
win32: Provide UTF16 filename for exiv2
Fixes #59
gexiv2/gexiv2-metadata.cpp | 20 ++++++++++++++++++--
1 file changed, 18 insertions(+), 2 deletions(-)
---
diff --git a/gexiv2/gexiv2-metadata.cpp b/gexiv2/gexiv2-metadata.cpp
index 4d394c0..0b21d64 100644
--- a/gexiv2/gexiv2-metadata.cpp
+++ b/gexiv2/gexiv2-metadata.cpp
@@ -377,9 +377,25 @@ static gboolean gexiv2_metadata_open_internal (GExiv2Metadata* self, GError** er
gboolean gexiv2_metadata_open_path (GExiv2Metadata *self, const gchar *path, GError **error) {
g_return_val_if_fail (GEXIV2_IS_METADATA (self), FALSE);
-
+#ifdef EXV_UNICODE_PATH
+ std::wstring file;
+#else
+ std::string file;
+#endif
try {
- self->priv->image = Exiv2::ImageFactory::open (path);
+#ifdef EXV_UNICODE_PATH
+ wchar_t* wfile{nullptr};
+ wfile = reinterpret_cast<wchar_t*>(g_utf8_to_utf16(path, -1, nullptr, nullptr, error));
+ // Error is set by g_utf8_to_utf16()
+ if (wfile == nullptr) {
+ return FALSE;
+ }
+ file.append(wfile);
+ g_free(wfile);
+#else
+ file = path;
+#endif
+ self->priv->image = Exiv2::ImageFactory::open (file);
return gexiv2_metadata_open_internal (self, error);
} catch (Exiv2::Error &e) {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]