fflush(stderr);
                        }
 
+                       new_argv = realloc(new_argv, sizeof(char*) *
+                                          (count + *argcp + 1));
                        /* insert after command name */
-                       if (*argcp > 1) {
-                               new_argv = realloc(new_argv, sizeof(char*) *
-                                                  (count + *argcp));
-                               memcpy(new_argv + count, *argv + 1,
-                                      sizeof(char*) * *argcp);
-                       }
+                       memcpy(new_argv + count, *argv + 1,
+                              sizeof(char*) * *argcp);
+                       new_argv[count+*argcp] = NULL;
 
                        *argv = new_argv;
                        *argcp += count - 1;
                { "stripspace", cmd_stripspace },
                { "update-index", cmd_update_index },
                { "update-ref", cmd_update_ref },
-               { "fmt-merge-msg", cmd_fmt_merge_msg }
+               { "fmt-merge-msg", cmd_fmt_merge_msg },
+               { "prune", cmd_prune },
        };
        int i;
 
                cmd = *++argv;
                argc--;
 
+               if (!strcmp(cmd, "-p") || !strcmp(cmd, "--paginate")) {
+                       setup_pager();
+                       continue;
+               }
+
                if (strncmp(cmd, "--", 2))
                        break;