introduce "format" date-mode
This feeds the format directly to strftime. Besides being a little more flexible, the main advantage is that your system strftime may know more about your locale's preferred format (e.g., how to spell the days of the week). Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
a5481a6c94
commit
aa1462cc3d
9
date.c
9
date.c
@ -163,6 +163,8 @@ void show_date_relative(unsigned long time, int tz,
|
||||
struct date_mode *date_mode_from_type(enum date_mode_type type)
|
||||
{
|
||||
static struct date_mode mode;
|
||||
if (type == DATE_STRFTIME)
|
||||
die("BUG: cannot create anonymous strftime date_mode struct");
|
||||
mode.type = type;
|
||||
return &mode;
|
||||
}
|
||||
@ -221,6 +223,8 @@ const char *show_date(unsigned long time, int tz, const struct date_mode *mode)
|
||||
weekday_names[tm->tm_wday], tm->tm_mday,
|
||||
month_names[tm->tm_mon], tm->tm_year + 1900,
|
||||
tm->tm_hour, tm->tm_min, tm->tm_sec, tz);
|
||||
else if (mode->type == DATE_STRFTIME)
|
||||
strbuf_addftime(&timebuf, mode->strftime_fmt, tm);
|
||||
else
|
||||
strbuf_addf(&timebuf, "%.3s %.3s %d %02d:%02d:%02d %d%c%+05d",
|
||||
weekday_names[tm->tm_wday],
|
||||
@ -787,7 +791,10 @@ void parse_date_format(const char *format, struct date_mode *mode)
|
||||
mode->type = DATE_NORMAL;
|
||||
else if (!strcmp(format, "raw"))
|
||||
mode->type = DATE_RAW;
|
||||
else
|
||||
else if (skip_prefix(format, "format:", &format)) {
|
||||
mode->type = DATE_STRFTIME;
|
||||
mode->strftime_fmt = xstrdup(format);
|
||||
} else
|
||||
die("unknown date format %s", format);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user