use bb_strtou() in umask/wait and check errno to see if there was a problem rather...
authorMike Frysinger <vapier@gentoo.org>
Sun, 29 Mar 2009 00:50:30 +0000 (00:50 -0000)
committerMike Frysinger <vapier@gentoo.org>
Sun, 29 Mar 2009 00:50:30 +0000 (00:50 -0000)
shell/hush.c

index 9f0e7f809cf4ef802b4a9514e2d511b36e513b21..5203f2eefcd2214b70959f47fd889cfbce336379 100644 (file)
@@ -4892,12 +4892,10 @@ static int builtin_umask(char **argv)
 {
        mode_t new_umask;
        const char *arg = argv[1];
-       char *end;
        if (arg) {
-               new_umask = strtoul(arg, &end, 8);
-               if (*end != '\0' || end == arg) {
+               new_umask = bb_strtou(arg, NULL, 8);
+               if (errno)
                        return EXIT_FAILURE;
-               }
        } else {
                new_umask = umask(0);
                printf("%.3o\n", (unsigned) new_umask);
@@ -4924,9 +4922,8 @@ static int builtin_wait(char **argv)
                wait(&status);
 
        while (argv[1]) {
-               char *endp;
-               pid_t pid = bb_strtou(argv[1], &endp, 10);
-               if (*endp) {
+               pid_t pid = bb_strtou(argv[1], NULL, 10);
+               if (errno) {
                        bb_perror_msg("wait %s", argv[1]);
                        return EXIT_FAILURE;
                } else if (waitpid(pid, &status, 0) == pid) {