diff options
| author | proff <proff@NetBSD.org> | 1999-09-03 13:31:29 +0000 |
|---|---|---|
| committer | proff <proff@NetBSD.org> | 1999-09-03 13:31:29 +0000 |
| commit | 50aa8b2b939d6dbc91c12c41d2801f840994e5f2 (patch) | |
| tree | c162f4d348c64cdde6a85a563d308ec56b4b29b1 /sbin/slattach | |
| parent | 143f897d3da477b582021186d98e2116b70ce5f8 (diff) | |
use daemon(3) instead of vanilla fork()
use err(3) instead of perror..exit
add new flag: -n don't detach from tty
Diffstat (limited to 'sbin/slattach')
| -rw-r--r-- | sbin/slattach/slattach.c | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/sbin/slattach/slattach.c b/sbin/slattach/slattach.c index 667fdc27563..dacd0ccb6d8 100644 --- a/sbin/slattach/slattach.c +++ b/sbin/slattach/slattach.c @@ -1,4 +1,4 @@ -/* $NetBSD: slattach.c,v 1.21 1998/03/23 04:41:16 fair Exp $ */ +/* $NetBSD: slattach.c,v 1.22 1999/09/03 13:31:29 proff Exp $ */ /* * Copyright (c) 1988, 1993 @@ -46,7 +46,7 @@ __COPYRIGHT("@(#) Copyright (c) 1988, 1993\n\ #if 0 static char sccsid[] = "@(#)slattach.c 8.2 (Berkeley) 1/7/94"; #else -__RCSID("$NetBSD: slattach.c,v 1.21 1998/03/23 04:41:16 fair Exp $"); +__RCSID("$NetBSD: slattach.c,v 1.22 1999/09/03 13:31:29 proff Exp $"); #endif #endif /* not lint */ @@ -90,8 +90,9 @@ main(argc, argv) tcflag_t cflag = HUPCL; int ch; sigset_t sigset; + int opt_detach = 1; - while ((ch = getopt(argc, argv, "hHlms:t:")) != -1) { + while ((ch = getopt(argc, argv, "hHlmns:t:")) != -1) { switch (ch) { case 'h': cflag |= CRTSCTS; @@ -105,6 +106,9 @@ main(argc, argv) case 'm': cflag &= ~HUPCL; break; + case 'n': + opt_detach = 0; + break; case 's': speed = atoi(optarg); break; @@ -128,10 +132,8 @@ main(argc, argv) "%s%s", _PATH_DEV, dev); dev = devicename; } - if ((fd = open(dev, O_RDWR | O_NDELAY)) < 0) { - perror(dev); - exit(1); - } + if ((fd = open(dev, O_RDWR | O_NDELAY)) < 0) + err(1, "%s", dev); tty.c_cflag = CREAD | CS8 | cflag; tty.c_iflag = 0; tty.c_lflag = 0; @@ -145,9 +147,8 @@ main(argc, argv) err(1, "TIOCSDTR"); if (ioctl(fd, TIOCSETD, &slipdisc) < 0) err(1, "TIOCSETD"); - - if (fork() > 0) - exit(0); + if (opt_detach && daemon(0, 0) != 0) + err(1, "couldn't detach"); sigemptyset(&sigset); for (;;) sigsuspend(&sigset); |
