commit 203b52c38a447e6e1cadcab4cd366cd5bd86be94
Author: sin <[email protected]>
Date: Tue Jan 28 17:10:09 2014 +0000
Use getpriority()/setpriority() instead of deprecated nice()
This is now similar to how renice(1) is implemented.
diff --git a/nice.c b/nice.c
index 7755b90..0ef6256 100644
--- a/nice.c
+++ b/nice.c
@@ -3,6 +3,8 @@
#include <limits.h>
#include <stdio.h>
#include <stdlib.h>
+#include <sys/resource.h>
+#include <sys/time.h>
#include <unistd.h>
#include "util.h"
@@ -12,6 +14,7 @@ int
main(int argc, char **argv)
{
long val = 10;
+ int savederrno;
ARGBEGIN {
case 'n':
@@ -26,15 +29,18 @@ main(int argc, char **argv)
usage();
errno = 0;
- nice((int)MAX(INT_MIN, MIN(val, INT_MAX)));
- if(errno != 0)
- perror("can't adjust niceness");
+ val += getpriority(PRIO_PROCESS, 0);
+ if (errno != 0)
+ weprintf("getpriority:");
+ val = MAX(PRIO_MIN, MIN(val, PRIO_MAX));
+ if (setpriority(PRIO_PROCESS, 0, val) != 0)
+ weprintf("setpriority:");
/* POSIX specifies the nice failure still invokes the command */
execvp(argv[0], argv);
- /* reached only on failure */
- perror(argv[0]);
- return (errno == ENOENT)? 127 : 126;
+ savederrno = errno;
+ weprintf("execvp %s:", argv[0]);
+ return (savederrno == ENOENT)? 127 : 126;
}
static void