annotate toys/pending/renice.c @ 977:9a96527bea94

Add renice.
author M. Farkas-Dyck <strake888@gmail.com>
date Mon, 29 Jul 2013 21:16:55 -0500
parents
children 6d3c39cb8a9d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
977
9a96527bea94 Add renice.
M. Farkas-Dyck <strake888@gmail.com>
parents:
diff changeset
1 /* renice.c - renice process
9a96527bea94 Add renice.
M. Farkas-Dyck <strake888@gmail.com>
parents:
diff changeset
2 *
9a96527bea94 Add renice.
M. Farkas-Dyck <strake888@gmail.com>
parents:
diff changeset
3 * Copyright 2013 CE Strake <strake888 at gmail.com>
9a96527bea94 Add renice.
M. Farkas-Dyck <strake888@gmail.com>
parents:
diff changeset
4 *
9a96527bea94 Add renice.
M. Farkas-Dyck <strake888@gmail.com>
parents:
diff changeset
5 * See http://pubs.opengroup.org/onlinepubs/9699919799/utilities/
9a96527bea94 Add renice.
M. Farkas-Dyck <strake888@gmail.com>
parents:
diff changeset
6 * See http://refspecs.linuxfoundation.org/LSB_4.1.0/LSB-Core-generic/LSB-Core-generic/cmdbehav.html
9a96527bea94 Add renice.
M. Farkas-Dyck <strake888@gmail.com>
parents:
diff changeset
7
9a96527bea94 Add renice.
M. Farkas-Dyck <strake888@gmail.com>
parents:
diff changeset
8 USE_RENICE(NEWTOY(renice, "gpun#", TOYFLAG_BIN))
9a96527bea94 Add renice.
M. Farkas-Dyck <strake888@gmail.com>
parents:
diff changeset
9
9a96527bea94 Add renice.
M. Farkas-Dyck <strake888@gmail.com>
parents:
diff changeset
10 config RENICE
9a96527bea94 Add renice.
M. Farkas-Dyck <strake888@gmail.com>
parents:
diff changeset
11 bool "renice"
9a96527bea94 Add renice.
M. Farkas-Dyck <strake888@gmail.com>
parents:
diff changeset
12 default n
9a96527bea94 Add renice.
M. Farkas-Dyck <strake888@gmail.com>
parents:
diff changeset
13 help
9a96527bea94 Add renice.
M. Farkas-Dyck <strake888@gmail.com>
parents:
diff changeset
14 usage: renice [-gpu] -n increment ID ...
9a96527bea94 Add renice.
M. Farkas-Dyck <strake888@gmail.com>
parents:
diff changeset
15 */
9a96527bea94 Add renice.
M. Farkas-Dyck <strake888@gmail.com>
parents:
diff changeset
16
9a96527bea94 Add renice.
M. Farkas-Dyck <strake888@gmail.com>
parents:
diff changeset
17 #define FOR_renice
9a96527bea94 Add renice.
M. Farkas-Dyck <strake888@gmail.com>
parents:
diff changeset
18 #include "toys.h"
9a96527bea94 Add renice.
M. Farkas-Dyck <strake888@gmail.com>
parents:
diff changeset
19
9a96527bea94 Add renice.
M. Farkas-Dyck <strake888@gmail.com>
parents:
diff changeset
20 GLOBALS(
9a96527bea94 Add renice.
M. Farkas-Dyck <strake888@gmail.com>
parents:
diff changeset
21 long nArgu;
9a96527bea94 Add renice.
M. Farkas-Dyck <strake888@gmail.com>
parents:
diff changeset
22 )
9a96527bea94 Add renice.
M. Farkas-Dyck <strake888@gmail.com>
parents:
diff changeset
23
9a96527bea94 Add renice.
M. Farkas-Dyck <strake888@gmail.com>
parents:
diff changeset
24 void renice_main (void) {
9a96527bea94 Add renice.
M. Farkas-Dyck <strake888@gmail.com>
parents:
diff changeset
25 int ii;
9a96527bea94 Add renice.
M. Farkas-Dyck <strake888@gmail.com>
parents:
diff changeset
26 int which = toys.optflags & FLAG_g ? PRIO_PGRP :
9a96527bea94 Add renice.
M. Farkas-Dyck <strake888@gmail.com>
parents:
diff changeset
27 toys.optflags & FLAG_u ? PRIO_USER :
9a96527bea94 Add renice.
M. Farkas-Dyck <strake888@gmail.com>
parents:
diff changeset
28 PRIO_PROCESS;
9a96527bea94 Add renice.
M. Farkas-Dyck <strake888@gmail.com>
parents:
diff changeset
29
9a96527bea94 Add renice.
M. Farkas-Dyck <strake888@gmail.com>
parents:
diff changeset
30 if (!(toys.optflags & FLAG_n)) error_exit ("no increment given");
9a96527bea94 Add renice.
M. Farkas-Dyck <strake888@gmail.com>
parents:
diff changeset
31
9a96527bea94 Add renice.
M. Farkas-Dyck <strake888@gmail.com>
parents:
diff changeset
32 for (ii = 0; ii < toys.optc; ii++) {
9a96527bea94 Add renice.
M. Farkas-Dyck <strake888@gmail.com>
parents:
diff changeset
33 id_t id;
9a96527bea94 Add renice.
M. Farkas-Dyck <strake888@gmail.com>
parents:
diff changeset
34
9a96527bea94 Add renice.
M. Farkas-Dyck <strake888@gmail.com>
parents:
diff changeset
35 if (isdigit (toys.optargs[ii][0])) id = strtoul (toys.optargs[ii], 0, 10);
9a96527bea94 Add renice.
M. Farkas-Dyck <strake888@gmail.com>
parents:
diff changeset
36 else if (toys.optflags & FLAG_u) id = getpwnam (toys.optargs[ii]) -> pw_uid;
9a96527bea94 Add renice.
M. Farkas-Dyck <strake888@gmail.com>
parents:
diff changeset
37 else {
9a96527bea94 Add renice.
M. Farkas-Dyck <strake888@gmail.com>
parents:
diff changeset
38 error_msg ("not a number: %s", toys.optargs[ii]);
9a96527bea94 Add renice.
M. Farkas-Dyck <strake888@gmail.com>
parents:
diff changeset
39 toys.exitval = 1;
9a96527bea94 Add renice.
M. Farkas-Dyck <strake888@gmail.com>
parents:
diff changeset
40 continue;
9a96527bea94 Add renice.
M. Farkas-Dyck <strake888@gmail.com>
parents:
diff changeset
41 }
9a96527bea94 Add renice.
M. Farkas-Dyck <strake888@gmail.com>
parents:
diff changeset
42
9a96527bea94 Add renice.
M. Farkas-Dyck <strake888@gmail.com>
parents:
diff changeset
43 if (setpriority (which, id, getpriority (which, id) + TT.nArgu) < 0) {
9a96527bea94 Add renice.
M. Farkas-Dyck <strake888@gmail.com>
parents:
diff changeset
44 error_msg ("failed to setpriority of %d", id);
9a96527bea94 Add renice.
M. Farkas-Dyck <strake888@gmail.com>
parents:
diff changeset
45 toys.exitval = 1;
9a96527bea94 Add renice.
M. Farkas-Dyck <strake888@gmail.com>
parents:
diff changeset
46 }
9a96527bea94 Add renice.
M. Farkas-Dyck <strake888@gmail.com>
parents:
diff changeset
47 }
9a96527bea94 Add renice.
M. Farkas-Dyck <strake888@gmail.com>
parents:
diff changeset
48 }