Add g_close(), use it

There are two benefits to this:

1) We can centralize any operating system specific knowledge of
   close-vs-EINTR handling.  For example, while on Linux we should never
   retry, if someone cared enough later about HP-UX, they could come by
   and change this one spot.
2) For places that do care about the return value and want to provide
   the caller with a GError, this function makes it convenient to do so.

Note that gspawn.c had an incorrect EINTR loop-retry around close().

https://bugzilla.gnome.org/show_bug.cgi?id=682819
This commit is contained in:
Colin Walters
2013-01-25 12:05:26 -05:00
parent cf68300d27
commit f398bec5bc
15 changed files with 115 additions and 67 deletions

View File

@@ -63,6 +63,7 @@
#include <gvfs.h>
#ifndef G_OS_WIN32
#include "glib-unix.h"
#include "glib-private.h"
#endif
#include "glibintl.h"
@@ -1260,7 +1261,7 @@ get_content_type (const char *basename,
ssize_t res;
res = read (fd, sniff_buffer, sniff_length);
close (fd);
(void) g_close (fd, NULL);
if (res >= 0)
{
g_free (content_type);