strbuf: change an always NULL/"" strbuf_addftime() param to bool
authorÆvar Arnfjörð Bjarmason <avarab@gmail.com>
Sat, 1 Jul 2017 13:15:47 +0000 (13:15 +0000)
committerJunio C Hamano <gitster@pobox.com>
Sat, 1 Jul 2017 17:47:05 +0000 (10:47 -0700)
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>
date.c
strbuf.c
strbuf.h
diff --git a/date.c b/date.c
index 5580c40ac094211cb3d378b5b523a63308de0a2d..8aca1363962821f8d42b42883f8756fbcd0d5aed 100644 (file)
--- a/date.c
+++ b/date.c
@@ -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],
index be3b9e37b1d969e86e913cc69ccab935f516a063..89e40bb496b99855e3408fdfa07dbcf851b8a08d 100644 (file)
--- a/strbuf.c
+++ b/strbuf.c
@@ -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,
                        fmt++;
                        break;
                case 'Z':
-                       if (tz_name) {
-                               strbuf_addstr(&munged_fmt, tz_name);
+                       if (suppress_tz_name) {
                                fmt++;
                                break;
                        }
index 6708cef0f9adeae434ce95eb17cdf0b428045d29..9262615ca0bf3009bcb052f36ceb300060302e2c 100644 (file)
--- a/strbuf.h
+++ b/strbuf.h
@@ -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.