+2008-09-30 Behdad Esfahbod <behdad@gnome.org>
+
+ Bug 554092 – glib doesn't return G_FILE_ERROR_NOENT et al on OS X
+
+ * glib/giounix.c (g_io_unix_read), (g_io_unix_write),
+ (g_io_unix_seek), (g_io_unix_close), (g_io_unix_set_flags),
+ (g_io_unix_get_flags), (g_io_channel_new_file):
+ Like mclasen says: "well, thats the way errno works...,
+ save it or loose it". Save errno.
+
2008-09-30 Tor Lillqvist <tml@novell.com>
* Makefile.decl
if (result < 0)
{
+ int err = errno;
*bytes_read = 0;
- switch (errno)
+ switch (err)
{
#ifdef EINTR
case EINTR:
#endif
default:
g_set_error_literal (err, G_IO_CHANNEL_ERROR,
- g_io_channel_error_from_errno (errno),
- g_strerror (errno));
+ g_io_channel_error_from_errno (err),
+ g_strerror (err));
return G_IO_STATUS_ERROR;
}
}
if (result < 0)
{
+ int err = errno;
*bytes_written = 0;
- switch (errno)
+ switch (err)
{
#ifdef EINTR
case EINTR:
#endif
default:
g_set_error_literal (err, G_IO_CHANNEL_ERROR,
- g_io_channel_error_from_errno (errno),
- g_strerror (errno));
+ g_io_channel_error_from_errno (err),
+ g_strerror (err));
return G_IO_STATUS_ERROR;
}
}
if (result < 0)
{
+ int err = errno;
g_set_error_literal (err, G_IO_CHANNEL_ERROR,
- g_io_channel_error_from_errno (errno),
- g_strerror (errno));
+ g_io_channel_error_from_errno (err),
+ g_strerror (err));
return G_IO_STATUS_ERROR;
}
if (close (unix_channel->fd) < 0)
{
+ int err = errno;
g_set_error_literal (err, G_IO_CHANNEL_ERROR,
- g_io_channel_error_from_errno (errno),
- g_strerror (errno));
+ g_io_channel_error_from_errno (err),
+ g_strerror (err));
return G_IO_STATUS_ERROR;
}
if (fcntl (unix_channel->fd, F_SETFL, fcntl_flags) == -1)
{
+ int err = errno;
g_set_error_literal (err, G_IO_CHANNEL_ERROR,
- g_io_channel_error_from_errno (errno),
- g_strerror (errno));
+ g_io_channel_error_from_errno (err),
+ g_strerror (err));
return G_IO_STATUS_ERROR;
}
if (fcntl_flags == -1)
{
+ int err = errno;
g_warning (G_STRLOC "Error while getting flags for FD: %s (%d)\n",
- g_strerror (errno), errno);
+ g_strerror (err), err);
return 0;
}
fid = open (filename, flags, create_mode);
if (fid == -1)
{
+ int err = errno;
g_set_error_literal (error, G_FILE_ERROR,
- g_file_error_from_errno (errno),
- g_strerror (errno));
+ g_file_error_from_errno (err),
+ g_strerror (err));
return (GIOChannel *)NULL;
}
if (fstat (fid, &buffer) == -1) /* In case someone opens a FIFO */
{
+ int err = errno;
close (fid);
g_set_error_literal (error, G_FILE_ERROR,
- g_file_error_from_errno (errno),
- g_strerror (errno));
+ g_file_error_from_errno (err),
+ g_strerror (err));
return (GIOChannel *)NULL;
}