mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-09-05 23:48:44 +02:00
Save errno before calling other funcs that potentially alter it. Bug
* gio/gdesktopappinfo.c: (ensure_dir): * gio/glocalfile.c: (g_local_file_query_filesystem_info), (g_local_file_read), (g_local_file_delete), (g_local_file_trash), (g_local_file_move): * gio/glocalfileinfo.c: (set_xattr), (_g_local_file_info_get), (_g_local_file_info_get_from_fd), (set_unix_mode), (set_unix_uid_gid), (set_symlink), (set_mtime_atime): * gio/glocalfileinputstream.c: (g_local_file_input_stream_read), (g_local_file_input_stream_skip), (g_local_file_input_stream_close), (g_local_file_input_stream_seek): * gio/glocalfileoutputstream.c: (g_local_file_output_stream_write), (g_local_file_output_stream_close), (g_local_file_output_stream_seek), (g_local_file_output_stream_truncate), (copy_file_data), (handle_overwrite_open): * gio/gunixinputstream.c: (g_unix_input_stream_read), (g_unix_input_stream_close), (read_async_cb), (close_async_cb): * gio/gunixoutputstream.c: (g_unix_output_stream_write), (g_unix_output_stream_close), (write_async_cb), (close_async_cb): Save errno before calling other funcs that potentially alter it. Bug #514766. svn path=/trunk/; revision=6466
This commit is contained in:
@@ -759,7 +759,7 @@ set_xattr (char *filename,
|
||||
g_set_error (error, G_IO_ERROR,
|
||||
g_io_error_from_errno (errsv),
|
||||
_("Error setting extended attribute '%s': %s"),
|
||||
escaped_attribute, g_strerror (errno));
|
||||
escaped_attribute, g_strerror (errsv));
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@@ -1388,11 +1388,13 @@ _g_local_file_info_get (const char *basename,
|
||||
res = g_lstat (path, &statbuf);
|
||||
if (res == -1)
|
||||
{
|
||||
int errsv = errno;
|
||||
|
||||
g_object_unref (info);
|
||||
g_set_error (error, G_IO_ERROR,
|
||||
g_io_error_from_errno (errno),
|
||||
g_io_error_from_errno (errsv),
|
||||
_("Error stating file '%s': %s"),
|
||||
path, g_strerror (errno));
|
||||
path, g_strerror (errsv));
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@@ -1619,10 +1621,12 @@ _g_local_file_info_get_from_fd (int fd,
|
||||
|
||||
if (fstat (fd, &stat_buf) == -1)
|
||||
{
|
||||
int errsv = errno;
|
||||
|
||||
g_set_error (error, G_IO_ERROR,
|
||||
g_io_error_from_errno (errno),
|
||||
g_io_error_from_errno (errsv),
|
||||
_("Error stating file descriptor: %s"),
|
||||
g_strerror (errno));
|
||||
g_strerror (errsv));
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@@ -1723,10 +1727,12 @@ set_unix_mode (char *filename,
|
||||
|
||||
if (g_chmod (filename, val) == -1)
|
||||
{
|
||||
int errsv = errno;
|
||||
|
||||
g_set_error (error, G_IO_ERROR,
|
||||
g_io_error_from_errno (errno),
|
||||
g_io_error_from_errno (errsv),
|
||||
_("Error setting permissions: %s"),
|
||||
g_strerror (errno));
|
||||
g_strerror (errsv));
|
||||
return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
@@ -1772,10 +1778,12 @@ set_unix_uid_gid (char *filename,
|
||||
|
||||
if (res == -1)
|
||||
{
|
||||
int errsv = errno;
|
||||
|
||||
g_set_error (error, G_IO_ERROR,
|
||||
g_io_error_from_errno (errno),
|
||||
g_io_error_from_errno (errsv),
|
||||
_("Error setting owner: %s"),
|
||||
g_strerror (errno));
|
||||
g_strerror (errsv));
|
||||
return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
@@ -1803,10 +1811,12 @@ set_symlink (char *filename,
|
||||
|
||||
if (g_lstat (filename, &statbuf))
|
||||
{
|
||||
int errsv = errno;
|
||||
|
||||
g_set_error (error, G_IO_ERROR,
|
||||
g_io_error_from_errno (errno),
|
||||
g_io_error_from_errno (errsv),
|
||||
_("Error setting symlink: %s"),
|
||||
g_strerror (errno));
|
||||
g_strerror (errsv));
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@@ -1820,19 +1830,23 @@ set_symlink (char *filename,
|
||||
|
||||
if (g_unlink (filename))
|
||||
{
|
||||
int errsv = errno;
|
||||
|
||||
g_set_error (error, G_IO_ERROR,
|
||||
g_io_error_from_errno (errno),
|
||||
g_io_error_from_errno (errsv),
|
||||
_("Error setting symlink: %s"),
|
||||
g_strerror (errno));
|
||||
g_strerror (errsv));
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (symlink (filename, val) != 0)
|
||||
{
|
||||
int errsv = errno;
|
||||
|
||||
g_set_error (error, G_IO_ERROR,
|
||||
g_io_error_from_errno (errno),
|
||||
g_io_error_from_errno (errsv),
|
||||
_("Error setting symlink: %s"),
|
||||
g_strerror (errno));
|
||||
g_strerror (errsv));
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@@ -1932,10 +1946,12 @@ set_mtime_atime (char *filename,
|
||||
res = utimes (filename, times);
|
||||
if (res == -1)
|
||||
{
|
||||
int errsv = errno;
|
||||
|
||||
g_set_error (error, G_IO_ERROR,
|
||||
g_io_error_from_errno (errno),
|
||||
g_io_error_from_errno (errsv),
|
||||
_("Error setting owner: %s"),
|
||||
g_strerror (errno));
|
||||
g_strerror (errsv));
|
||||
return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
|
Reference in New Issue
Block a user