hush: initial stab at brace expansion support
[oweals/busybox.git] / miscutils / time.c
index ed438594841c37c54d2c9c9247cfb7d7f05f5d78..42c812a422fc1062fdd72a653c2b0993615ce775 100644 (file)
@@ -89,7 +89,7 @@ static void printargv(char *const *argv)
    This is funky since the pagesize could be less than 1K.
    Note: Some machines express getrusage statistics in terms of K,
    others in terms of pages.  */
-static unsigned long ptok(unsigned pagesize, unsigned long pages)
+static unsigned long ptok(const unsigned pagesize, const unsigned long pages)
 {
        unsigned long tmp;
 
@@ -303,7 +303,7 @@ static void summarize(const char *fmt, char **command, resource_t *resp)
                                printf("%lu", ptok(pagesize, (UL) resp->ru.ru_ixrss) / cpu_ticks);
                                break;
                        case 'Z':       /* Page size.  */
-                               printf("%u", getpagesize());
+                               printf("%u", pagesize);
                                break;
                        case 'c':       /* Involuntary context switches.  */
                                printf("%lu", resp->ru.ru_nivcsw);
@@ -374,13 +374,13 @@ static void run_command(char *const *cmd, resource_t *resp)
        resp->elapsed_ms = monotonic_us() / 1000;
        pid = vfork();          /* Run CMD as child process.  */
        if (pid < 0)
-               bb_error_msg_and_die("cannot fork");
+               bb_perror_msg_and_die("fork");
        if (pid == 0) { /* If child.  */
                /* Don't cast execvp arguments; that causes errors on some systems,
                   versus merely warnings if the cast is left off.  */
                BB_EXECVP(cmd[0], cmd);
                xfunc_error_retval = (errno == ENOENT ? 127 : 126);
-               bb_error_msg_and_die("cannot run %s", cmd[0]);
+               bb_error_msg_and_die("can't run %s", cmd[0]);
        }
 
        /* Have signals kill the child but not self (if possible).  */
@@ -396,12 +396,13 @@ static void run_command(char *const *cmd, resource_t *resp)
 }
 
 int time_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
-int time_main(int argc ATTRIBUTE_UNUSED, char **argv)
+int time_main(int argc UNUSED_PARAM, char **argv)
 {
        resource_t res;
        const char *output_format = default_format;
        int opt;
 
+       opt_complementary = "-1"; /* at least one arg */
        /* "+": stop on first non-option */
        opt = getopt32(argv, "+vp");
        argv += optind;
@@ -424,5 +425,5 @@ int time_main(int argc ATTRIBUTE_UNUSED, char **argv)
                return WTERMSIG(res.waitstatus);
        if (WIFEXITED(res.waitstatus))
                return WEXITSTATUS(res.waitstatus);
-       fflush_stdout_and_exit(0);
+       fflush_stdout_and_exit(EXIT_SUCCESS);
 }