From 203b52c38a447e6e1cadcab4cd366cd5bd86be94 Mon Sep 17 00:00:00 2001 From: sin Date: Tue, 28 Jan 2014 17:10:09 +0000 Subject: [PATCH] Use getpriority()/setpriority() instead of deprecated nice() This is now similar to how renice(1) is implemented. --- nice.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/nice.c b/nice.c index 7755b90..0ef6256 100644 --- a/nice.c +++ b/nice.c @@ -3,6 +3,8 @@ #include #include #include +#include +#include #include #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