You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gentoo-overlay/app-backup/burp/files/burp-2.4.0-fix-musl-strptim...

87 lines
2.7 KiB

https://github.com/grke/burp/commit/76b7f1ba9f4445108059b13f3d79a7fde8a292a3
https://github.com/grke/burp/issues/908
https://bugs.gentoo.org/862019
From 76b7f1ba9f4445108059b13f3d79a7fde8a292a3 Mon Sep 17 00:00:00 2001
From: Graham Keeling <grke@grke.net>
Date: Mon, 8 Aug 2022 07:53:38 +1000
Subject: [PATCH] 908: Only glibc supports %z in strptime()
Change-Id: I220e4529073c92df856b892559725b323dc84334
---
src/times.h | 8 ++++----
utest/client/monitor/test_json_input.c | 15 +++++++++++----
utest/test_times.c | 7 ++++---
3 files changed, 19 insertions(+), 11 deletions(-)
diff --git a/src/times.h b/src/times.h
index 325419c2b..b0fd3876f 100644
--- a/src/times.h
+++ b/src/times.h
@@ -3,11 +3,11 @@
#define DEFAULT_TIMESTAMP_FORMAT_OLD "%Y-%m-%d %H:%M:%S"
-// Windows does not seem to support %z.
-#ifdef HAVE_WIN32
-#define DEFAULT_TIMESTAMP_FORMAT DEFAULT_TIMESTAMP_FORMAT_OLD
-#else
+#ifdef __GLIBC__
#define DEFAULT_TIMESTAMP_FORMAT "%Y-%m-%d %H:%M:%S %z"
+#else
+// Only glibc supports %z in strptime.
+#define DEFAULT_TIMESTAMP_FORMAT DEFAULT_TIMESTAMP_FORMAT_OLD
#endif
extern const char *getdatestr(const time_t t);
diff --git a/utest/client/monitor/test_json_input.c b/utest/client/monitor/test_json_input.c
index 516fc779b..aea2a4154 100644
--- a/utest/client/monitor/test_json_input.c
+++ b/utest/client/monitor/test_json_input.c
@@ -162,13 +162,20 @@ static struct sd sd1[] = {
static void assert_bu_minimal(struct bu *bu, struct sd *s)
{
- const char *sd_timestamp;
+ const char *cp;
+ const char *cp_end;
fail_unless(bu!=NULL);
fail_unless(s->bno==bu->bno);
fail_unless(s->flags==bu->flags);
- fail_unless((sd_timestamp=strchr(s->timestamp, ' '))!=NULL);
- sd_timestamp++;
- ck_assert_str_eq(sd_timestamp, bu->timestamp);
+ fail_unless((cp=strchr(s->timestamp, ' '))!=NULL);
+ cp++;
+#ifdef __GLIBC__
+ cp_end=s->timestamp+strlen(s->timestamp)-1;
+#else
+ // Only glibc supports %z in strptime.
+ fail_unless((cp_end=strrchr(s->timestamp, ' '))!=NULL);
+#endif
+ fail_unless(strncmp(cp, bu->timestamp, cp_end-cp)==0);
}
static void do_test_json_clients_with_backup(const char *path,
diff --git a/utest/test_times.c b/utest/test_times.c
index 98be11fd1..5a68203a6 100644
--- a/utest/test_times.c
+++ b/utest/test_times.c
@@ -35,12 +35,13 @@ struct ds
static struct ds ds[] = {
{ 0, "", "never" },
-#ifdef HAVE_WIN32
- { 1000, "", "1970-01-01 00:16:40" },
-#else
+#ifdef __GLIBC__
{ 1000, "", "1970-01-01 00:16:40 +0000" },
{ 1000, "UTC+10", "1969-12-31 14:16:40 -1000" },
{ 1000, "UTC+10", "1969-12-31 14:16:40 -1000" },
+#else
+ // Only glibc supports %z in strptime.
+ { 1000, "", "1970-01-01 00:16:40" },
#endif
};