From 32f94bf258bd032fa6f96fc76e4153086bc001f5 Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Thu, 16 Jun 2011 18:27:57 +0200 Subject: [PATCH] O_CLOEXEC usage * libguile/objcodes.c (scm_load_objcode): * libguile/scmsigs.c (start_signal_delivery_thread): * libguile/threads.c (guilify_self_1): Use O_CLOEXEC. --- libguile/objcodes.c | 2 +- libguile/scmsigs.c | 7 +------ libguile/threads.c | 12 ++---------- 3 files changed, 4 insertions(+), 17 deletions(-) diff --git a/libguile/objcodes.c b/libguile/objcodes.c index c45ca8585..526751acc 100644 --- a/libguile/objcodes.c +++ b/libguile/objcodes.c @@ -295,7 +295,7 @@ SCM_DEFINE (scm_load_objcode, "load-objcode", 1, 0, 0, SCM_VALIDATE_STRING (1, file); c_file = scm_to_locale_string (file); - fd = open (c_file, O_RDONLY); + fd = open (c_file, O_RDONLY | O_CLOEXEC); free (c_file); if (fd < 0) SCM_SYSERROR; diff --git a/libguile/scmsigs.c b/libguile/scmsigs.c index 641d1b3c8..723d6a8c5 100644 --- a/libguile/scmsigs.c +++ b/libguile/scmsigs.c @@ -39,10 +39,6 @@ #include "libguile/validate.h" #include "libguile/scmsigs.h" -#ifdef HAVE_IO_H -#include /* for mingw _pipe() */ -#endif - #ifdef HAVE_PROCESS_H #include /* for mingw */ #endif @@ -61,7 +57,6 @@ /* This weird comma expression is because Sleep is void under Windows. */ #define sleep(sec) (Sleep ((sec) * 1000), 0) #define usleep(usec) (Sleep ((usec) / 1000), 0) -#define pipe(fd) _pipe (fd, 256, O_BINARY) #endif #include @@ -208,7 +203,7 @@ start_signal_delivery_thread (void) scm_i_pthread_mutex_lock (&signal_delivery_thread_mutex); - if (pipe (signal_pipe) != 0) + if (pipe2 (signal_pipe, O_CLOEXEC) != 0) scm_syserror (NULL); signal_thread = scm_spawn_thread (signal_delivery_thread, NULL, scm_handle_by_message, diff --git a/libguile/threads.c b/libguile/threads.c index 97d9f6497..dba5d16f1 100644 --- a/libguile/threads.c +++ b/libguile/threads.c @@ -39,6 +39,7 @@ #endif #include +#include #include #include "libguile/validate.h" @@ -57,15 +58,6 @@ #include "libguile/strings.h" #include "libguile/weaks.h" -#ifdef __MINGW32__ -#ifndef ETIMEDOUT -# define ETIMEDOUT WSAETIMEDOUT -#endif -# include -# include -# define pipe(fd) _pipe (fd, 256, O_BINARY) -#endif /* __MINGW32__ */ - #include @@ -538,7 +530,7 @@ guilify_self_1 (struct GC_stack_base *base) t.sleep_object = SCM_BOOL_F; t.sleep_fd = -1; - if (pipe (t.sleep_pipe) != 0) + if (pipe2 (t.sleep_pipe, O_CLOEXEC) != 0) /* FIXME: Error conditions during the initialization phase are handled gracelessly since public functions such as `scm_init_guile ()' currently have type `void'. */ -- 2.20.1