diff options
Diffstat (limited to 'usr.bin/nice/nice.c')
| -rw-r--r-- | usr.bin/nice/nice.c | 69 | 
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);  } | 
