rerere: don't segfault on failure to open rr-cache
[gitweb.git] / diff-no-index.c
index 0a14268ba952da5ff66be753cc0cc147ba64ee2b..4ebc1dbd87d9b90ad2aaa5c7d4601761e2d1d724 100644 (file)
@@ -38,6 +38,10 @@ static int get_mode(const char *path, int *mode)
 
        if (!path || !strcmp(path, "/dev/null"))
                *mode = 0;
+#ifdef _WIN32
+       else if (!strcasecmp(path, "nul"))
+               *mode = 0;
+#endif
        else if (!strcmp(path, "-"))
                *mode = create_ce_mode(0666);
        else if (lstat(path, &st))
@@ -201,8 +205,6 @@ void diff_no_index(struct rev_info *revs,
                    no_index ? "--no-index" : "[--no-index]");
 
        diff_setup(&revs->diffopt);
-       if (!revs->diffopt.output_format)
-               revs->diffopt.output_format = DIFF_FORMAT_PATCH;
        for (i = 1; i < argc - 2; ) {
                int j;
                if (!strcmp(argv[i], "--no-index"))
@@ -231,7 +233,7 @@ void diff_no_index(struct rev_info *revs,
        if (prefix) {
                int len = strlen(prefix);
 
-               revs->diffopt.paths = xcalloc(2, sizeof(char*));
+               revs->diffopt.paths = xcalloc(2, sizeof(char *));
                for (i = 0; i < 2; i++) {
                        const char *p = argv[argc - 2 + i];
                        /*
@@ -248,6 +250,8 @@ void diff_no_index(struct rev_info *revs,
                revs->diffopt.paths = argv + argc - 2;
        revs->diffopt.nr_paths = 2;
        revs->diffopt.skip_stat_unmatch = 1;
+       if (!revs->diffopt.output_format)
+               revs->diffopt.output_format = DIFF_FORMAT_PATCH;
 
        DIFF_OPT_SET(&revs->diffopt, EXIT_WITH_STATUS);
        DIFF_OPT_SET(&revs->diffopt, NO_INDEX);