This is a good one. $ renice -n -1 -p 1 ; echo $? renice: setpriority: 1: Operation not permitted 1 $ renice -n -1 -p 1 1 ; echo $? renice: setpriority: 1: Operation not permitted renice: setpriority: 1: Operation not permitted 2 $ renice -n -1 -p 1 1 1 ; echo $? renice: setpriority: 1: Operation not permitted renice: setpriority: 1: Operation not permitted renice: setpriority: 1: Operation not permitted 3 $ renice -n -1 -p $(jot -b 1 256) 2>/dev/null; echo $? 0
Fix is to just set error instead of incrementing it. ok? Index: renice.c =================================================================== RCS file: /cvs/src/usr.bin/renice/renice.c,v retrieving revision 1.21 diff -u -p -r1.21 renice.c --- renice.c 25 Jan 2019 00:19:26 -0000 1.21 +++ renice.c 11 Aug 2022 22:49:23 -0000 @@ -155,14 +155,14 @@ main(int argc, char **argv) static int renice(struct renice_param *p, struct renice_param *end) { - int new, old, errors = 0; + int new, old, error = 0; for (; p < end; p++) { errno = 0; old = getpriority(p->id_type, p->id); if (errno) { warn("getpriority: %d", p->id); - errors++; + error = 1; continue; } if (p->pri_type == RENICE_INCREMENT) @@ -171,13 +171,13 @@ renice(struct renice_param *p, struct re p->pri < PRIO_MIN ? PRIO_MIN : p->pri; if (setpriority(p->id_type, p->id, new) == -1) { warn("setpriority: %d", p->id); - errors++; + error = 1; continue; } printf("%d: old priority %d, new priority %d\n", p->id, old, new); } - return (errors); + return error; } __dead void