]> asedeno.scripts.mit.edu Git - git.git/blobdiff - builtin-mailsplit.c
git-rev-parse --parseopt
[git.git] / builtin-mailsplit.c
index 97ae004ab7939f565733e463a2b53afd63eff9df..74b04706f36128711719fff3e1423b3fb454af4c 100644 (file)
@@ -159,11 +159,12 @@ out:
        return ret;
 }
 
-int split_mbox(const char *file, const char *dir, int allow_bare,
-               int nr_prec, int skip)
+static int split_mbox(const char *file, const char *dir, int allow_bare,
+                     int nr_prec, int skip)
 {
        char name[PATH_MAX];
        int ret = -1;
+       int peek;
 
        FILE *f = !strcmp(file, "-") ? stdin : fopen(file, "r");
        int file_done = 0;
@@ -173,6 +174,11 @@ int split_mbox(const char *file, const char *dir, int allow_bare,
                goto out;
        }
 
+       do {
+               peek = fgetc(f);
+       } while (isspace(peek));
+       ungetc(peek, f);
+
        if (fgets(buf, sizeof(buf), f) == NULL) {
                /* empty stdin is OK */
                if (f != stdin) {
@@ -261,7 +267,8 @@ int cmd_mailsplit(int argc, const char **argv, const char *prefix)
                                error("cannot split patches from stdin");
                                return 1;
                        }
-                       num += ret;
+                       num += (ret - nr);
+                       nr = ret;
                        continue;
                }
 
@@ -279,7 +286,8 @@ int cmd_mailsplit(int argc, const char **argv, const char *prefix)
                        error("cannot split patches from %s", arg);
                        return 1;
                }
-               num += ret;
+               num += (ret - nr);
+               nr = ret;
        }
 
        printf("%d\n", num);