[PATCH 1/2] Use O_CLOEXEC where adequate, simplify its use.
Cristian Rodríguez
crrodriguez at opensuse.org
Mon Nov 5 18:07:46 PST 2012
---
configure.ac | 4 +--
src/libply-splash-core/ply-text-progress-bar.c | 2 +-
src/libply-splash-graphics/ply-image.c | 2 +-
src/libply/ply-event-loop.c | 2 +-
src/libply/ply-key-file.c | 2 +-
src/libply/ply-logger.c | 2 +-
src/libply/ply-progress.c | 4 +++
src/libply/ply-utils.c | 33 +++----------------------
src/plugins/splash/script/script-debug.c | 4 +++
src/plugins/splash/script/script-execute.c | 6 ++++-
src/plugins/splash/script/script-lib-image.c | 6 ++---
src/plugins/splash/script/script-lib-math.c | 5 ++--
src/plugins/splash/script/script-lib-plymouth.c | 6 ++---
src/plugins/splash/script/script-lib-string.c | 6 ++---
src/plugins/splash/script/script-object.c | 6 ++++-
src/plugins/splash/script/script-parse.c | 6 ++++-
src/plugins/splash/script/script-scan.c | 6 ++++-
src/plugins/splash/script/script.c | 6 ++++-
src/ply-boot-server.c | 2 +-
src/viewer/plymouth-log-viewer.c | 4 +++
20 files changed, 60 insertions(+), 54 deletions(-)
diff --git a/configure.ac b/configure.ac
index 2ab0893..c20974e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -6,7 +6,7 @@ AC_CONFIG_AUX_DIR(build-tools)
AC_USE_SYSTEM_EXTENSIONS
AC_SYS_LARGEFILE
AC_PROG_AWK
-AC_PROG_CC
+AC_PROG_CC_STDC
AM_PROG_CC_C_O
AC_HEADER_STDC
AC_C_CONST
@@ -16,7 +16,7 @@ m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
AM_MAINTAINER_MODE([enable])
PKG_PROG_PKG_CONFIG
-LT_INIT
+LT_INIT([dlopen disable-static pic-only])
## increment if the interface has additions, changes, removals.
LT_CURRENT=3
diff --git a/src/libply-splash-core/ply-text-progress-bar.c b/src/libply-splash-core/ply-text-progress-bar.c
index bf4b378..ea92d49 100644
--- a/src/libply-splash-core/ply-text-progress-bar.c
+++ b/src/libply-splash-core/ply-text-progress-bar.c
@@ -104,7 +104,7 @@ get_os_string (void)
buf = NULL;
- fd = open (RELEASE_FILE, O_RDONLY);
+ fd = open (RELEASE_FILE, O_RDONLY|O_CLOEXEC);
if (fd == -1)
goto out;
diff --git a/src/libply-splash-graphics/ply-image.c b/src/libply-splash-graphics/ply-image.c
index 3e09f68..be85809 100644
--- a/src/libply-splash-graphics/ply-image.c
+++ b/src/libply-splash-graphics/ply-image.c
@@ -123,7 +123,7 @@ ply_image_load (ply_image_t *image)
assert (image != NULL);
- fp = fopen (image->filename, "r");
+ fp = fopen (image->filename, "re");
if (fp == NULL)
return false;
diff --git a/src/libply/ply-event-loop.c b/src/libply/ply-event-loop.c
index 3cfad76..4abf25f 100644
--- a/src/libply/ply-event-loop.c
+++ b/src/libply/ply-event-loop.c
@@ -491,7 +491,7 @@ ply_event_loop_new (void)
loop = calloc (1, sizeof (ply_event_loop_t));
- loop->epoll_fd = epoll_create (PLY_EVENT_LOOP_NUM_EVENT_HANDLERS);
+ loop->epoll_fd = epoll_create1(EPOLL_CLOEXEC);
loop->wakeup_time = PLY_EVENT_LOOP_NO_TIMED_WAKEUP;
assert (loop->epoll_fd >= 0);
diff --git a/src/libply/ply-key-file.c b/src/libply/ply-key-file.c
index a3d5a11..72264e1 100644
--- a/src/libply/ply-key-file.c
+++ b/src/libply/ply-key-file.c
@@ -75,7 +75,7 @@ ply_key_file_open_file (ply_key_file_t *key_file)
{
assert (key_file != NULL);
- key_file->fp = fopen (key_file->filename, "r");
+ key_file->fp = fopen (key_file->filename, "re");
if (key_file->fp == NULL)
{
diff --git a/src/libply/ply-logger.c b/src/libply/ply-logger.c
index f51bb84..5ea0b5e 100644
--- a/src/libply/ply-logger.c
+++ b/src/libply/ply-logger.c
@@ -40,7 +40,7 @@
#include "ply-list.h"
#ifndef PLY_LOGGER_OPEN_FLAGS
-#define PLY_LOGGER_OPEN_FLAGS (O_WRONLY | O_TRUNC | O_CREAT | O_NOFOLLOW)
+#define PLY_LOGGER_OPEN_FLAGS (O_WRONLY | O_TRUNC | O_CREAT | O_NOFOLLOW | O_CLOEXEC)
#endif
#ifndef PLY_LOGGER_MAX_INJECTION_SIZE
diff --git a/src/libply/ply-progress.c b/src/libply/ply-progress.c
index 2091a27..cf372cd 100644
--- a/src/libply/ply-progress.c
+++ b/src/libply/ply-progress.c
@@ -22,6 +22,10 @@
* Charlie Brej <cbrej at cs.man.ac.uk>
*/
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
#include <assert.h>
#include <errno.h>
#include <math.h>
diff --git a/src/libply/ply-utils.c b/src/libply/ply-utils.c
index 60d59d1..5a79bb4 100644
--- a/src/libply/ply-utils.c
+++ b/src/libply/ply-utils.c
@@ -87,27 +87,9 @@ ply_open_unidirectional_pipe (int *sender_fd,
assert (sender_fd != NULL);
assert (receiver_fd != NULL);
- if (pipe (pipe_fds) < 0)
+ if (pipe2 (pipe_fds, O_CLOEXEC | O_NONBLOCK) < 0)
return false;
- if (fcntl (pipe_fds[0], F_SETFD, O_NONBLOCK | FD_CLOEXEC) < 0)
- {
- ply_save_errno ();
- close (pipe_fds[0]);
- close (pipe_fds[1]);
- ply_restore_errno ();
- return false;
- }
-
- if (fcntl (pipe_fds[1], F_SETFD, O_NONBLOCK | FD_CLOEXEC) < 0)
- {
- ply_save_errno ();
- close (pipe_fds[0]);
- close (pipe_fds[1]);
- ply_restore_errno ();
- return false;
- }
-
*sender_fd = pipe_fds[1];
*receiver_fd = pipe_fds[0];
@@ -120,20 +102,11 @@ ply_open_unix_socket (void)
int fd;
const int should_pass_credentials = true;
- fd = socket (PF_UNIX, SOCK_STREAM, 0);
+ fd = socket (PF_UNIX, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0);
if (fd < 0)
return -1;
- if (fcntl (fd, F_SETFD, O_NONBLOCK | FD_CLOEXEC) < 0)
- {
- ply_save_errno ();
- close (fd);
- ply_restore_errno ();
-
- return -1;
- }
-
if (setsockopt (fd, SOL_SOCKET, SO_PASSCRED,
&should_pass_credentials, sizeof (should_pass_credentials)) < 0)
{
@@ -971,7 +944,7 @@ ply_get_process_parent_pid (pid_t pid)
asprintf (&path, "/proc/%ld/stat", (long) pid);
ppid = 0;
- fp = fopen (path, "r");
+ fp = fopen (path, "re");
if (fp == NULL)
{
diff --git a/src/plugins/splash/script/script-debug.c b/src/plugins/splash/script/script-debug.c
index 355c2b2..118574b 100644
--- a/src/plugins/splash/script/script-debug.c
+++ b/src/plugins/splash/script/script-debug.c
@@ -19,6 +19,10 @@
*
* Written by: Charlie Brej <cbrej at cs.man.ac.uk>
*/
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
#include "ply-hashtable.h"
#include <stdlib.h>
#include <string.h>
diff --git a/src/plugins/splash/script/script-execute.c b/src/plugins/splash/script/script-execute.c
index 6abd3a6..c06959b 100644
--- a/src/plugins/splash/script/script-execute.c
+++ b/src/plugins/splash/script/script-execute.c
@@ -19,7 +19,11 @@
*
* Written by: Charlie Brej <cbrej at cs.man.ac.uk>
*/
-#define _GNU_SOURCE
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
#include "ply-hashtable.h"
#include "ply-list.h"
#include "ply-logger.h"
diff --git a/src/plugins/splash/script/script-lib-image.c b/src/plugins/splash/script/script-lib-image.c
index 5be27fb..f08be31 100644
--- a/src/plugins/splash/script/script-lib-image.c
+++ b/src/plugins/splash/script/script-lib-image.c
@@ -19,7 +19,9 @@
*
* Written by: Charlie Brej <cbrej at cs.man.ac.uk>
*/
-#define _GNU_SOURCE
+
+#include "config.h"
+
#include "ply-image.h"
#include "ply-label.h"
#include "ply-pixel-buffer.h"
@@ -36,8 +38,6 @@
#include <stdlib.h>
#include <string.h>
-#include "config.h"
-
#include "script-lib-image.script.h"
static void image_free (script_obj_t *obj)
diff --git a/src/plugins/splash/script/script-lib-math.c b/src/plugins/splash/script/script-lib-math.c
index a1afc04..1a07b04 100644
--- a/src/plugins/splash/script/script-lib-math.c
+++ b/src/plugins/splash/script/script-lib-math.c
@@ -19,7 +19,9 @@
*
* Written by: Charlie Brej <cbrej at cs.man.ac.uk>
*/
-#define _GNU_SOURCE
+
+#include "config.h"
+
#include "script.h"
#include "script-parse.h"
#include "script-execute.h"
@@ -31,7 +33,6 @@
#include <string.h>
#include <math.h>
-#include "config.h"
#include "script-lib-math.script.h"
diff --git a/src/plugins/splash/script/script-lib-plymouth.c b/src/plugins/splash/script/script-lib-plymouth.c
index 5c648a6..7f143ae 100644
--- a/src/plugins/splash/script/script-lib-plymouth.c
+++ b/src/plugins/splash/script/script-lib-plymouth.c
@@ -19,7 +19,9 @@
*
* Written by: Charlie Brej <cbrej at cs.man.ac.uk>
*/
-#define _GNU_SOURCE
+
+#include "config.h"
+
#include "ply-boot-splash-plugin.h"
#include "ply-utils.h"
#include "script.h"
@@ -32,8 +34,6 @@
#include <stdlib.h>
#include <string.h>
-#include "config.h"
-
#include "script-lib-plymouth.script.h"
static script_return_t plymouth_set_function (script_state_t *state,
diff --git a/src/plugins/splash/script/script-lib-string.c b/src/plugins/splash/script/script-lib-string.c
index dbd63fe..0b836eb 100644
--- a/src/plugins/splash/script/script-lib-string.c
+++ b/src/plugins/splash/script/script-lib-string.c
@@ -19,7 +19,9 @@
*
* Written by: Charlie Brej <cbrej at cs.man.ac.uk>
*/
-#define _GNU_SOURCE
+
+#include "config.h"
+
#include "script.h"
#include "script-parse.h"
#include "script-execute.h"
@@ -31,8 +33,6 @@
#include <stdlib.h>
#include <string.h>
-#include "config.h"
-
#include "script-lib-string.script.h"
diff --git a/src/plugins/splash/script/script-object.c b/src/plugins/splash/script/script-object.c
index 465fef6..7c16c94 100644
--- a/src/plugins/splash/script/script-object.c
+++ b/src/plugins/splash/script/script-object.c
@@ -19,7 +19,11 @@
*
* Written by: Charlie Brej <cbrej at cs.man.ac.uk>
*/
-#define _GNU_SOURCE
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
#include "ply-hashtable.h"
#include "ply-list.h"
#include "ply-bitarray.h"
diff --git a/src/plugins/splash/script/script-parse.c b/src/plugins/splash/script/script-parse.c
index 10eb667..4adf273 100644
--- a/src/plugins/splash/script/script-parse.c
+++ b/src/plugins/splash/script/script-parse.c
@@ -19,7 +19,11 @@
*
* Written by: Charlie Brej <cbrej at cs.man.ac.uk>
*/
-#define _GNU_SOURCE
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
#include "ply-hashtable.h"
#include "ply-list.h"
#include "ply-bitarray.h"
diff --git a/src/plugins/splash/script/script-scan.c b/src/plugins/splash/script/script-scan.c
index ead752f..3efef48 100644
--- a/src/plugins/splash/script/script-scan.c
+++ b/src/plugins/splash/script/script-scan.c
@@ -19,6 +19,10 @@
*
* Written by: Charlie Brej <cbrej at cs.man.ac.uk>
*/
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
@@ -61,7 +65,7 @@ static script_scan_t *script_scan_new (void)
script_scan_t *script_scan_file (const char *filename)
{
- int fd = open (filename, O_RDONLY);
+ int fd = open (filename, O_RDONLY|O_CLOEXEC);
if (fd < 0) return NULL;
script_scan_t *scan = script_scan_new ();
scan->name = strdup (filename);
diff --git a/src/plugins/splash/script/script.c b/src/plugins/splash/script/script.c
index 635a8b4..3290825 100644
--- a/src/plugins/splash/script/script.c
+++ b/src/plugins/splash/script/script.c
@@ -19,7 +19,11 @@
*
* Written by: Charlie Brej <cbrej at cs.man.ac.uk>
*/
-#define _GNU_SOURCE
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
#include "ply-hashtable.h"
#include "ply-list.h"
#include "ply-bitarray.h"
diff --git a/src/ply-boot-server.c b/src/ply-boot-server.c
index f15ade7..2d2a5b8 100644
--- a/src/ply-boot-server.c
+++ b/src/ply-boot-server.c
@@ -776,7 +776,7 @@ ply_boot_server_on_new_connection (ply_boot_server_t *server)
assert (server != NULL);
- fd = accept (server->socket_fd, NULL, NULL);
+ fd = accept4 (server->socket_fd, NULL, NULL, SOCK_CLOEXEC);
if (fd < 0)
return;
diff --git a/src/viewer/plymouth-log-viewer.c b/src/viewer/plymouth-log-viewer.c
index c20e391..ca54e0f 100644
--- a/src/viewer/plymouth-log-viewer.c
+++ b/src/viewer/plymouth-log-viewer.c
@@ -20,6 +20,10 @@
* Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
*/
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
--
1.8.0
More information about the plymouth
mailing list