sbase

suckless unix tools
git clone git://git.2f30.org/sbase
Log | Files | Refs | README | LICENSE

commit 203b52c38a447e6e1cadcab4cd366cd5bd86be94
parent 43057f3a3943853df093124607db5a6903a9814e
Author: sin <sin@2f30.org>
Date:   Tue, 28 Jan 2014 17:10:09 +0000

Use getpriority()/setpriority() instead of deprecated nice()

This is now similar to how renice(1) is implemented.

Diffstat:
Mnice.c | 18++++++++++++------
1 file changed, 12 insertions(+), 6 deletions(-)

diff --git 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