aboutsummaryrefslogtreecommitdiff
path: root/usr.bin/nice/nice.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr.bin/nice/nice.c')
-rw-r--r--usr.bin/nice/nice.c69
1 files changed, 43 insertions, 26 deletions
diff --git a/usr.bin/nice/nice.c b/usr.bin/nice/nice.c
index 5e3f09f92dd7..1081e6fac5e6 100644
--- a/usr.bin/nice/nice.c
+++ b/usr.bin/nice/nice.c
@@ -38,61 +38,78 @@ char copyright[] =
#endif /* not lint */
#ifndef lint
-static char sccsid[] = "@(#)nice.c 5.4 (Berkeley) 6/1/90";
+/*static char sccsid[] = "from: @(#)nice.c 5.4 (Berkeley) 6/1/90";*/
+static char rcsid[] = "$Id: nice.c,v 1.2 1993/11/23 00:02:23 jtc Exp $";
#endif /* not lint */
#include <sys/time.h>
#include <sys/resource.h>
#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <locale.h>
#include <ctype.h>
+#include <errno.h>
+#include <err.h>
+#include <unistd.h>
#define DEFNICE 10
-/* ARGSUSED */
+static void usage();
+
+int
main(argc, argv)
int argc;
char **argv;
{
- extern int errno;
- int niceness;
- char *strerror();
+ int niceness = DEFNICE;
+ int c;
- niceness = DEFNICE;
- if (argv[1][0] == '-')
- if (isdigit(argv[1][1])) {
- niceness = atoi(argv[1] + 1);
- ++argv;
- }
- else {
- (void)fprintf(stderr, "nice: illegal option -- %c\n",
- argv[1][1]);
+ setlocale(LC_ALL, "");
+
+ /* handle obsolete -number syntax */
+ if (argc > 1 && argv[1][0] == '-' && isdigit(argv[1][1])) {
+ niceness = atoi (argv[1] + 1);
+ argc--; argv++;
+ }
+
+ while ((c = getopt (argc, argv, "n:")) != -1) {
+ switch (c) {
+ case 'n':
+ niceness = atoi (optarg);
+ break;
+
+ case '?':
+ default:
usage();
+ break;
}
+ }
+ argc -= optind; argv += optind;
- if (!argv[1])
+ if (argc == 0)
usage();
errno = 0;
niceness += getpriority(PRIO_PROCESS, 0);
if (errno) {
- (void)fprintf(stderr, "nice: getpriority: %s\n",
- strerror(errno));
- exit(1);
+ err (1, "getpriority");
+ /* NOTREACHED */
}
if (setpriority(PRIO_PROCESS, 0, niceness)) {
- (void)fprintf(stderr,
- "nice: setpriority: %s\n", strerror(errno));
- exit(1);
+ warn ("setpriority");
}
- execvp(argv[1], &argv[1]);
- (void)fprintf(stderr,
- "nice: %s: %s\n", argv[1], strerror(errno));
- exit(1);
+
+ execvp(argv[0], &argv[0]);
+ err ((errno == ENOENT) ? 127 : 126, "%s", argv[0]);
+ /* NOTREACHED */
}
+static void
usage()
{
(void)fprintf(stderr,
- "nice [ -# ] command [ options ] [ operands ]\n");
+ "usage: nice [ -n increment ] utility [ argument ...]\n");
+
exit(1);
}