On Sep 11, 2019, at 7:51 AM, Jeff Layton <jlay...@kernel.org> wrote: > > * move statx_timestamp_to_timespec and statx_to_stat to a new header
Jeff, thanks for working out this patch series. Looks good to me. Reviewed-by: Andreas Dilger <adil...@dilger.ca> > --- > src/stat.c | 32 +------------------------------ > src/statx.h | 54 +++++++++++++++++++++++++++++++++++++++++++++++++++++ > 2 files changed, 55 insertions(+), 31 deletions(-) > create mode 100644 src/statx.h > > diff --git a/src/stat.c b/src/stat.c > index ee68f1682bc8..f2bf0dcb7901 100644 > --- a/src/stat.c > +++ b/src/stat.c > @@ -73,6 +73,7 @@ > #include "strftime.h" > #include "find-mount-point.h" > #include "xvasprintf.h" > +#include "statx.h" > > #if HAVE_STATX && defined STATX_INO > # define USE_STATX 1 > @@ -1245,37 +1246,6 @@ static bool dont_sync; > static bool force_sync; > > #if USE_STATX > -/* Much of the format printing requires a struct stat or timespec */ > -static struct timespec > -statx_timestamp_to_timespec (struct statx_timestamp tsx) > -{ > - struct timespec ts; > - > - ts.tv_sec = tsx.tv_sec; > - ts.tv_nsec = tsx.tv_nsec; > - return ts; > -} > - > -static void > -statx_to_stat (struct statx *stx, struct stat *stat) > -{ > - stat->st_dev = makedev (stx->stx_dev_major, stx->stx_dev_minor); > - stat->st_ino = stx->stx_ino; > - stat->st_mode = stx->stx_mode; > - stat->st_nlink = stx->stx_nlink; > - stat->st_uid = stx->stx_uid; > - stat->st_gid = stx->stx_gid; > - stat->st_rdev = makedev (stx->stx_rdev_major, stx->stx_rdev_minor); > - stat->st_size = stx->stx_size; > - stat->st_blksize = stx->stx_blksize; > -/* define to avoid sc_prohibit_stat_st_blocks. */ > -# define SC_ST_BLOCKS st_blocks > - stat->SC_ST_BLOCKS = stx->stx_blocks; > - stat->st_atim = statx_timestamp_to_timespec (stx->stx_atime); > - stat->st_mtim = statx_timestamp_to_timespec (stx->stx_mtime); > - stat->st_ctim = statx_timestamp_to_timespec (stx->stx_ctime); > -} > - > static unsigned int > fmt_to_mask (char fmt) > { > diff --git a/src/statx.h b/src/statx.h > new file mode 100644 > index 000000000000..a1db527b3308 > --- /dev/null > +++ b/src/statx.h > @@ -0,0 +1,54 @@ > +/* statx -> stat conversion utilities for coreutils > + Copyright (C) 2019 Free Software Foundation, Inc. > + > + This program is free software: you can redistribute it and/or modify > + it under the terms of the GNU General Public License as published by > + the Free Software Foundation, either version 3 of the License, or > + (at your option) any later version. > + > + This program is distributed in the hope that it will be useful, > + but WITHOUT ANY WARRANTY; without even the implied warranty of > + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > + GNU General Public License for more details. > + > + You should have received a copy of the GNU General Public License > + along with this program. If not, see <https://www.gnu.org/licenses/>. */ > + > +#ifndef COREUTILS_STATX_H > +# define COREUTILS_STATX_H > + > +#include <sys/stat.h> > + > +#if HAVE_STATX && defined STATX_INO > +/* Much of the format printing requires a struct stat or timespec */ > +static inline struct timespec > +statx_timestamp_to_timespec (struct statx_timestamp tsx) > +{ > + struct timespec ts; > + > + ts.tv_sec = tsx.tv_sec; > + ts.tv_nsec = tsx.tv_nsec; > + return ts; > +} > + > +static inline void > +statx_to_stat (struct statx *stx, struct stat *stat) > +{ > + stat->st_dev = makedev (stx->stx_dev_major, stx->stx_dev_minor); > + stat->st_ino = stx->stx_ino; > + stat->st_mode = stx->stx_mode; > + stat->st_nlink = stx->stx_nlink; > + stat->st_uid = stx->stx_uid; > + stat->st_gid = stx->stx_gid; > + stat->st_rdev = makedev (stx->stx_rdev_major, stx->stx_rdev_minor); > + stat->st_size = stx->stx_size; > + stat->st_blksize = stx->stx_blksize; > +/* define to avoid sc_prohibit_stat_st_blocks. */ > +# define SC_ST_BLOCKS st_blocks > + stat->SC_ST_BLOCKS = stx->stx_blocks; > + stat->st_atim = statx_timestamp_to_timespec (stx->stx_atime); > + stat->st_mtim = statx_timestamp_to_timespec (stx->stx_mtime); > + stat->st_ctim = statx_timestamp_to_timespec (stx->stx_ctime); > +} > +#endif /* HAVE_STATX && defined STATX_INO */ > +#endif /* COREUTILS_STATX_H */ > -- > 2.21.0 > Cheers, Andreas
signature.asc
Description: Message signed with OpenPGP