For new files, " (new)" will be appended to filenames. For deleted files, " (deleted)" will be appended to filenames. Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@xxxxxxxxx> --- diff.c | 29 +++++++++++++++++++++++++++++ 1 files changed, 29 insertions(+), 0 deletions(-) diff --git a/diff.c b/diff.c index 3315378..bd78138 100644 --- a/diff.c +++ b/diff.c @@ -599,6 +599,8 @@ struct diffstat_t { unsigned is_unmerged:1; unsigned is_binary:1; unsigned is_renamed:1; + unsigned is_added:1; + unsigned is_deleted:1; unsigned int added, deleted; } **files; }; @@ -707,6 +709,10 @@ static void show_stats(struct diffstat_t } len = strlen(file->name); + if (file->is_added) + len += 6; /* " (new)" */ + if (file->is_deleted) + len += 10; /* " (deleted)" */ if (max_len < len) max_len = len; @@ -735,12 +741,25 @@ static void show_stats(struct diffstat_t int added = data->files[i]->added; int deleted = data->files[i]->deleted; int name_len; + char *new_name = NULL; /* * "scale" the filename */ len = name_width; name_len = strlen(name); + if (data->files[i]->is_added) { + new_name = name = xmalloc(name_len+7); /* " (new)" */ + memcpy(name,data->files[i]->name,name_len); + memcpy(name+name_len," (new)",7); + name_len += 6; + } + if (data->files[i]->is_deleted) { + new_name = name = xmalloc(name_len+11); /* " (deleted)" */ + memcpy(name,data->files[i]->name,name_len); + memcpy(name+name_len," (deleted)",11); + name_len += 10; /* " (deleted)" */ + } if (name_width < name_len) { char *slash; prefix = "..."; @@ -787,6 +806,8 @@ static void show_stats(struct diffstat_t show_graph('-', del, del_c, reset); putchar('\n'); free_diffstat_file: + if (new_name) + free(new_name); free(data->files[i]->name); free(data->files[i]); } @@ -1067,6 +1088,14 @@ static void builtin_diffstat(const char data->is_unmerged = 1; return; } + if (DIFF_FILE_VALID(one)) { + if (!DIFF_FILE_VALID(two)) + data->is_deleted = 1; + } + else { + if (DIFF_FILE_VALID(two)) + data->is_added = 1; + } if (complete_rewrite) { diff_populate_filespec(one, 0); diff_populate_filespec(two, 0); -- 1.4.4.rc1.gbc33-dirty - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html