Added 'renice' command, thanks to Dave Cinege <dcinege@psychosis.com>
 -Erik
diff --git a/Changelog b/Changelog
index c91f385..16c2ba1 100644
--- a/Changelog
+++ b/Changelog
@@ -1,5 +1,6 @@
 0.47pre
 
+	* added 'renice' command -- thanks to Dave Cinege <dcinege@psychosis.com>
 	* 'make install' now creates relative symlinks, and added a new
 	    'make install-hardlinks' target to (tada) install hardlinks.
 	* syslogd can now log messages to a remote host -- patch thanks
diff --git a/applets/busybox.c b/applets/busybox.c
index 0c291d0..5b19e8a 100644
--- a/applets/busybox.c
+++ b/applets/busybox.c
@@ -250,6 +250,9 @@
 #ifdef BB_REBOOT
 	{"reboot", reboot_main, _BB_DIR_SBIN, reboot_usage},
 #endif
+#ifdef BB_RENICE
+	{"renice", renice_main, _BB_DIR_USR_BIN},
+#endif
 #ifdef BB_RM
 	{"rm", rm_main, _BB_DIR_BIN, rm_usage},
 #endif
@@ -484,8 +487,9 @@
 #ifdef BB_SH
 	/* Add in a special case hack -- whenever **argv == '-'
 	 * (i.e. '-su' or '-sh') always invoke the shell */
