Browse Source

strbuf: change an always NULL/"" strbuf_addftime() param to bool

strbuf_addftime() allows callers to pass a time zone name for
expanding %Z. The only current caller either passes the empty string
or NULL, in which case %Z is handed over verbatim to strftime(3).
Replace that string parameter with a flag controlling whether to
remove %Z from the format specification. This simplifies the code.

Commit-message-by: René Scharfe <l.s.r@web.de>
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Ævar Arnfjörð Bjarmason 8 years ago committed by Junio C Hamano
parent
commit
3b702239d6
  1. 2
      date.c
  2. 5
      strbuf.c
  3. 5
      strbuf.h

2
date.c

@ -243,7 +243,7 @@ const char *show_date(unsigned long time, int tz, const struct date_mode *mode) @@ -243,7 +243,7 @@ const char *show_date(unsigned long time, int tz, const struct date_mode *mode)
tm->tm_hour, tm->tm_min, tm->tm_sec, tz);
else if (mode->type == DATE_STRFTIME)
strbuf_addftime(&timebuf, mode->strftime_fmt, tm, tz,
mode->local ? NULL : "");
!mode->local);
else
strbuf_addf(&timebuf, "%.3s %.3s %d %02d:%02d:%02d %d%c%+05d",
weekday_names[tm->tm_wday],

5
strbuf.c

@ -786,7 +786,7 @@ char *xstrfmt(const char *fmt, ...) @@ -786,7 +786,7 @@ char *xstrfmt(const char *fmt, ...)
}

void strbuf_addftime(struct strbuf *sb, const char *fmt, const struct tm *tm,
int tz_offset, const char *tz_name)
int tz_offset, int suppress_tz_name)
{
struct strbuf munged_fmt = STRBUF_INIT;
size_t hint = 128;
@ -815,8 +815,7 @@ void strbuf_addftime(struct strbuf *sb, const char *fmt, const struct tm *tm, @@ -815,8 +815,7 @@ void strbuf_addftime(struct strbuf *sb, const char *fmt, const struct tm *tm,
fmt++;
break;
case 'Z':
if (tz_name) {
strbuf_addstr(&munged_fmt, tz_name);
if (suppress_tz_name) {
fmt++;
break;
}

5
strbuf.h

@ -343,11 +343,12 @@ extern void strbuf_vaddf(struct strbuf *sb, const char *fmt, va_list ap); @@ -343,11 +343,12 @@ extern void strbuf_vaddf(struct strbuf *sb, const char *fmt, va_list ap);
* `tz_offset` is in decimal hhmm format, e.g. -600 means six hours west
* of Greenwich, and it's used to expand %z internally. However, tokens
* with modifiers (e.g. %Ez) are passed to `strftime`.
* `tz_name` is used to expand %Z internally unless it's NULL.
* `suppress_tz_name`, when set, expands %Z internally to the empty
* string rather than passing it to `strftime`.
*/
extern void strbuf_addftime(struct strbuf *sb, const char *fmt,
const struct tm *tm, int tz_offset,
const char *tz_name);
int suppress_tz_name);

/**
* Read a given size of data from a FILE* pointer to the buffer.

Loading…
Cancel
Save