commit - dee3d788b5980d09c1dac29e67844b3947488112
commit + 20a750ff945baed4c729142993cb0217f40830b9
blob - 674de2c51543e1af563af32b17a4d609805167ec
blob + fca64360499d25b37e4da465d063154d61ce89a8
--- tog/tog.c
+++ tog/tog.c
}
static char *
-get_datestr(time_t *time, char *datebuf)
+get_datestr(const time_t *time, char *datebuf)
{
struct tm mytm, *tm;
char *p, *s;
memcpy(*d_lines + *d_nlines, s_lines, s_nlines * sizeof(*s_lines));
*d_nlines += s_nlines;
+
+ return NULL;
+}
+
+static const struct got_error *
+write_date(struct got_diff_line **lines, size_t *nlines,
+ const char *prefix, const time_t *t, FILE *outfile, off_t *outoff)
+{
+ const struct got_error *err;
+ char datebuf[26], *datestr;
+ int n;
+
+ datestr = get_datestr(t, datebuf);
+ if (datestr == NULL)
+ return NULL; /* silently ignored */
+ n = fprintf(outfile, "%s %s UTC\n", prefix, datestr);
+ if (n < 0) {
+ err = got_error_from_errno("fprintf");
+ return err;
+ }
+ *outoff += n;
+ err = add_line_metadata(lines, nlines, *outoff,
+ GOT_DIFF_LINE_DATE);
+ if (err)
+ return err;
+
return NULL;
}
struct got_diffstat_cb_arg *dsa, FILE *outfile)
{
const struct got_error *err = NULL;
- char datebuf[26], *datestr;
struct got_commit_object *commit;
char *id_str = NULL, *logmsg = NULL, *s = NULL, *line;
- time_t committer_time;
+ time_t author_time, committer_time;
const char *author, *committer;
char *refs_str = NULL;
struct got_pathlist_entry *pe;
if (err)
goto done;
- n = fprintf(outfile, "from: %s\n",
- got_object_commit_get_author(commit));
+ author = got_object_commit_get_author(commit);
+ author_time = got_object_commit_get_author_time(commit);
+ committer = got_object_commit_get_committer(commit);
+ committer_time = got_object_commit_get_committer_time(commit);
+ n = fprintf(outfile, "from: %s\n", author);
if (n < 0) {
err = got_error_from_errno("fprintf");
goto done;
err = add_line_metadata(lines, nlines, outoff, GOT_DIFF_LINE_AUTHOR);
if (err)
goto done;
-
- author = got_object_commit_get_author(commit);
- committer = got_object_commit_get_committer(commit);
- if (strcmp(author, committer) != 0) {
- n = fprintf(outfile, "via: %s\n", committer);
- if (n < 0) {
- err = got_error_from_errno("fprintf");
- goto done;
- }
- outoff += n;
- err = add_line_metadata(lines, nlines, outoff,
- GOT_DIFF_LINE_AUTHOR);
+ if (author_time != committer_time) {
+ err = write_date(lines, nlines, "orig:", &author_time, outfile,
+ &outoff);
if (err)
goto done;
}
- committer_time = got_object_commit_get_committer_time(commit);
- datestr = get_datestr(&committer_time, datebuf);
- if (datestr) {
- n = fprintf(outfile, "date: %s UTC\n", datestr);
+ if (strcmp(author, committer) != 0) {
+ n = fprintf(outfile, "via: %s\n", committer);
if (n < 0) {
err = got_error_from_errno("fprintf");
goto done;
}
outoff += n;
err = add_line_metadata(lines, nlines, outoff,
- GOT_DIFF_LINE_DATE);
+ GOT_DIFF_LINE_AUTHOR);
if (err)
goto done;
}
+ err = write_date(lines, nlines, "date:", &committer_time, outfile,
+ &outoff);
+ if (err)
+ goto done;
if (got_object_commit_get_nparents(commit) > 1) {
const struct got_object_id_queue *parent_ids;
struct got_object_qid *qid;