[RFC v4 07/24] time: Deprecate struct timezone members
Alistair Francis
alistair.francis@wdc.com
Sat Aug 10 01:03:00 GMT 2019
Append the struct timezone members with '_dep'. This indicates that
these members are deprecated and will cause build failures on code that
is currently using the members.
The struct timezone *tz variable contaions information on the current
timezone, in this structure:
struct timezone {
int tz_minuteswest; /* minutes west of Greenwich */
int tz_dsttime; /* type of DST correction */
};
The members are being renamed to create compilation failures for anyone
who is using them. This is being done for the following reasons.
On 32-bit systems with __ARCH_WANT_TIME32_SYSCALLS not defined there is
no way way to get the struct timezone via a syscall. AFAIK there are no
plans to add suppor to a future kernel.
The Linux documentation says that "The use of the timezone structure
is obsolete; the tz argument should normally be specified as NULL."
Most callers of gettimeofday() don't use the timezone data, see
example code from Debian below.
If __ASSUME_TIME64_SYSCALLS and __NR_clock_gettime64 are not defined
then struct timezone *tz will be set as usual.
Example code from Debian:
struct timeval my_gettime(void)
{
struct timezone tz_ignored;
struct timeval tv;
gettimeofday(&tv, &tz_ignored);
return tv;
}
Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
---
sysdeps/unix/bsd/ftime.c | 4 ++--
time/sys/time.h | 4 ++--
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/sysdeps/unix/bsd/ftime.c b/sysdeps/unix/bsd/ftime.c
index 3a1c6e9b01c..bc4dfdab945 100644
--- a/sysdeps/unix/bsd/ftime.c
+++ b/sysdeps/unix/bsd/ftime.c
@@ -34,7 +34,7 @@ ftime (struct timeb *timebuf)
++timebuf->time;
timebuf->millitm = 0;
}
- timebuf->timezone = tz.tz_minuteswest;
- timebuf->dstflag = tz.tz_dsttime;
+ timebuf->timezone = tz.tz_minuteswest_dep;
+ timebuf->dstflag = tz.tz_dsttime_dep;
return 0;
}
diff --git a/time/sys/time.h b/time/sys/time.h
index 5dbc7fc627f..a35ccb7a58b 100644
--- a/time/sys/time.h
+++ b/time/sys/time.h
@@ -51,8 +51,8 @@ __BEGIN_DECLS
This is obsolete and should never be used. */
struct timezone
{
- int tz_minuteswest; /* Minutes west of GMT. */
- int tz_dsttime; /* Nonzero if DST is ever in effect. */
+ int tz_minuteswest_dep; /* Minutes west of GMT. */
+ int tz_dsttime_dep; /* Nonzero if DST is ever in effect. */
};
typedef struct timezone *__restrict __timezone_ptr_t;
--
2.22.0
More information about the Libc-alpha
mailing list