* following IDs (if any). Multiple switches are allowed.
*/
-#include "busybox.h"
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <limits.h>
-#include <errno.h>
-#include <unistd.h>
+#include "libbb.h"
#include <sys/resource.h>
-#if (PRIO_PROCESS < CHAR_MIN) || (PRIO_PROCESS > CHAR_MAX)
-#error Assumption violated : PRIO_PROCESS value
-#endif
-#if (PRIO_PGRP < CHAR_MIN) || (PRIO_PGRP > CHAR_MAX)
-#error Assumption violated : PRIO_PGRP value
-#endif
-#if (PRIO_USER < CHAR_MIN) || (PRIO_USER > CHAR_MAX)
-#error Assumption violated : PRIO_USER value
-#endif
-
-int renice_main(int argc, char **argv)
+void BUG_bad_PRIO_PROCESS(void);
+void BUG_bad_PRIO_PGRP(void);
+void BUG_bad_PRIO_USER(void);
+
+int renice_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
+int renice_main(int argc UNUSED_PARAM, char **argv)
{
- static const char Xetpriority_msg[] = "%cetpriority";
+ static const char Xetpriority_msg[] ALIGN1 = "%cetpriority";
int retval = EXIT_SUCCESS;
int which = PRIO_PROCESS; /* Default 'which' value. */
unsigned who;
char *arg;
+ /* Yes, they are not #defines in glibc 2.4! #if won't work */
+ if (PRIO_PROCESS < CHAR_MIN || PRIO_PROCESS > CHAR_MAX)
+ BUG_bad_PRIO_PROCESS();
+ if (PRIO_PGRP < CHAR_MIN || PRIO_PGRP > CHAR_MAX)
+ BUG_bad_PRIO_PGRP();
+ if (PRIO_USER < CHAR_MIN || PRIO_USER > CHAR_MAX)
+ BUG_bad_PRIO_USER();
+
arg = *++argv;
/* Check if we are using a relative adjustment. */
while ((arg = *++argv) != NULL) {
/* Check for a mode switch. */
if (arg[0] == '-' && arg[1]) {
- static const char opts[]
- = { 'p', 'g', 'u', 0, PRIO_PROCESS, PRIO_PGRP, PRIO_USER };
+ static const char opts[] ALIGN1 = {
+ 'p', 'g', 'u', 0, PRIO_PROCESS, PRIO_PGRP, PRIO_USER
+ };
const char *p = strchr(opts, arg[1]);
if (p) {
which = p[4];
struct passwd *p;
p = getpwnam(arg);
if (!p) {
- bb_error_msg("unknown user: %s", arg);
+ bb_error_msg("unknown user %s", arg);
goto HAD_ERROR;
}
who = p->pw_uid;
} else {
- if (safe_strtou(arg, &who)) {
+ who = bb_strtou(arg, NULL, 10);
+ if (errno) {
bb_error_msg("bad value: %s", arg);
goto HAD_ERROR;
}