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

Reply via email to