Message ID | alpine.DEB.2.22.394.2105132238480.2102509@digraph.polyomino.org.uk |
---|---|
State | New |
Headers | show |
Series | Do not declare asctime_r and ctime_r for C2X | expand |
On 5/13/21 5:39 PM, Joseph Myers wrote: > The same change that removed those two functions from C2X also marked > asctime and ctime as deprecated (reflecting how POSIX shows them as > obsolescent), i.e. using the [[deprecated]] attribute in the > prototypes shown in C2X. It's less clear if we should explicitly > deprecate those functions like that in the glibc headers Sounds like that's just a quality-of-implementation issue. My vote would be to deprecate them in the glibc headers, as they're asking for trouble (buffer overrun etc.) with 64-bit time_t.
On 13/05/2021 19:39, Joseph Myers wrote: > ISO C2X added the asctime_r, ctime_r, gmtime_r and localtime_r > functions from POSIX. It's now removed asctime_r and ctime_r again, > reflecting that they are marked obsolescent in POSIX; update glibc's > time.h accordingly. > > The same change that removed those two functions from C2X also marked > asctime and ctime as deprecated (reflecting how POSIX shows them as > obsolescent), i.e. using the [[deprecated]] attribute in the > prototypes shown in C2X. It's less clear if we should explicitly > deprecate those functions like that in the glibc headers; this patch > does nothing regarding such a deprecation (there's no normative > requirement from C2X showing the functions as deprecated). > > Tested for x86_64 and x86. LGTM, I think we can make the function deprecated on a subsequent patch. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org> > > diff --git a/time/time.h b/time/time.h > index 3bf206be0b..dcc2d595e8 100644 > --- a/time/time.h > +++ b/time/time.h > @@ -141,7 +141,7 @@ extern char *asctime (const struct tm *__tp) __THROW; > /* Equivalent to `asctime (localtime (timer))'. */ > extern char *ctime (const time_t *__timer) __THROW; > > -#if defined __USE_POSIX || __GLIBC_USE (ISOC2X) > +#ifdef __USE_POSIX > /* Reentrant versions of the above functions. */ > > /* Return in BUF a string of the form "Day Mon dd hh:mm:ss yyyy\n" > @@ -152,7 +152,7 @@ extern char *asctime_r (const struct tm *__restrict __tp, > /* Equivalent to `asctime_r (localtime_r (timer, *TMP*), buf)'. */ > extern char *ctime_r (const time_t *__restrict __timer, > char *__restrict __buf) __THROW; > -#endif /* POSIX || C2X */ > +#endif /* POSIX */ > > > /* Defined in localtime.c. */ >
diff --git a/time/time.h b/time/time.h index 3bf206be0b..dcc2d595e8 100644 --- a/time/time.h +++ b/time/time.h @@ -141,7 +141,7 @@ extern char *asctime (const struct tm *__tp) __THROW; /* Equivalent to `asctime (localtime (timer))'. */ extern char *ctime (const time_t *__timer) __THROW; -#if defined __USE_POSIX || __GLIBC_USE (ISOC2X) +#ifdef __USE_POSIX /* Reentrant versions of the above functions. */ /* Return in BUF a string of the form "Day Mon dd hh:mm:ss yyyy\n" @@ -152,7 +152,7 @@ extern char *asctime_r (const struct tm *__restrict __tp, /* Equivalent to `asctime_r (localtime_r (timer, *TMP*), buf)'. */ extern char *ctime_r (const time_t *__restrict __timer, char *__restrict __buf) __THROW; -#endif /* POSIX || C2X */ +#endif /* POSIX */ /* Defined in localtime.c. */