-	if (**argv == '-')
+	if (**argv == '-' && *(*argv+1)!= '-') {
 		exit(((*(shell_main)) (argc, argv)));
+	}
 #endif
 
 	while (a->name != 0) {
diff --git a/applets/usage.c b/applets/usage.c
index 1031f24..3f367f9 100644
--- a/applets/usage.c
+++ b/applets/usage.c
@@ -859,6 +859,18 @@
 	;
 #endif
 
+	
+#if defined BB_RENICE
+const char renice_usage[] =
+	"renice priority pid [pid ...]\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nChanges priority of running processes. Allowed priorities range\n"
+	"from 20 (the process runs only when nothing else is running) to 0\n"
+	"(default priority) to -20 (almost nothing else ever gets to run).\n"
+#endif
+	;
+#endif
+
 #if defined BB_RM
 const char rm_usage[] =
 	"rm [OPTION]... FILE...\n"
diff --git a/busybox.c b/busybox.c
index 0c291d0..5b19e8a 100644
--- a/busybox.c
+++ b/busybox.c
@@ -250,6 +250,9 @@
 #ifdef BB_REBOOT
 	{"reboot", reboot_main, _BB_DIR_SBIN, reboot_usage},
 #endif
+#ifdef BB_RENICE
+	{"renice", renice_main, _BB_DIR_USR_BIN},
+#endif
 #ifdef BB_RM
 	{"rm", rm_main, _BB_DIR_BIN, rm_usage},
 #endif
@@ -484,8 +487,9 @@
 #ifdef BB_SH
 	/* Add in a special case hack -- whenever **argv == '-'
 	 * (i.e. '-su' or '-sh') always invoke the shell */
-	if (**argv == '-')
+	if (**argv == '-' && *(*argv+1)!= '-') {
 		exit(((*(shell_main)) (argc, argv)));
+	}
 #endif
 
 	while (a->name != 0) {
diff --git a/busybox.def.h b/busybox.def.h
index 2c98af4..a9f54ea 100644
--- a/busybox.def.h
+++ b/busybox.def.h
@@ -73,6 +73,7 @@
 #define BB_PS
 #define BB_PWD
 #define BB_REBOOT
+#define BB_RENICE
 #define BB_RM
 #define BB_RMDIR
 #define BB_RMMOD
diff --git a/docs/busybox.pod b/docs/busybox.pod
index 4264f57..d429853 100644
--- a/docs/busybox.pod
+++ b/docs/busybox.pod
@@ -61,7 +61,7 @@
 head, hostid, hostname, id, init, insmod, kill, killall, length, ln,
 loadacm, loadfont, loadkmap, logger, logname, ls, lsmod, makedevs, mkdir,
 mkfifo, mkfs.minix, mknod, mkswap, mktemp, more, mount, mt, mv, nc,
-nslookup, ping, poweroff, printf, ps, pwd, reboot, rm, rmdir, rmmod, sed,
+nslookup, ping, poweroff, printf, ps, pwd, reboot, renice, rm, rmdir, rmmod, sed,
 setkeycodes, sh, sleep, sort, swapoff, swapon, sync, syslogd, tail,
 tar, tee, telnet, test, touch, tr, true, tty, umount, uname, uniq, update,
 uptime, usleep, uudecode, uuencode, wc, which, whoami, yes, zcat, [
@@ -1386,6 +1386,16 @@
 
 -------------------------------
 
+=item renice
+
+Usage: renice priority pid [pid ...]
+
+Changes priority of running processes. Allowed priorities range
+from 20 (the process runs only when nothing else is running) to 0
+(default priority) to -20 (almost nothing else ever gets to run).
+
+-------------------------------
+
 =item rm
 
 Usage: rm [OPTION]... FILE...
@@ -2034,4 +2044,4 @@
 
 =cut
 
-# $Id: busybox.pod,v 1.58 2000/07/21 15:10:57 proski Exp $
+# $Id: busybox.pod,v 1.59 2000/07/21 21:32:12 andersen Exp $
diff --git a/docs/busybox.sgml b/docs/busybox.sgml
index d19ee24..f65abda 100644
--- a/docs/busybox.sgml
+++ b/docs/busybox.sgml
@@ -140,7 +140,7 @@
 		loadacm, loadfont, loadkmap, logger, logname, ls, lsmod,
 		makedevs, mkdir, mkfifo, mkfs.minix, mknod, mkswap, mktemp,
 		more, mount, mt, mv, nc, nslookup, ping, poweroff, printf, ps,
-		pwd, reboot, rm, rmdir, rmmod, sed, setkeycodes, sh, sleep,
+		pwd, reboot, renice, rm, rmdir, rmmod, sed, setkeycodes, sh, sleep,
 		sort, swapoff, swapon, sync, syslogd, tail, tar, tee, telnet,
 		test, touch, tr, true, tty, umount, uname, uniq, update,
 		uptime, usleep, uudecode, uuencode, wc, which, whoami, yes,
@@ -2445,6 +2445,20 @@
 		</para>
 	</sect1>
 
+	<sect1 id="renice">
+	    <title>renice</title>
+
+		<para>
+		Usage: renice priority pid [pid ...]
+		</para>
+
+		<para>
+		Changes priority of running processes. Allowed priorities range
+		from 20 (the process runs only when nothing else is running) to 0
+		(default priority) to -20 (almost nothing else ever gets to run).
+		</para>
+	</sect1>
+
 	<sect1 id="rm">
 	    <title>rm</title>
 
diff --git a/internal.h b/internal.h
index 4800d85..7f0b774 100644
--- a/internal.h
+++ b/internal.h
@@ -177,6 +177,7 @@
 extern int ps_main(int argc, char** argv);
 extern int pwd_main(int argc, char** argv);
 extern int reboot_main(int argc, char** argv);
+extern int renice_main(int argc, char** argv);
 extern int rm_main(int argc, char** argv);
 extern int rmdir_main(int argc, char **argv);
 extern int rmmod_main(int argc, char** argv);
@@ -281,6 +282,7 @@
 extern const char ps_usage[];
 extern const char pwd_usage[];
 extern const char reboot_usage[];
+extern const char renice_usage[];
 extern const char rm_usage[];
 extern const char rmdir_usage[];
 extern const char rmmod_usage[];
diff --git a/procps/renice.c b/procps/renice.c
new file mode 100644
index 0000000..af7ce94
--- /dev/null
+++ b/procps/renice.c
@@ -0,0 +1,53 @@
+/*
+ * Mini renice implementation for busybox
+ *
+ *
+ * Copyright (C) 2000 Dave 'Kill a Cop' Cinege <dcinege@psychosis.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#include "internal.h"
+#include <stdio.h>
+#include <errno.h>
+#include <sys/time.h>
+#include <sys/resource.h>
+
+
+extern int renice_main(int argc, char **argv)
+{
+	int prio, err = 0;
+	
+	if (argc < 3)	usage(renice_usage);
+		
+	prio = atoi(*++argv);
+	if (prio > 20)		prio = 20;
+	if (prio < -20)		prio = -20;
+	
+	while (*++argv) {
+		int ps = atoi(*argv);
+		int oldp = getpriority(PRIO_PROCESS, ps);
+		
+		if (setpriority(PRIO_PROCESS, ps, prio) == 0) {
+			printf("%d: old priority %d, new priority %d\n", ps, oldp, prio );
+		} else {
+			fprintf(stderr, "renice: %d: setpriority: ", ps);
+			perror("");
+			err = 1;
+		}
+	}
+	exit(err);
+}
diff --git a/renice.c b/renice.c
new file mode 100644
index 0000000..af7ce94
--- /dev/null
+++ b/renice.c
@@ -0,0 +1,53 @@
+/*
+ * Mini renice implementation for busybox
+ *
+ *
+ * Copyright (C) 2000 Dave 'Kill a Cop' Cinege <dcinege@psychosis.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#include "internal.h"
+#include <stdio.h>
+#include <errno.h>
+#include <sys/time.h>
+#include <sys/resource.h>
+
+
+extern int renice_main(int argc, char **argv)
+{
+	int prio, err = 0;
+	
+	if (argc < 3)	usage(renice_usage);
+		
+	prio = atoi(*++argv);
+	if (prio > 20)		prio = 20;
+	if (prio < -20)		prio = -20;
+	
+	while (*++argv) {
+		int ps = atoi(*argv);
+		int oldp = getpriority(PRIO_PROCESS, ps);
+		
+		if (setpriority(PRIO_PROCESS, ps, prio) == 0) {
+			printf("%d: old priority %d, new priority %d\n", ps, oldp, prio );
+		} else {
+			fprintf(stderr, "renice: %d: setpriority: ", ps);
+			perror("");
+			err = 1;
+		}
+	}
+	exit(err);
+}
diff --git a/usage.c b/usage.c
index 1031f24..3f367f9 100644
--- a/usage.c
+++ b/usage.c
@@ -859,6 +859,18 @@
 	;
 #endif
 
+	
+#if defined BB_RENICE
+const char renice_usage[] =
+	"renice priority pid [pid ...]\n"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+	"\nChanges priority of running processes. Allowed priorities range\n"
+	"from 20 (the process runs only when nothing else is running) to 0\n"
+	"(default priority) to -20 (almost nothing else ever gets to run).\n"
+#endif
+	;
+#endif
+
 #if defined BB_RM
 const char rm_usage[] =
 	"rm [OPTION]... FILE...\n"