fixup style
[platform/upstream/busybox.git] / miscutils / setsid.c
1 /*
2  * setsid.c -- execute a command in a new session
3  * Rick Sladkey <jrs@world.std.com>
4  * In the public domain.
5  *
6  * 1999-02-22 Arkadiusz Mi¶kiewicz <misiek@pld.ORG.PL>
7  * - added Native Language Support
8  *
9  * 2001-01-18 John Fremlin <vii@penguinpowered.com>
10  * - fork in case we are process group leader
11  *
12  * 2004-11-12 Paul Fox
13  * - busyboxed
14  */
15
16 #include <stdio.h>
17 #include <unistd.h>
18 #include <stdlib.h>
19 #include "busybox.h"
20
21 int setsid_main(int argc, char *argv[])
22 {
23         if (argc < 2)
24                 bb_show_usage();
25
26         if (getpgrp() == getpid()) {
27                 switch(fork()){
28                 case -1:
29                         bb_perror_msg_and_die("fork");
30                 case 0:
31                         break;
32                 default:        /* parent */
33                         exit(0);
34                 }
35                 /* child falls through */
36         }
37
38         setsid();  /* no error possible */
39
40         execvp(argv[1], argv + 1);
41
42         bb_perror_msg_and_die("%s", argv[1]);
43 }