[tz] [PROPOSED] Use C23 [[maybe_unused]] if available
Paul Eggert
eggert at cs.ucla.edu
Sun Nov 20 20:15:11 UTC 2022
* Makefile (GCC_DEBUG_FLAGS): Omit -Wno-unused-parameters, as the
code is now safe for gcc -Wunused-parameters.
* private.h (ATTRIBUTE_MAYBE_UNUSED): New macro.
* localtime.c (gmtsub):
* strftime.c (strftime_l) [HAVE_STRFTIME_L]:
* zdump.c (gmtoff):
Use it to mark possibly-unused parameters.
* zdump.c (hunt):
* zic.c (getleapdatetime):
Omit unused arg. All callers changed.
---
Makefile | 2 +-
localtime.c | 4 ++--
private.h | 13 +++++++++++++
strftime.c | 2 +-
zdump.c | 13 +++++++------
zic.c | 6 +++---
6 files changed, 27 insertions(+), 13 deletions(-)
diff --git a/Makefile b/Makefile
index 92d78cb4..b2c6ff6f 100644
--- a/Makefile
+++ b/Makefile
@@ -300,7 +300,7 @@ GCC_DEBUG_FLAGS = -DGCC_LINT -g3 -O3 -fno-common \
-Wtrampolines -Wundef -Wuninitialized -Wunused-macros -Wuse-after-free=3 \
-Wvariadic-macros -Wvla -Wwrite-strings \
-Wno-address -Wno-format-nonliteral -Wno-sign-compare \
- -Wno-type-limits -Wno-unused-parameter
+ -Wno-type-limits
#
# If your system has a "GMT offset" field in its "struct tm"s
# (or if you decide to add such a field in your system's "time.h" file),
diff --git a/localtime.c b/localtime.c
index 7faa5d32..4dd9d259 100644
--- a/localtime.c
+++ b/localtime.c
@@ -1662,8 +1662,8 @@ localtime_r(const time_t *timep, struct tm *tmp)
*/
static struct tm *
-gmtsub(struct state const *sp, time_t const *timep, int_fast32_t offset,
- struct tm *tmp)
+gmtsub(ATTRIBUTE_MAYBE_UNUSED struct state const *sp, time_t const *timep,
+ int_fast32_t offset, struct tm *tmp)
{
register struct tm * result;
diff --git a/private.h b/private.h
index 4d40582e..fee18cb2 100644
--- a/private.h
+++ b/private.h
@@ -433,6 +433,19 @@ typedef unsigned long uintmax_t;
# define ATTRIBUTE_FORMAT(spec) /* empty */
#endif
+#ifdef __has_c_attribute
+# if __has_c_attribute(__maybe_unused__)
+# define ATTRIBUTE_MAYBE_UNUSED [[__maybe_unused__]]
+# endif
+#endif
+#ifndef ATTRIBUTE_MAYBE_UNUSED
+# if 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
+# define ATTRIBUTE_MAYBE_UNUSED __attribute__ ((__unused__))
+# else
+# define ATTRIBUTE_MAYBE_UNUSED /* empty */
+# endif
+#endif
+
#if !defined _Noreturn && __STDC_VERSION__ < 201112
# if 2 < __GNUC__ + (8 <= __GNUC_MINOR__)
# define _Noreturn __attribute__((__noreturn__))
diff --git a/strftime.c b/strftime.c
index 9ea40fec..b23b6101 100644
--- a/strftime.c
+++ b/strftime.c
@@ -117,7 +117,7 @@ static char * _yconv(int, int, bool, bool, char *, char const *);
#if HAVE_STRFTIME_L
size_t
strftime_l(char *s, size_t maxsize, char const *format, struct tm const *t,
- locale_t locale)
+ ATTRIBUTE_MAYBE_UNUSED locale_t locale)
{
/* Just call strftime, as only the C locale is supported. */
return strftime(s, maxsize, format, t);
diff --git a/zdump.c b/zdump.c
index 89bcd25c..de1e1116 100644
--- a/zdump.c
+++ b/zdump.c
@@ -91,7 +91,7 @@ static bool errout;
static char const *abbr(struct tm const *);
static intmax_t delta(struct tm *, struct tm *) ATTRIBUTE_PURE;
static void dumptime(struct tm const *);
-static time_t hunt(timezone_t, char *, time_t, time_t, bool);
+static time_t hunt(timezone_t, time_t, time_t, bool);
static void show(timezone_t, char *, time_t, bool);
static void showextrema(timezone_t, char *, time_t, struct tm *, time_t);
static void showtrans(char const *, struct tm const *, time_t, char const *,
@@ -627,7 +627,7 @@ main(int argc, char *argv[])
|| (ab && (delta(&newtm, &tm) != newt - t
|| newtm.tm_isdst != tm.tm_isdst
|| strcmp(abbr(&newtm), ab) != 0))) {
- newt = hunt(tz, argv[i], t, newt, false);
+ newt = hunt(tz, t, newt, false);
newtmp = localtime_rz(tz, &newt, &newtm);
newtm_ok = newtmp != NULL;
if (iflag)
@@ -707,7 +707,7 @@ yeartot(intmax_t y)
return t;
}
-/* Search for a discontinuity in timezone TZ with name NAME, in the
+/* Search for a discontinuity in timezone TZ, in the
timestamps ranging from LOT through HIT. LOT and HIT disagree
about some aspect of timezone. If ONLY_OK, search only for
definedness changes, i.e., localtime succeeds on one side of the
@@ -715,7 +715,7 @@ yeartot(intmax_t y)
before the transition from LOT's settings. */
static time_t
-hunt(timezone_t tz, char *name, time_t lot, time_t hit, bool only_ok)
+hunt(timezone_t tz, time_t lot, time_t hit, bool only_ok)
{
static char * loab;
static ptrdiff_t loabsize;
@@ -807,7 +807,8 @@ adjusted_yday(struct tm const *a, struct tm const *b)
my_gmtime_r and use its result instead of B. Otherwise, B is the
possibly nonnull result of an earlier call to my_gmtime_r. */
static long
-gmtoff(struct tm const *a, time_t *t, struct tm const *b)
+gmtoff(struct tm const *a, ATTRIBUTE_MAYBE_UNUSED time_t *t,
+ ATTRIBUTE_MAYBE_UNUSED struct tm const *b)
{
#ifdef TM_GMTOFF
return a->TM_GMTOFF;
@@ -878,7 +879,7 @@ static void
showextrema(timezone_t tz, char *zone, time_t lo, struct tm *lotmp, time_t hi)
{
struct tm localtm[2], gmtm[2];
- time_t t, boundary = hunt(tz, zone, lo, hi, true);
+ time_t t, boundary = hunt(tz, lo, hi, true);
bool old = false;
hi = (SECSPERDAY < hi - boundary
? boundary + SECSPERDAY
diff --git a/zic.c b/zic.c
index 8f8088ec..7a7a5094 100644
--- a/zic.c
+++ b/zic.c
@@ -1970,7 +1970,7 @@ inzsub(char **fields, int nfields, bool iscont)
}
static zic_t
-getleapdatetime(char **fields, int nfields, bool expire_line)
+getleapdatetime(char **fields, bool expire_line)
{
register const char * cp;
register const struct lookup * lp;
@@ -2048,7 +2048,7 @@ inleap(char **fields, int nfields)
if (nfields != LEAP_FIELDS)
error(_("wrong number of fields on Leap line"));
else {
- zic_t t = getleapdatetime(fields, nfields, false);
+ zic_t t = getleapdatetime(fields, false);
if (0 <= t) {
struct lookup const *lp = byword(fields[LP_ROLL], leap_types);
if (!lp)
@@ -2076,7 +2076,7 @@ inexpires(char **fields, int nfields)
else if (0 <= leapexpires)
error(_("multiple Expires lines"));
else
- leapexpires = getleapdatetime(fields, nfields, true);
+ leapexpires = getleapdatetime(fields, true);
}
static void
--
2.37.2
More information about the tz
mailing list