diff options
Diffstat (limited to 'diff.c')
| -rw-r--r-- | diff.c | 26 | 
1 files changed, 11 insertions, 15 deletions
| @@ -839,10 +839,9 @@ static int scale_linear(int it, int width, int max_change)  }  static void show_name(FILE *file, -		      const char *prefix, const char *name, int len, -		      const char *reset, const char *set) +		      const char *prefix, const char *name, int len)  { -	fprintf(file, " %s%s%-*s%s |", set, prefix, len, name, reset); +	fprintf(file, " %s%-*s |", prefix, len, name);  }  static void show_graph(FILE *file, char ch, int cnt, const char *set, const char *reset) @@ -956,7 +955,7 @@ static void show_stats(struct diffstat_t *data, struct diff_options *options)  		}  		if (data->files[i]->is_binary) { -			show_name(options->file, prefix, name, len, reset, set); +			show_name(options->file, prefix, name, len);  			fprintf(options->file, "  Bin ");  			fprintf(options->file, "%s%d%s", del_c, deleted, reset);  			fprintf(options->file, " -> "); @@ -966,7 +965,7 @@ static void show_stats(struct diffstat_t *data, struct diff_options *options)  			continue;  		}  		else if (data->files[i]->is_unmerged) { -			show_name(options->file, prefix, name, len, reset, set); +			show_name(options->file, prefix, name, len);  			fprintf(options->file, "  Unmerged\n");  			continue;  		} @@ -988,7 +987,7 @@ static void show_stats(struct diffstat_t *data, struct diff_options *options)  			add = scale_linear(add, width, max_change);  			del = scale_linear(del, width, max_change);  		} -		show_name(options->file, prefix, name, len, reset, set); +		show_name(options->file, prefix, name, len);  		fprintf(options->file, "%5d%s", added + deleted,  				added + deleted ? " " : "");  		show_graph(options->file, '+', add, add_c, reset); @@ -996,8 +995,8 @@ static void show_stats(struct diffstat_t *data, struct diff_options *options)  		fprintf(options->file, "\n");  	}  	fprintf(options->file, -	       "%s %d files changed, %d insertions(+), %d deletions(-)%s\n", -	       set, total_files, adds, dels, reset); +	       " %d files changed, %d insertions(+), %d deletions(-)\n", +	       total_files, adds, dels);  }  static void show_shortstats(struct diffstat_t* data, struct diff_options *options) @@ -2015,18 +2014,15 @@ static struct diff_tempfile *prepare_temp_file(const char *name,  			die("stat(%s): %s", name, strerror(errno));  		}  		if (S_ISLNK(st.st_mode)) { -			int ret; -			char buf[PATH_MAX + 1]; /* ought to be SYMLINK_MAX */ -			ret = readlink(name, buf, sizeof(buf)); -			if (ret < 0) +			struct strbuf sb = STRBUF_INIT; +			if (strbuf_readlink(&sb, name, st.st_size) < 0)  				die("readlink(%s)", name); -			if (ret == sizeof(buf)) -				die("symlink too long: %s", name); -			prep_temp_blob(name, temp, buf, ret, +			prep_temp_blob(name, temp, sb.buf, sb.len,  				       (one->sha1_valid ?  					one->sha1 : null_sha1),  				       (one->sha1_valid ?  					one->mode : S_IFLNK)); +			strbuf_release(&sb);  		}  		else {  			/* we can borrow from the file in the work tree */ | 
