[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 1/3] stat: move struct statx to struct stat conversion routin
From: |
Andreas Dilger |
Subject: |
Re: [PATCH 1/3] stat: move struct statx to struct stat conversion routines to new header |
Date: |
Thu, 12 Sep 2019 11:36:22 -0600 |
On Sep 11, 2019, at 7:51 AM, Jeff Layton <address@hidden> 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 <address@hidden>
> ---
> 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
[PATCH 3/3] ls: add statx-enabled variants of stat and lstat calls, Jeff Layton, 2019/09/11