From d0b99e917cb62cffd06ff74c1cb83fae6f618e4a Mon Sep 17 00:00:00 2001 From: Simon McVittie Date: Tue, 12 Jul 2016 21:35:56 +0100 Subject: [PATCH 07/10] dbus-launch: use _dbus_open_standard_fds when closing stderr Signed-off-by: Simon McVittie --- tools/dbus-launch.c | 18 +++--------------- 1 file changed, 3 insertions(+), 15 deletions(-) diff --git a/tools/dbus-launch.c b/tools/dbus-launch.c index 49f3af4..ec88008 100644 --- a/tools/dbus-launch.c +++ b/tools/dbus-launch.c @@ -723,27 +723,15 @@ babysit (int exit_with_session, static void do_close_stderr (void) { - int fd; + const char *err; fflush (stderr); - /* dbus-launch is a Unix-only program, so we can rely on /dev/null being there. - * We're including unistd.h and we're dealing with sh/csh launch sequences... - */ - fd = open ("/dev/null", O_RDWR); - if (fd == -1) - { - fprintf (stderr, "Internal error: cannot open /dev/null: %s", strerror (errno)); - exit (1); - } - - close (2); - if (dup2 (fd, 2) == -1) + if (!_dbus_open_standard_fds (DBUS_OPEN_STDERR_NULL, &err)) { - /* error; we can't report an error anymore... */ + fprintf (stderr, "%s: %s\n", err, strerror (errno)); exit (1); } - close (fd); } static void -- 2.8.1