return G_FILE_OUTPUT_STREAM (stream);
}
+static void
+set_error_from_open_errno (const char *filename,
+ GError **error)
+{
+ int errsv = errno;
+
+ if (errsv == EINVAL)
+ /* This must be an invalid filename, on e.g. FAT */
+ g_set_error_literal (error, G_IO_ERROR,
+ G_IO_ERROR_INVALID_FILENAME,
+ _("Invalid filename"));
+ else
+ {
+ char *display_name = g_filename_display_name (filename);
+ g_set_error (error, G_IO_ERROR,
+ g_io_error_from_errno (errsv),
+ _("Error opening file '%s': %s"),
+ display_name, g_strerror (errsv));
+ g_free (display_name);
+ }
+}
+
static GFileOutputStream *
output_stream_open (const char *filename,
gint open_flags,
fd = g_open (filename, open_flags, mode);
if (fd == -1)
{
- int errsv = errno;
-
- if (errsv == EINVAL)
- /* This must be an invalid filename, on e.g. FAT */
- g_set_error_literal (error, G_IO_ERROR,
- G_IO_ERROR_INVALID_FILENAME,
- _("Invalid filename"));
- else
- {
- char *display_name = g_filename_display_name (filename);
- g_set_error (error, G_IO_ERROR,
- g_io_error_from_errno (errsv),
- _("Error opening file '%s': %s"),
- display_name, g_strerror (errsv));
- g_free (display_name);
- }
+ set_error_from_open_errno (filename, error);
return NULL;
}
}
else if (fd == -1)
{
- int errsv = errno;
-
- if (errsv == EINVAL)
- /* This must be an invalid filename, on e.g. FAT */
- g_set_error_literal (error, G_IO_ERROR,
- G_IO_ERROR_INVALID_FILENAME,
- _("Invalid filename"));
- else
- {
- char *display_name = g_filename_display_name (filename);
- g_set_error (error, G_IO_ERROR,
- g_io_error_from_errno (errsv),
- _("Error opening file '%s': %s"),
- display_name, g_strerror (errsv));
- g_free (display_name);
- }
+ set_error_from_open_errno (filename, error);
return NULL;
}