Re: [PATCH v2] libc/time: Move internal newlib tz-structs to local.h

Corinna Vinschen via Newlib <[email protected]>
Newsgroups gmane.comp.lib.newlib
Message-ID <[email protected]>
On Oct 15 06:52, Torbjorn SVENSSON via Newlib wrote:
> Ping!

Due to vacation I only just checked now.  The patch breaks the Cygwin
build.  Especially __tzinfo_type has to be exposed from a public header
in newlib.

So what about the attached patch instead?


Corinna
0001-libc-time-Move-internal-newlib-tz-structs-into-own-h.patch (text/plain, 4.8 KB)
From c6ad49622e42b4b80ba5fbad40a0776ec74e9ec5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Torbj=C3=B6rn=20SVENSSON=20via=20Newlib?=
 <[email protected]>
Date: Mon, 5 Oct 2020 14:50:13 +0200
Subject: [PATCH] libc/time: Move internal newlib tz-structs into own header
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

As discussed in GCC bug 97088
(https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97088), parameters in
prototypes of library functions should use reserved names, or no name
at all.

This patch moves the internal struct __tzrule_struct to its own
internal header sys/_tz_structs.h.  This is included from newlib's
time code as well as from Cygwin's localtime wrapper.

Signed-off-by: Torbjörn SVENSSON <[email protected]>
Signed-off-by: Corinna Vinschen <[email protected]>
---
 newlib/libc/include/sys/_tz_structs.h    | 24 ++++++++++++++++++++++++
 newlib/libc/include/time.h               | 20 --------------------
 newlib/libc/sys/linux/include/time.h     | 20 --------------------
 newlib/libc/sys/phoenix/include/time.h   | 17 -----------------
 newlib/libc/time/local.h                 |  1 +
 winsup/cygwin/tzcode/localtime_wrapper.c |  1 +
 6 files changed, 26 insertions(+), 57 deletions(-)
 create mode 100644 newlib/libc/include/sys/_tz_structs.h

diff --git a/newlib/libc/include/sys/_tz_structs.h b/newlib/libc/include/sys/_tz_structs.h
new file mode 100644
index 000000000000..9610b06819e1
--- /dev/null
+++ b/newlib/libc/include/sys/_tz_structs.h
@@ -0,0 +1,24 @@
+#ifndef _SYS__TZ_STRUCTS_H_
+#define _SYS__TZ_STRUCTS_H_
+
+typedef struct __tzrule_struct
+{
+  char ch;
+  int m; /* Month of year if ch=M */
+  int n; /* Week of month if ch=M */
+  int d; /* Day of week if ch=M, day of year if ch=J or ch=D */
+  int s; /* Time of day in seconds */
+  time_t change;
+  long offset; /* Match type of _timezone. */
+} __tzrule_type;
+
+typedef struct __tzinfo_struct
+{
+  int __tznorth;
+  int __tzyear;
+  __tzrule_type __tzrule[2];
+} __tzinfo_type;
+
+__tzinfo_type *__gettzinfo (void);
+
+#endif /* _SYS__TZ_STRUCTS_H_ */
diff --git a/newlib/libc/include/time.h b/newlib/libc/include/time.h
index 3031590b441c..ed6cc70fec94 100644
--- a/newlib/libc/include/time.h
+++ b/newlib/libc/include/time.h
@@ -102,26 +102,6 @@ void      tzset 	(void);
 #endif
 void      _tzset_r 	(struct _reent *);
 
-typedef struct __tzrule_struct
-{
-  char ch;
-  int m;
-  int n;
-  int d;
-  int s;
-  time_t change;
-  long offset; /* Match type of _timezone. */
-} __tzrule_type;
-
-typedef struct __tzinfo_struct
-{
-  int __tznorth;
-  int __tzyear;
-  __tzrule_type __tzrule[2];
-} __tzinfo_type;
-
-__tzinfo_type *__gettzinfo (void);
-
 /* getdate functions */
 
 #ifdef HAVE_GETDATE
diff --git a/newlib/libc/sys/linux/include/time.h b/newlib/libc/sys/linux/include/time.h
index 5e61d2b65057..917a35858285 100644
--- a/newlib/libc/sys/linux/include/time.h
+++ b/newlib/libc/sys/linux/include/time.h
@@ -84,26 +84,6 @@ char      *strptime (const char *, const char *, struct tm *);
 void      tzset 	(void);
 void      _tzset_r 	(struct _reent *);
 
-typedef struct __tzrule_struct
-{
-  char ch;
-  int m;
-  int n;
-  int d;
-  int s;
-  time_t change;
-  long offset; /* Match type of _timezone. */
-} __tzrule_type;
-
-typedef struct __tzinfo_struct
-{
-  int __tznorth;
-  int __tzyear;
-  __tzrule_type __tzrule[2];
-} __tzinfo_type;
-
-__tzinfo_type *__gettzinfo (void);
-
 /* getdate functions */
 
 #ifndef _REENT_ONLY
diff --git a/newlib/libc/sys/phoenix/include/time.h b/newlib/libc/sys/phoenix/include/time.h
index 3a9449c77540..41fb137e4391 100644
--- a/newlib/libc/sys/phoenix/include/time.h
+++ b/newlib/libc/sys/phoenix/include/time.h
@@ -40,23 +40,6 @@ extern char *_tzname[2];
 #define tzname	_tzname
 #endif
 
-typedef struct __tzrule_struct {
-	char ch;
-	int m;
-	int n;
-	int d;
-	int s;
-	time_t change;
-	long offset;
-} __tzrule_type;
-
-typedef struct __tzinfo_struct {
-	int __tznorth;
-	int __tzyear;
-	__tzrule_type __tzrule[2];
-} __tzinfo_type;
-
-__tzinfo_type *__gettzinfo();
 void tzset();
 
 clock_t clock();
diff --git a/newlib/libc/time/local.h b/newlib/libc/time/local.h
index dce51cda29bf..bfe06e62230d 100644
--- a/newlib/libc/time/local.h
+++ b/newlib/libc/time/local.h
@@ -1,6 +1,7 @@
 /* local header used by libc/time routines */
 #include <_ansi.h>
 #include <time.h>
+#include <sys/_tz_structs.h>
 
 #define SECSPERMIN	60L
 #define MINSPERHOUR	60L
diff --git a/winsup/cygwin/tzcode/localtime_wrapper.c b/winsup/cygwin/tzcode/localtime_wrapper.c
index 3ac8f8cb00ea..4e784480b0f4 100644
--- a/winsup/cygwin/tzcode/localtime_wrapper.c
+++ b/winsup/cygwin/tzcode/localtime_wrapper.c
@@ -11,6 +11,7 @@ details. */
 #include "tz_posixrules.h"
 #include <cygwin/version.h>
 #include <stdlib.h>
+#include <sys/_tz_structs.h>
 
 static NO_COPY SRWLOCK tzset_guard = SRWLOCK_INIT;
 
-- 
2.26.2
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.