From c33ddc2e33d51da9391a81206a1d9e4a92d97d10 Mon Sep 17 00:00:00 2001 From: Jeff King Date: Wed, 27 Aug 2014 03:57:08 -0400 Subject: date: use strbufs in date-formatting functions Many of the date functions write into fixed-size buffers. This is a minor pain, as we have to take special precautions, and frequently end up copying the result into a strbuf or heap-allocated buffer anyway (for which we sometimes use strcpy!). Let's instead teach parse_date, datestamp, etc to write to a strbuf. The obvious downside is that we might need to perform a heap allocation where we otherwise would not need to. However, it turns out that the only two new allocations required are: 1. In test-date.c, where we don't care about efficiency. 2. In determine_author_info, which is not performance critical (and where the use of a strbuf will help later refactoring). Signed-off-by: Jeff King Signed-off-by: Junio C Hamano --- test-date.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'test-date.c') diff --git a/test-date.c b/test-date.c index 10afaabbfa..94a6997a8f 100644 --- a/test-date.c +++ b/test-date.c @@ -19,19 +19,21 @@ static void show_dates(char **argv, struct timeval *now) static void parse_dates(char **argv, struct timeval *now) { + struct strbuf result = STRBUF_INIT; + for (; *argv; argv++) { - char result[100]; unsigned long t; int tz; - result[0] = 0; - parse_date(*argv, result, sizeof(result)); - if (sscanf(result, "%lu %d", &t, &tz) == 2) + strbuf_reset(&result); + parse_date(*argv, &result); + if (sscanf(result.buf, "%lu %d", &t, &tz) == 2) printf("%s -> %s\n", *argv, show_date(t, tz, DATE_ISO8601)); else printf("%s -> bad\n", *argv); } + strbuf_release(&result); } static void parse_approxidate(char **argv, struct timeval *now) -- cgit v1.2.3