[PATCH] Random documentation fixes
[git.git] / diff.c
diff --git a/diff.c b/diff.c
index cafc755..7d06b03 100644 (file)
--- a/diff.c
+++ b/diff.c
@@ -10,7 +10,6 @@
 #include "diffcore.h"
 
 static const char *diff_opts = "-pu";
-static unsigned char null_sha1[20] = { 0, };
 
 static int use_size_cache;
 
@@ -414,7 +413,7 @@ void diff_free_filespec_data(struct diff_filespec *s)
 static void prep_temp_blob(struct diff_tempfile *temp,
                           void *blob,
                           unsigned long size,
-                          unsigned char *sha1,
+                          const unsigned char *sha1,
                           int mode)
 {
        int fd;
@@ -709,6 +708,8 @@ int diff_opt_parse(struct diff_options *options, const char **av, int ac)
                options->rename_limit = strtoul(arg+2, NULL, 10);
        else if (!strcmp(arg, "--name-only"))
                options->output_format = DIFF_FORMAT_NAME;
+       else if (!strcmp(arg, "--name-status"))
+               options->output_format = DIFF_FORMAT_NAME_STATUS;
        else if (!strcmp(arg, "-R"))
                options->reverse_diff = 1;
        else if (!strncmp(arg, "-S", 2))
@@ -835,7 +836,8 @@ void diff_free_filepair(struct diff_filepair *p)
 
 static void diff_flush_raw(struct diff_filepair *p,
                           int line_termination,
-                          int inter_name_termination)
+                          int inter_name_termination,
+                          int output_format)
 {
        int two_paths;
        char status[10];
@@ -871,13 +873,12 @@ static void diff_flush_raw(struct diff_filepair *p,
                two_paths = 0;
                break;
        }
-       printf(":%06o %06o %s ",
-              p->one->mode, p->two->mode, sha1_to_hex(p->one->sha1));
-       printf("%s %s%c%s",
-              sha1_to_hex(p->two->sha1),
-              status,
-              inter_name_termination,
-              p->one->path);
+       if (output_format != DIFF_FORMAT_NAME_STATUS) {
+               printf(":%06o %06o %s ",
+                      p->one->mode, p->two->mode, sha1_to_hex(p->one->sha1));
+               printf("%s ", sha1_to_hex(p->two->sha1));
+       }
+       printf("%s%c%s",status, inter_name_termination, p->one->path);
        if (two_paths)
                printf("%c%s", inter_name_termination, p->two->path);
        putchar(line_termination);
@@ -1067,8 +1068,10 @@ void diff_flush(struct diff_options *options)
                        diff_flush_patch(p);
                        break;
                case DIFF_FORMAT_RAW:
+               case DIFF_FORMAT_NAME_STATUS:
                        diff_flush_raw(p, line_termination,
-                                      inter_name_termination);
+                                      inter_name_termination,
+                                      diff_output_format);
                        break;
                case DIFF_FORMAT_NAME:
                        diff_flush_name(p, line_termination);