Download raw body.
tidy get_datestr()
wrote this diff while debugging the date formatting issue just fixed, when i realized that we could save a few lines by using strftime(). since I already wrote this diff for repo_write.c, here's also the rest of the get_datestr() copies converted. (well, except got-notify-email) the output is exactly the same as before. diff /home/op/w/got commit - 166674b8808a9a16a3cff59d166410cd37833014 path + /home/op/w/got blob - 38191d6109e5f5caf08654969f4f3af3d9fb2c70 file + cvg/cvg.c --- cvg/cvg.c +++ cvg/cvg.c @@ -3345,21 +3345,16 @@ done: } static char * -get_datestr(time_t *time, char *datebuf) +get_datestr(time_t *time, char *datebuf, size_t len) { struct tm mytm, *tm; - char *p, *s; tm = gmtime_r(time, &mytm); if (tm == NULL) return NULL; - s = asctime_r(tm, datebuf); - if (s == NULL) + if (strftime(datebuf, len, "%a %b %e %X %Y UTC", tm) == 0) return NULL; - p = strchr(s, '\n'); - if (p) - *p = '\0'; - return s; + return datebuf; } static const struct got_error * @@ -3644,7 +3639,7 @@ print_commit(struct got_commit_object *commit, struct const struct got_error *err = NULL; FILE *f = NULL; char *id_str, *datestr, *logmsg0, *logmsg, *line; - char datebuf[26]; + char datebuf[30]; time_t committer_time; const char *author, *committer; char *refs_str = NULL; @@ -3681,9 +3676,9 @@ print_commit(struct got_commit_object *commit, struct if (strcmp(author, committer) != 0) printf("via: %s\n", committer); committer_time = got_object_commit_get_committer_time(commit); - datestr = get_datestr(&committer_time, datebuf); + datestr = get_datestr(&committer_time, datebuf, sizeof(datebuf)); if (datestr) - printf("date: %s UTC\n", datestr); + printf("date: %s\n", datestr); if (got_object_commit_get_nparents(commit) > 1) { const struct got_object_id_queue *parent_ids; struct got_object_qid *qid; @@ -5901,7 +5896,7 @@ list_tags(struct got_repository *repo, const char *tag TAILQ_FOREACH(re, &refs, entry) { const char *refname; char *refstr, *tagmsg0, *tagmsg, *line, *id_str, *datestr; - char datebuf[26]; + char datebuf[30]; const char *tagger, *ssh_sig = NULL; char *sig_msg = NULL; time_t tagger_time; @@ -5968,9 +5963,9 @@ list_tags(struct got_repository *repo, const char *tag printf("%stag %s %s\n", GOT_COMMIT_SEP_STR, refname, refstr); free(refstr); printf("from: %s\n", tagger); - datestr = get_datestr(&tagger_time, datebuf); + datestr = get_datestr(&tagger_time, datebuf, sizeof(datebuf)); if (datestr) - printf("date: %s UTC\n", datestr); + printf("date: %s\n", datestr); if (commit) printf("object: %s %s\n", GOT_OBJ_LABEL_COMMIT, id_str); else { blob - 4486b08390756e709d18c25cbfc370d75101ecc2 file + got/got.c --- got/got.c +++ got/got.c @@ -4036,21 +4036,16 @@ done: } static char * -get_datestr(time_t *time, char *datebuf) +get_datestr(time_t *time, char *datebuf, size_t len) { struct tm mytm, *tm; - char *p, *s; tm = gmtime_r(time, &mytm); if (tm == NULL) return NULL; - s = asctime_r(tm, datebuf); - if (s == NULL) + if (strftime(datebuf, len, "%a %b %e %X %Y UTC", tm) == 0) return NULL; - p = strchr(s, '\n'); - if (p) - *p = '\0'; - return s; + return datebuf; } static const struct got_error * @@ -4335,7 +4330,7 @@ print_commit(struct got_commit_object *commit, struct const struct got_error *err = NULL; FILE *f = NULL; char *id_str, *datestr, *logmsg0, *logmsg, *line; - char datebuf[26]; + char datebuf[30]; time_t committer_time; const char *author, *committer; char *refs_str = NULL; @@ -4372,9 +4367,9 @@ print_commit(struct got_commit_object *commit, struct if (strcmp(author, committer) != 0) printf("via: %s\n", committer); committer_time = got_object_commit_get_committer_time(commit); - datestr = get_datestr(&committer_time, datebuf); + datestr = get_datestr(&committer_time, datebuf, sizeof(datebuf)); if (datestr) - printf("date: %s UTC\n", datestr); + printf("date: %s\n", datestr); if (got_object_commit_get_nparents(commit) > 1) { const struct got_object_id_queue *parent_ids; struct got_object_qid *qid; @@ -7460,7 +7455,7 @@ list_tags(struct got_repository *repo, const char *tag TAILQ_FOREACH(re, &refs, entry) { const char *refname; char *refstr, *tagmsg0, *tagmsg, *line, *id_str, *datestr; - char datebuf[26]; + char datebuf[30]; const char *tagger, *ssh_sig = NULL; char *sig_msg = NULL; time_t tagger_time; @@ -7527,9 +7522,9 @@ list_tags(struct got_repository *repo, const char *tag printf("%stag %s %s\n", GOT_COMMIT_SEP_STR, refname, refstr); free(refstr); printf("from: %s\n", tagger); - datestr = get_datestr(&tagger_time, datebuf); + datestr = get_datestr(&tagger_time, datebuf, sizeof(datebuf)); if (datestr) - printf("date: %s UTC\n", datestr); + printf("date: %s\n", datestr); if (commit) printf("object: %s %s\n", GOT_OBJ_LABEL_COMMIT, id_str); else { blob - 35a2c6bb85273ba11c1a12f58fd24d93c3e3843c file + gotd/libexec/got-notify-email/got-notify-email.c --- gotd/libexec/got-notify-email/got-notify-email.c +++ gotd/libexec/got-notify-email/got-notify-email.c @@ -193,21 +193,16 @@ send_smtp_msg(int s, const char *fmt, ...) } static char * -get_datestr(time_t *time, char *datebuf) +get_datestr(time_t *time, char *datebuf, size_t len) { struct tm mytm, *tm; - char *p, *s; tm = gmtime_r(time, &mytm); if (tm == NULL) return NULL; - s = asctime_r(tm, datebuf); - if (s == NULL) + if (strftime(datebuf, len, "%a %b %e %X %Y +0000 (UTC)", tm) == 0) return NULL; - p = strchr(s, '\n'); - if (p) - *p = '\0'; - return s; + return datebuf; } static void @@ -220,11 +215,11 @@ send_email(int s, const char *myfromaddr, const char * size_t linesize = 0; ssize_t linelen; time_t now; - char datebuf[26]; + char datebuf[38]; char *datestr; now = time(NULL); - datestr = get_datestr(&now, datebuf); + datestr = get_datestr(&now, datebuf, sizeof(datebuf)); if (read_smtp_code(s, "220")) errx(1, "unexpected SMTP greeting received"); @@ -257,7 +252,7 @@ send_email(int s, const char *myfromaddr, const char * if (send_smtp_msg(s, "Reply-To: %s\r\n", replytoaddr)) errx(1, "could not send Reply-To header"); } - if (send_smtp_msg(s, "Date: %s +0000 (UTC)\r\n", datestr)) + if (send_smtp_msg(s, "Date: %s\r\n", datestr)) errx(1, "could not send Date header"); if (send_smtp_msg(s, "Subject: %s\r\n", subject)) blob - 787504ad4f6f0817c648d3f24b5d75d65da66010 file + gotd/repo_write.c --- gotd/repo_write.c +++ gotd/repo_write.c @@ -1630,21 +1630,16 @@ receive_pack_idx(struct imsg *imsg, struct gotd_imsgev } static char * -get_datestr(time_t *time, char *datebuf) +get_datestr(time_t *time, char *datebuf, size_t len) { struct tm mytm, *tm; - char *p, *s; tm = gmtime_r(time, &mytm); if (tm == NULL) return NULL; - s = asctime_r(tm, datebuf); - if (s == NULL) + if (strftime(datebuf, len, "%a %b %e %X %Y UTC", tm) == 0) return NULL; - p = strchr(s, '\n'); - if (p) - *p = '\0'; - return s; + return datebuf; } static const struct got_error * @@ -1776,7 +1771,7 @@ print_commit(struct got_commit_object *commit, struct { const struct got_error *err = NULL; char *id_str, *datestr, *logmsg0, *logmsg, *line; - char datebuf[26]; + char datebuf[30]; time_t committer_time; const char *author, *committer; @@ -1793,9 +1788,9 @@ print_commit(struct got_commit_object *commit, struct if (strcmp(author, committer) != 0) dprintf(fd, "via: %s\n", committer); committer_time = got_object_commit_get_committer_time(commit); - datestr = get_datestr(&committer_time, datebuf); + datestr = get_datestr(&committer_time, datebuf, sizeof(datebuf)); if (datestr) - dprintf(fd, "date: %s UTC\n", datestr); + dprintf(fd, "date: %s\n", datestr); if (got_object_commit_get_nparents(commit) > 1) { const struct got_object_id_queue *parent_ids; struct got_object_qid *qid; @@ -2005,7 +2000,7 @@ print_tag(struct got_object_id *id, struct got_tag_object *tag = NULL; const char *tagger = NULL; char *id_str = NULL, *tagmsg0 = NULL, *tagmsg, *line, *datestr; - char datebuf[26]; + char datebuf[30]; time_t tagger_time; err = got_object_open_as_tag(&tag, repo, id); @@ -2021,9 +2016,9 @@ print_tag(struct got_object_id *id, dprintf(fd, "tag %s\n", refname); dprintf(fd, "from: %s\n", tagger); - datestr = get_datestr(&tagger_time, datebuf); + datestr = get_datestr(&tagger_time, datebuf, sizeof(datebuf)); if (datestr) - dprintf(fd, "date: %s UTC\n", datestr); + dprintf(fd, "date: %s\n", datestr); switch (got_object_tag_get_object_type(tag)) { case GOT_OBJ_TYPE_BLOB: blob - d6f39ddd87489a5be6dceeaae758836ca25385f3 file + gotwebd/pages.tmpl --- gotwebd/pages.tmpl +++ gotwebd/pages.tmpl @@ -89,14 +89,15 @@ nextsep(char *s, char **t) if (strftime(rfc3339, sizeof(rfc3339), "%FT%TZ", &tm) == 0) return -1; - if (fmt != TM_DIFF && asctime_r(&tm, datebuf) == NULL) + if (fmt != TM_DIFF && + strftime(datebuf, sizeof(datebuf), "%a %b %e %X %Y UTC" &tm) == 0) return -1; !} <time datetime="{{ rfc3339 }}"> {{ if fmt == TM_DIFF }} {{ render gotweb_render_age(tp, t) }} {{ else }} - {{ datebuf }} {{ " UTC" }} + {{ datebuf }} {{ end }} </time> {{ end }} blob - 49be7dc0e431407602c4dba0ac7030028d5a567e file + tog/tog.c --- tog/tog.c +++ tog/tog.c @@ -5032,21 +5032,16 @@ draw_file(struct tog_view *view, const char *header) } static char * -get_datestr(time_t *time, char *datebuf) +get_datestr(time_t *time, char *datebuf, size_t len) { struct tm mytm, *tm; - char *p, *s; tm = gmtime_r(time, &mytm); if (tm == NULL) return NULL; - s = asctime_r(tm, datebuf); - if (s == NULL) + if (strftime(datebuf, len, "%a %b %e %X %Y UTC", tm) == 0) return NULL; - p = strchr(s, '\n'); - if (p) - *p = '\0'; - return s; + return datebuf; } static const struct got_error * @@ -5128,7 +5123,7 @@ write_commit_info(struct got_diff_line **lines, size_t struct got_diffstat_cb_arg *dsa, FILE *outfile) { const struct got_error *err = NULL; - char datebuf[26], *datestr; + char datebuf[30], *datestr; struct got_commit_object *commit; char *id_str = NULL, *logmsg = NULL, *s = NULL, *line; time_t committer_time; @@ -5193,9 +5188,9 @@ write_commit_info(struct got_diff_line **lines, size_t goto done; } committer_time = got_object_commit_get_committer_time(commit); - datestr = get_datestr(&committer_time, datebuf); + datestr = get_datestr(&committer_time, datebuf, sizeof(datebuf)); if (datestr) { - n = fprintf(outfile, "date: %s UTC\n", datestr); + n = fprintf(outfile, "date: %s\n", datestr); if (n < 0) { err = got_error_from_errno("fprintf"); goto done;
tidy get_datestr()