Re: [PATCH] Make st_*tim visible in stat for POSIX.1-2008
Joel Sherrill <[email protected]>
| Newsgroups | gmane.comp.lib.newlib |
|---|---|
| Message-ID | <CAF9ehCUthX+1a7=y6pwh1LgfagDK5bxJGZ2ftyU2Pr+B0ci7LA@mail.gmail.com> |
On Thu, Aug 15, 2019, 10:59 AM Dionna Amalie Glaze via newlib < [email protected]> wrote: > You would also need the st_*time defines to be defined if > !(defined(__svr4__) && !defined(__PPC__) && !defined(__sun__)) instead of > the current defined(__rtems__). Otherwise that seems fine by me. > > On Thu, Aug 15, 2019 at 3:03 AM Corinna Vinschen <[email protected]> > wrote: > > > On Aug 14 12:49, Dionna Amalie Glaze via newlib wrote: > > > Fixed the __MISC_VISIBLE part. > > > I'm not sure I understand your question. I'm just restructuring how > that > > > code gets exposed. Where previously the timespec and blocks were > defined > > if > > > rtems, and otherwise just the timespec if srv4 etc, I've changed the > > > timespec declarations to all be grouped together. The block > declarations > > > are separate because only the #else after defined(__rtems__) is > evaluated > > > false and `defined(__svr4__) && !defined(__PPC__) && !defined(__sun__)` > > is > > > evaluated false. > > > > > > --- > > > newlib/libc/include/sys/stat.h | 64 ++++++++++++++++++---------------- > > > 1 file changed, 34 insertions(+), 30 deletions(-) > > > > > > diff --git a/newlib/libc/include/sys/stat.h > > b/newlib/libc/include/sys/stat.h > > > index eee98db64..d7d08e830 100644 > > > --- a/newlib/libc/include/sys/stat.h > > > +++ b/newlib/libc/include/sys/stat.h > > > @@ -24,7 +24,7 @@ extern "C" { > > > #define stat64 stat > > > #endif > > > #else > > > -struct stat > > > +struct stat > > > { > > > dev_t st_dev; > > > ino_t st_ino; > > > @@ -34,15 +34,11 @@ struct stat > > > gid_t st_gid; > > > dev_t st_rdev; > > > off_t st_size; > > > -#if defined(__rtems__) > > > +#if __MISC_VISIBLE || __POSIX_VISIBLE >= 200809 || defined(__rtems__) > > > > Do we really need that? I'm cringing at the idea to redefine a struct > > based on macros set depending on user settings. Can't we simplify this? > > AFAICS, the timestamps definition of rtems is equivalent to the > timestamps > > definition of all other targets, except svr4 etc. The only difference > > is the additional st_spare4. > > > > I'd like to make the following suggestion, so all targets except svr4 > etc. > > default to the POSIX compatible definition: > > > > diff --git a/newlib/libc/include/sys/stat.h > > b/newlib/libc/include/sys/stat.h > > index eee98db64a9a..e460c69c963f 100644 > > --- a/newlib/libc/include/sys/stat.h > > +++ b/newlib/libc/include/sys/stat.h > > @@ -34,27 +34,17 @@ struct stat > > gid_t st_gid; > > dev_t st_rdev; > > off_t st_size; > > -#if defined(__rtems__) > > - struct timespec st_atim; > > - struct timespec st_mtim; > > - struct timespec st_ctim; > > - blksize_t st_blksize; > > - blkcnt_t st_blocks; > > -#else > > - /* SysV/sco doesn't have the rest... But Solaris, eabi does. */ > > #if defined(__svr4__) && !defined(__PPC__) && !defined(__sun__) > > time_t st_atime; > > time_t st_mtime; > > time_t st_ctime; > > #else > > - time_t st_atime; > > - long st_spare1; > > - time_t st_mtime; > > - long st_spare2; > > - time_t st_ctime; > > - long st_spare3; > > - blksize_t st_blksize; > > + struct timespec st_atim; > > + struct timespec st_mtim; > > + struct timespec st_ctim; > > + blksize_t st_blksize; > > blkcnt_t st_blocks; > > +#if !defined(__rtems__) > > long st_spare4[2]; > > #endif > > #endif > > > > > > Thoughts? I think this looks good unless there is a concern for small memory targets. But this isn't a structure that is forced on every thread so I don't see any concern. Make it as standard as possible. :) --joel > Corinna > > > > -- > > Corinna Vinschen > > Cygwin Maintainer > > Red Hat > > > > > -- > -Dionna Glaze, PhD (she/her) >