coreutils
[Top][All Lists]
Advanced

[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





Attachment: signature.asc
Description: Message signed with OpenPGP


reply via email to

[Prev in Thread] Current Thread [Next in Thread]