diff mbox series

strbuf: use skip_prefix() in strbuf_addftime()

Message ID fccba24c-584d-6329-69a7-75cf0458af7d@web.de (mailing list archive)
State Accepted
Commit 945c72250afcf50a0f5394151b76d5da28fa6f94
Headers show
Series strbuf: use skip_prefix() in strbuf_addftime() | expand

Commit Message

René Scharfe July 16, 2023, 8:52 a.m. UTC
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>
---
 strbuf.c | 24 ++++++------------------
 1 file changed, 6 insertions(+), 18 deletions(-)

--
2.41.0
diff mbox series

Patch

diff --git a/strbuf.c b/strbuf.c
index 399242684b..837975ef9c 100644
--- a/strbuf.c
+++ b/strbuf.c
@@ -935,31 +935,19 @@  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;