[BusyBox-cvs] svn commit: trunk/busybox: include miscutils

pgf at busybox.net pgf at busybox.net
Mon Aug 1 22:52:11 UTC 2005


Author: pgf
Date: 2005-08-01 16:52:09 -0600 (Mon, 01 Aug 2005)
New Revision: 11015

Log:
commiting:
    0000028 03-16-05 patch: new setsid applet



Added:
   trunk/busybox/miscutils/setsid.c

Modified:
   trunk/busybox/include/applets.h
   trunk/busybox/include/usage.h
   trunk/busybox/miscutils/Config.in
   trunk/busybox/miscutils/Makefile.in


Changeset:
Modified: trunk/busybox/include/applets.h
===================================================================
--- trunk/busybox/include/applets.h	2005-08-01 21:13:40 UTC (rev 11014)
+++ trunk/busybox/include/applets.h	2005-08-01 22:52:09 UTC (rev 11015)
@@ -558,6 +558,9 @@
 #ifdef CONFIG_SETKEYCODES
 	APPLET(setkeycodes, setkeycodes_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
 #endif
+#ifdef CONFIG_SETSID
+	APPLET(setsid, setsid_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
+#endif
 #if defined(CONFIG_FEATURE_SH_IS_ASH) && defined(CONFIG_ASH)
 	APPLET_NOUSAGE("sh", ash_main, _BB_DIR_BIN, _BB_SUID_NEVER)
 #elif defined(CONFIG_FEATURE_SH_IS_HUSH) && defined(CONFIG_HUSH)

Modified: trunk/busybox/include/usage.h
===================================================================
--- trunk/busybox/include/usage.h	2005-08-01 21:13:40 UTC (rev 11014)
+++ trunk/busybox/include/usage.h	2005-08-01 22:52:09 UTC (rev 11015)
@@ -2375,6 +2375,12 @@
 #define setkeycodes_example_usage \
 	"$ setkeycodes e030 127\n"
 
+#define setsid_trivial_usage \
+	"program [arg ...]"
+#define setsid_full_usage \
+	"Runs any program in a new session by calling setsid() before\n" \
+	"exec'ing the rest of its arguments.  See setsid(2) for details."
+
 #define lash_trivial_usage \
 	"[FILE]...\n" \
 	"or: sh -c command [args]..."

Modified: trunk/busybox/miscutils/Config.in
===================================================================
--- trunk/busybox/miscutils/Config.in	2005-08-01 21:13:40 UTC (rev 11014)
+++ trunk/busybox/miscutils/Config.in	2005-08-01 22:52:09 UTC (rev 11015)
@@ -215,6 +215,12 @@
 	  strings prints the printable character sequences for each file
 	  specified.
 
+config CONFIG_SETSID
+	bool "setsid"
+	default n
+	help
+	  setsid runs a program in a new session
+
 config CONFIG_TIME
 	bool "time"
 	default n

Modified: trunk/busybox/miscutils/Makefile.in
===================================================================
--- trunk/busybox/miscutils/Makefile.in	2005-08-01 21:13:40 UTC (rev 11014)
+++ trunk/busybox/miscutils/Makefile.in	2005-08-01 22:52:09 UTC (rev 11015)
@@ -36,6 +36,7 @@
 MISCUTILS-$(CONFIG_MAKEDEVS)    += makedevs.o
 MISCUTILS-$(CONFIG_MT)          += mt.o
 MISCUTILS-$(CONFIG_RX)          += rx.o
+MISCUTILS-$(CONFIG_SETSID)      += setsid.o
 MISCUTILS-$(CONFIG_STRINGS)     += strings.o
 MISCUTILS-$(CONFIG_TIME)        += time.o
 MISCUTILS-$(CONFIG_WATCHDOG)    += watchdog.o

Added: trunk/busybox/miscutils/setsid.c
===================================================================
--- trunk/busybox/miscutils/setsid.c	2005-08-01 21:13:40 UTC (rev 11014)
+++ trunk/busybox/miscutils/setsid.c	2005-08-01 22:52:09 UTC (rev 11015)
@@ -0,0 +1,46 @@
+/*
+ * setsid.c -- execute a command in a new session
+ * Rick Sladkey <jrs at world.std.com>
+ * In the public domain.
+ *
+ * 1999-02-22 Arkadiusz Mi¶kiewicz <misiek at pld.ORG.PL>
+ * - added Native Language Support
+ *
+ * 2001-01-18 John Fremlin <vii at penguinpowered.com>
+ * - fork in case we are process group leader
+ *
+ * 2004-11-12 Paul Fox
+ * - busyboxed
+ */
+
+#include <stdio.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include "busybox.h"
+
+int
+setsid_main(int argc, char *argv[]) {
+	
+	if (argc < 2) {
+		bb_show_usage();
+	}
+
+	if (getpgrp() == getpid()) {
+		switch(fork()){
+		case -1:
+			bb_perror_msg_and_die("fork");
+		case 0:
+			break;
+		default:	/* parent */
+			exit(0);
+		}
+		/* child falls through */
+	}
+
+	setsid();  /* no error possible */
+
+	execvp(argv[1], argv + 1);
+
+	bb_perror_msg_and_die(argv[1]);
+
+}




More information about the busybox-cvs mailing list