aboutsummaryrefslogtreecommitdiff
path: root/libsylph
diff options
context:
space:
mode:
authorhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2006-12-25 08:12:22 +0000
committerhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2006-12-25 08:12:22 +0000
commiteeb4859e9b0621f390bc42389091d1dbef4bc3cc (patch)
treebeae1260cbcdc7d1ab77d98e4177aa0a0f6bd64a /libsylph
parent4eadc36300cb4566f731ea71372f2edb9e0c6849 (diff)
change_file_mode_rw(): win32: use widechar API.
git-svn-id: svn://sylpheed.sraoss.jp/sylpheed/trunk@1459 ee746299-78ed-0310-b773-934348b2243d
Diffstat (limited to 'libsylph')
-rw-r--r--libsylph/utils.c29
1 files changed, 26 insertions, 3 deletions
diff --git a/libsylph/utils.c b/libsylph/utils.c
index 803892c5..663d121f 100644
--- a/libsylph/utils.c
+++ b/libsylph/utils.c
@@ -3156,9 +3156,32 @@ gint change_file_mode_rw(FILE *fp, const gchar *file)
DWORD attr;
BOOL retval;
- attr = GetFileAttributes(file);
- retval = SetFileAttributes
- (file, attr & ~(FILE_ATTRIBUTE_READONLY|FILE_ATTRIBUTE_HIDDEN));
+ if (G_WIN32_HAVE_WIDECHAR_API()) {
+ wchar_t *wpath;
+
+ wpath = g_utf8_to_utf16(file, -1, NULL, NULL, NULL);
+ if (wpath == NULL)
+ return -1;
+
+ attr = GetFileAttributesW(wpath);
+ retval = SetFileAttributesW
+ (wpath, attr & ~(FILE_ATTRIBUTE_READONLY|FILE_ATTRIBUTE_HIDDEN));
+
+ g_free(wpath);
+ } else {
+ gchar *cp_path;
+
+ cp_path = g_locale_from_utf8(file, -1, NULL, NULL, NULL);
+ if (cp_path == NULL)
+ return -1;
+
+ attr = GetFileAttributesA(cp_path);
+ retval = SetFileAttributesA
+ (cp_path, attr & ~(FILE_ATTRIBUTE_READONLY|FILE_ATTRIBUTE_HIDDEN));
+
+ g_free(cp_path);
+ }
+
if (retval)
return 0;
else