mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-08-01 15:03:39 +02:00
gfileutils: Make -Werror=format-nonliteral happy
I tried to please it by using G_GNUC_FORMAT, but that didn't work, so let's just fall back to pushing an ignore. https://bugzilla.gnome.org/show_bug.cgi?id=702516
This commit is contained in:
@@ -1004,25 +1004,47 @@ rename_file (const char *old_name,
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static char *
|
||||||
|
format_error_message (const gchar *filename,
|
||||||
|
const gchar *format_string) G_GNUC_FORMAT(2);
|
||||||
|
|
||||||
|
static char *
|
||||||
|
format_error_message (const gchar *filename,
|
||||||
|
const gchar *format_string)
|
||||||
|
{
|
||||||
|
gint saved_errno = errno;
|
||||||
|
gchar *display_name;
|
||||||
|
gchar *msg;
|
||||||
|
|
||||||
|
#pragma GCC diagnostic push
|
||||||
|
#pragma GCC diagnostic ignored "-Wformat-nonliteral"
|
||||||
|
|
||||||
|
display_name = g_filename_display_name (filename);
|
||||||
|
msg = g_strdup_printf (format_string, display_name, g_strerror (saved_errno));
|
||||||
|
g_free (display_name);
|
||||||
|
|
||||||
|
#pragma GCC diagnostic pop
|
||||||
|
|
||||||
|
return msg;
|
||||||
|
}
|
||||||
|
|
||||||
/* format string must have two '%s':
|
/* format string must have two '%s':
|
||||||
*
|
*
|
||||||
* - the place for the filename
|
* - the place for the filename
|
||||||
* - the place for the strerror
|
* - the place for the strerror
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
format_error_message (GError **error,
|
set_file_error (GError **error,
|
||||||
const gchar *filename,
|
const gchar *filename,
|
||||||
const gchar *format_string)
|
const gchar *format_string)
|
||||||
|
|
||||||
{
|
{
|
||||||
gint saved_errno = errno;
|
int saved_errno = errno;
|
||||||
gchar *display_name;
|
char *msg = format_error_message (filename, format_string);
|
||||||
|
|
||||||
display_name = g_filename_display_name (filename);
|
g_set_error_literal (error, G_FILE_ERROR, g_file_error_from_errno (saved_errno),
|
||||||
|
msg);
|
||||||
g_set_error (error, G_FILE_ERROR, g_file_error_from_errno (saved_errno),
|
g_free (msg);
|
||||||
format_string, display_name, g_strerror (saved_errno));
|
|
||||||
|
|
||||||
g_free (display_name);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static gchar *
|
static gchar *
|
||||||
@@ -1044,7 +1066,7 @@ write_to_temp_file (const gchar *contents,
|
|||||||
|
|
||||||
if (fd == -1)
|
if (fd == -1)
|
||||||
{
|
{
|
||||||
format_error_message (err, tmp_name, _("Failed to create file '%s': %s"));
|
set_file_error (err, tmp_name, _("Failed to create file '%s': %s"));
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1068,7 +1090,7 @@ write_to_temp_file (const gchar *contents,
|
|||||||
if (errno == EINTR)
|
if (errno == EINTR)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
format_error_message (err, tmp_name, _("Failed to write file '%s': write() failed: %s"));
|
set_file_error (err, tmp_name, _("Failed to write file '%s': write() failed: %s"));
|
||||||
close (fd);
|
close (fd);
|
||||||
g_unlink (tmp_name);
|
g_unlink (tmp_name);
|
||||||
|
|
||||||
@@ -1108,7 +1130,7 @@ write_to_temp_file (const gchar *contents,
|
|||||||
*/
|
*/
|
||||||
if (g_lstat (dest_file, &statbuf) == 0 && statbuf.st_size > 0 && fsync (fd) != 0)
|
if (g_lstat (dest_file, &statbuf) == 0 && statbuf.st_size > 0 && fsync (fd) != 0)
|
||||||
{
|
{
|
||||||
format_error_message (err, tmp_name, _("Failed to write file '%s': fsync() failed: %s"));
|
set_file_error (err, tmp_name, _("Failed to write file '%s': fsync() failed: %s"));
|
||||||
close (fd);
|
close (fd);
|
||||||
g_unlink (tmp_name);
|
g_unlink (tmp_name);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user