mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-09-27 17:52:58 +02:00
glocalfileoutputstream: Add a missing O_CLOEXEC flag to replace()
Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
(cherry picked from commit 6c6439261b
)
This commit is contained in:
committed by
Simon McVittie
parent
4e64a27f4f
commit
7bfe2dcebe
@@ -56,6 +56,12 @@
|
|||||||
#define O_BINARY 0
|
#define O_BINARY 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef O_CLOEXEC
|
||||||
|
#define O_CLOEXEC 0
|
||||||
|
#else
|
||||||
|
#define HAVE_O_CLOEXEC 1
|
||||||
|
#endif
|
||||||
|
|
||||||
struct _GLocalFileOutputStreamPrivate {
|
struct _GLocalFileOutputStreamPrivate {
|
||||||
char *tmp_filename;
|
char *tmp_filename;
|
||||||
char *original_filename;
|
char *original_filename;
|
||||||
@@ -1123,7 +1129,7 @@ _g_local_file_output_stream_replace (const char *filename,
|
|||||||
sync_on_close = FALSE;
|
sync_on_close = FALSE;
|
||||||
|
|
||||||
/* If the file doesn't exist, create it */
|
/* If the file doesn't exist, create it */
|
||||||
open_flags = O_CREAT | O_EXCL | O_BINARY;
|
open_flags = O_CREAT | O_EXCL | O_BINARY | O_CLOEXEC;
|
||||||
if (readable)
|
if (readable)
|
||||||
open_flags |= O_RDWR;
|
open_flags |= O_RDWR;
|
||||||
else
|
else
|
||||||
@@ -1153,8 +1159,11 @@ _g_local_file_output_stream_replace (const char *filename,
|
|||||||
set_error_from_open_errno (filename, error);
|
set_error_from_open_errno (filename, error);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
#if !defined(HAVE_O_CLOEXEC) && defined(F_SETFD)
|
||||||
|
else
|
||||||
|
fcntl (fd, F_SETFD, FD_CLOEXEC);
|
||||||
|
#endif
|
||||||
|
|
||||||
stream = g_object_new (G_TYPE_LOCAL_FILE_OUTPUT_STREAM, NULL);
|
stream = g_object_new (G_TYPE_LOCAL_FILE_OUTPUT_STREAM, NULL);
|
||||||
stream->priv->fd = fd;
|
stream->priv->fd = fd;
|
||||||
stream->priv->sync_on_close = sync_on_close;
|
stream->priv->sync_on_close = sync_on_close;
|
||||||
|
Reference in New Issue
Block a user