Chrissie,
there is small typo in comment, but when fixed, it's ACK.

Honza

Christine Caulfield napsal(a):
> This patch replaces the existing freopen method of
> forcing stdin/out/err to /dev/null with the more
> usual system of open/dup2.
> 
> While I don' tlike posting patches I don't understand,
             ^^^ TYPO

> this patch seems to fix a problem where stdout/err get
> assigned to system causing double logging output
> on systemd.
> 
> Signed-off-by: Christine Caulfield <[email protected]>
> ---
>  exec/main.c | 15 ++++++---------
>  1 file changed, 6 insertions(+), 9 deletions(-)
> 
> diff --git a/exec/main.c b/exec/main.c
> index 370dfc8..d8ad94d 100644
> --- a/exec/main.c
> +++ b/exec/main.c
> @@ -398,7 +398,7 @@ static void priv_drop (void)
>  
>  static void corosync_tty_detach (void)
>  {
> -     FILE *r;
> +     int devnull;
>  
>       /*
>        * Disconnect from TTY if this is not a debug run
> @@ -424,16 +424,13 @@ static void corosync_tty_detach (void)
>       /*
>        * Map stdin/out/err to /dev/null.
>        */
> -     r = freopen("/dev/null", "r", stdin);
> -     if (r == NULL) {
> +     devnull = open("/dev/null", O_RDWR);
> +     if (devnull == -1) {
>               corosync_exit_error (COROSYNC_DONE_STD_TO_NULL_REDIR);
>       }
> -     r = freopen("/dev/null", "a", stderr);
> -     if (r == NULL) {
> -             corosync_exit_error (COROSYNC_DONE_STD_TO_NULL_REDIR);
> -     }
> -     r = freopen("/dev/null", "a", stdout);
> -     if (r == NULL) {
> +
> +     if (dup2(devnull, 0) < 0 || dup2(devnull, 1) < 0
> +         || dup2(devnull, 2) < 0) {
>               corosync_exit_error (COROSYNC_DONE_STD_TO_NULL_REDIR);
>       }
>  }
> 

_______________________________________________
discuss mailing list
[email protected]
http://lists.corosync.org/mailman/listinfo/discuss

Reply via email to