From 78193c33951cc8730097c763a181c0d168706548 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Thu, 30 Sep 2004 04:05:30 +0000 Subject: [PATCH] Convert filenames to UTF-8 before putting them in GErrors. (#154078, 2004-09-30 Matthias Clasen * glib/gfileutils.c: Convert filenames to UTF-8 before putting them in GErrors. (#154078, Morten Welinder) --- ChangeLog | 5 ++++ ChangeLog.pre-2-10 | 5 ++++ ChangeLog.pre-2-12 | 5 ++++ ChangeLog.pre-2-6 | 5 ++++ ChangeLog.pre-2-8 | 5 ++++ glib/gfileutils.c | 63 +++++++++++++++++++++++++++++++++++++--------- 6 files changed, 76 insertions(+), 12 deletions(-) diff --git a/ChangeLog b/ChangeLog index 2472544eb..6825029dc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2004-09-30 Matthias Clasen + + * glib/gfileutils.c: Convert filenames to UTF-8 before + putting them in GErrors. (#154078, Morten Welinder) + 2004-09-22 Tor Lillqvist * glib/gmessages.c: [Win32] Don't ever open a console diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 2472544eb..6825029dc 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,8 @@ +2004-09-30 Matthias Clasen + + * glib/gfileutils.c: Convert filenames to UTF-8 before + putting them in GErrors. (#154078, Morten Welinder) + 2004-09-22 Tor Lillqvist * glib/gmessages.c: [Win32] Don't ever open a console diff --git a/ChangeLog.pre-2-12 b/ChangeLog.pre-2-12 index 2472544eb..6825029dc 100644 --- a/ChangeLog.pre-2-12 +++ b/ChangeLog.pre-2-12 @@ -1,3 +1,8 @@ +2004-09-30 Matthias Clasen + + * glib/gfileutils.c: Convert filenames to UTF-8 before + putting them in GErrors. (#154078, Morten Welinder) + 2004-09-22 Tor Lillqvist * glib/gmessages.c: [Win32] Don't ever open a console diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index 2472544eb..6825029dc 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,8 @@ +2004-09-30 Matthias Clasen + + * glib/gfileutils.c: Convert filenames to UTF-8 before + putting them in GErrors. (#154078, Morten Welinder) + 2004-09-22 Tor Lillqvist * glib/gmessages.c: [Win32] Don't ever open a console diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 2472544eb..6825029dc 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,8 @@ +2004-09-30 Matthias Clasen + + * glib/gfileutils.c: Convert filenames to UTF-8 before + putting them in GErrors. (#154078, Morten Welinder) + 2004-09-22 Tor Lillqvist * glib/gmessages.c: [Win32] Don't ever open a console diff --git a/glib/gfileutils.c b/glib/gfileutils.c index 05e4f3624..c7844f819 100644 --- a/glib/gfileutils.c +++ b/glib/gfileutils.c @@ -387,22 +387,31 @@ get_contents_stdio (const gchar *filename, if (str == NULL) { + gchar *utf8_filename = g_filename_to_utf8 (filename, -1, + NULL, NULL, NULL); g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_NOMEM, _("Could not allocate %lu bytes to read file \"%s\""), - (gulong) total_allocated, filename); + (gulong) total_allocated, + utf8_filename ? utf8_filename : "???"); + g_free (utf8_filename); + goto error; } } if (ferror (f)) { + gchar *utf8_filename = g_filename_to_utf8 (filename, -1, + NULL, NULL, NULL); g_set_error (error, G_FILE_ERROR, g_file_error_from_errno (errno), _("Error reading file '%s': %s"), - filename, g_strerror (errno)); + utf8_filename ? utf8_filename : "???", + g_strerror (errno)); + g_free (utf8_filename); goto error; } @@ -452,11 +461,15 @@ get_contents_regfile (const gchar *filename, if (buf == NULL) { + gchar *utf8_filename = g_filename_to_utf8 (filename, -1, + NULL, NULL, NULL); g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_NOMEM, _("Could not allocate %lu bytes to read file \"%s\""), - (gulong) alloc_size, filename); + (gulong) alloc_size, + utf8_filename ? utf8_filename : "???"); + g_free (utf8_filename); goto error; } @@ -473,12 +486,15 @@ get_contents_regfile (const gchar *filename, if (errno != EINTR) { g_free (buf); - + gchar *utf8_filename = g_filename_to_utf8 (filename, -1, + NULL, NULL, NULL); g_set_error (error, G_FILE_ERROR, g_file_error_from_errno (errno), _("Failed to read from file '%s': %s"), - filename, g_strerror (errno)); + utf8_filename ? utf8_filename : "???", + g_strerror (errno)); + g_free (utf8_filename); goto error; } @@ -521,11 +537,15 @@ get_contents_posix (const gchar *filename, if (fd < 0) { + gchar *utf8_filename = g_filename_to_utf8 (filename, -1, + NULL, NULL, NULL); g_set_error (error, G_FILE_ERROR, g_file_error_from_errno (errno), _("Failed to open file '%s': %s"), - filename, g_strerror (errno)); + utf8_filename ? utf8_filename : "???", + g_strerror (errno)); + g_free (utf8_filename); return FALSE; } @@ -535,11 +555,15 @@ get_contents_posix (const gchar *filename, { close (fd); + gchar *utf8_filename = g_filename_to_utf8 (filename, -1, + NULL, NULL, NULL); g_set_error (error, G_FILE_ERROR, g_file_error_from_errno (errno), _("Failed to get attributes of file '%s': fstat() failed: %s"), - filename, g_strerror (errno)); + utf8_filename ? utf8_filename : "???", + g_strerror (errno)); + g_free (utf8_filename); return FALSE; } @@ -561,12 +585,17 @@ get_contents_posix (const gchar *filename, if (f == NULL) { + gchar *utf8_filename = g_filename_to_utf8 (filename, -1, + NULL, NULL, NULL); + g_set_error (error, G_FILE_ERROR, g_file_error_from_errno (errno), _("Failed to open file '%s': fdopen() failed: %s"), - filename, g_strerror (errno)); - + utf8_filename ? utf8_filename : "???", + g_strerror (errno)); + g_free (utf8_filename); + return FALSE; } @@ -589,12 +618,17 @@ get_contents_win32 (const gchar *filename, if (f == NULL) { + gchar *utf8_filename = g_filename_to_utf8 (filename, -1, + NULL, NULL, NULL); + g_set_error (error, G_FILE_ERROR, g_file_error_from_errno (errno), _("Failed to open file '%s': %s"), - filename, g_strerror (errno)); - + utf8_filename ? utf8_filename : "???", + g_strerror (errno)); + g_free (utf8_filename); + return FALSE; } @@ -1147,11 +1181,16 @@ g_file_read_link (const gchar *filename, read_size = readlink (filename, buffer, size); if (read_size < 0) { g_free (buffer); + + gchar *utf8_filename = g_filename_to_utf8 (filename, -1, + NULL, NULL, NULL); g_set_error (error, G_FILE_ERROR, g_file_error_from_errno (errno), _("Failed to read the symbolic link '%s': %s"), - filename, g_strerror (errno)); + utf8_filename ? utf8_filename : "???", + g_strerror (errno)); + g_free (utf8_filename); return NULL; }