strbuf: use skip_prefix() in strbuf_addftime()

Use the now common skip_prefix() cascade instead of a case statement to
parse the strftime(3) format in strbuf_addftime().  skip_prefix() parses
the "fmt" pointer and advances it appropriately, making additional
pointer arithmetic unnecessary.  The resulting code is more compact and
consistent with most other strbuf_expand_step() loops.

Signed-off-by: René Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
René Scharfe 2023-07-16 10:52:33 +02:00 committed by Junio C Hamano
parent da269af920
commit 945c72250a
1 changed files with 6 additions and 18 deletions

View File

@ -996,32 +996,20 @@ void strbuf_addftime(struct strbuf *sb, const char *fmt, const struct tm *tm,
* of seconds.
*/
while (strbuf_expand_step(&munged_fmt, &fmt)) {
switch (*fmt) {
case '%':
if (skip_prefix(fmt, "%", &fmt))
strbuf_addstr(&munged_fmt, "%%");
fmt++;
break;
case 's':
else if (skip_prefix(fmt, "s", &fmt))
strbuf_addf(&munged_fmt, "%"PRItime,
(timestamp_t)tm_to_time_t(tm) -
3600 * (tz_offset / 100) -
60 * (tz_offset % 100));
fmt++;
break;
case 'z':
else if (skip_prefix(fmt, "z", &fmt))
strbuf_addf(&munged_fmt, "%+05d", tz_offset);
fmt++;
break;
case 'Z':
if (suppress_tz_name) {
fmt++;
break;
}
/* FALLTHROUGH */
default:
else if (suppress_tz_name && skip_prefix(fmt, "Z", &fmt))
; /* nothing */
else
strbuf_addch(&munged_fmt, '%');
}
}
fmt = munged_fmt.buf;

strbuf_grow(sb, hint);