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.c25 Jan 2019 00:19:26 - 1.21
+++ renice.c11 Aug 2022 22:49:23 -
@@ -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