hush: initial stab at brace expansion support
[oweals/busybox.git] / miscutils / time.c
index 104548c2369bc2042239fb248c52f365a9f78a9c..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);
@@ -372,13 +372,15 @@ static void run_command(char *const *cmd, resource_t *resp)
        void (*quit_signal)(int);
 
        resp->elapsed_ms = monotonic_us() / 1000;
-       pid = xvfork();         /* Run CMD as child process.  */
+       pid = vfork();          /* Run CMD as child process.  */
+       if (pid < 0)
+               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).  */
@@ -394,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;