static void show_raw_diff(struct combine_diff_path *p, int num_parent, struct rev_info *rev)
  {
        struct diff_options *opt = &rev->diffopt;
 -      int i, offset;
 -      const char *prefix;
 -      int line_termination, inter_name_termination;
 +      int line_termination, inter_name_termination, i;
+       const char *line_prefix = diff_line_prefix(opt);
  
        line_termination = opt->line_termination;
        inter_name_termination = '\t';
        if (rev->loginfo && !rev->no_commit_id)
                show_log(rev);
  
++
        if (opt->output_format & DIFF_FORMAT_RAW) {
 -              offset = strlen(COLONS) - num_parent;
 -              if (offset < 0)
 -                      offset = 0;
 -              prefix = COLONS + offset;
+               printf("%s", line_prefix);
++
 +              /* As many colons as there are parents */
 +              for (i = 0; i < num_parent; i++)
 +                      putchar(':');
  
                /* Show the modes */
 -              for (i = 0; i < num_parent; i++) {
 -                      printf("%s%06o", prefix, p->parent[i].mode);
 -                      prefix = " ";
 -              }
 -              printf("%s%06o", prefix, p->mode);
 +              for (i = 0; i < num_parent; i++)
 +                      printf("%06o ", p->parent[i].mode);
 +              printf("%06o", p->mode);
  
                /* Show sha1's */
                for (i = 0; i < num_parent; i++)