[prev in list] [next in list] [prev in thread] [next in thread] 

List:       busybox
Subject:    Re: [PATCH] find: implement -samefile
From:       Denys Vlasenko <vda.linux () googlemail ! com>
Date:       2021-12-17 20:45:12
Message-ID: CAK1hOcNSQQ+75okDoNvTLDVn9-=f_37pGRu6zdkGaAgsBh1R1A () mail ! gmail ! com
[Download RAW message or body]

Applied, thanks

On Sun, Nov 28, 2021 at 11:28 AM Aaro Koskinen <aaro.koskinen@iki.fi> wrote:
> 
> Implement -samefile.
> 
> Signed-off-by: Aaro Koskinen <aaro.koskinen@iki.fi>
> ---
> findutils/find.c | 35 +++++++++++++++++++++++++++++++++++
> 1 file changed, 35 insertions(+)
> 
> diff --git a/findutils/find.c b/findutils/find.c
> index fdc5c152d..87fd5b9bc 100644
> --- a/findutils/find.c
> +++ b/findutils/find.c
> @@ -155,6 +155,13 @@
> //config:      default y
> //config:      depends on FIND
> //config:
> +//config:config FEATURE_FIND_SAMEFILE
> +//config:      bool "Enable -samefile: reference file matching"
> +//config:      default y
> +//config:      depends on FIND
> +//config:      help
> +//config:        Support the 'find -samefile' option for searching by a reference \
> file. +//config:
> //config:config FEATURE_FIND_EXEC
> //config:      bool "Enable -exec: execute commands"
> //config:      default y
> @@ -350,6 +357,9 @@
> //usage:       IF_FEATURE_FIND_INUM(
> //usage:     "\n       -inum N         File has inode number N"
> //usage:       )
> +//usage:       IF_FEATURE_FIND_SAMEFILE(
> +//usage:     "\n       -samefile FILE  File is same as FILE"
> +//usage:       )
> //usage:       IF_FEATURE_FIND_USER(
> //usage:     "\n       -user NAME/ID   File is owned by given user"
> //usage:       )
> @@ -444,6 +454,7 @@ IF_FEATURE_FIND_MTIME(  ACTS(mtime, unsigned char time_type; \
> unsigned char mtime IF_FEATURE_FIND_MMIN(   ACTS(mmin,  unsigned char time_type; \
> unsigned char mmin_char; unsigned mmin_mins;)) IF_FEATURE_FIND_NEWER(  ACTS(newer, \
> time_t newer_mtime;)) IF_FEATURE_FIND_INUM(   ACTS(inum,  ino_t inode_num;))
> +IF_FEATURE_FIND_SAMEFILE(ACTS(samefile, ino_t inode_num; dev_t device;))
> IF_FEATURE_FIND_USER(   ACTS(user,  uid_t uid;))
> IF_FEATURE_FIND_SIZE(   ACTS(size,  char size_char; off_t size;))
> IF_FEATURE_FIND_CONTEXT(ACTS(context, security_context_t context;))
> @@ -731,6 +742,13 @@ ACTF(inum)
> return (statbuf->st_ino == ap->inode_num);
> }
> #endif
> +#if ENABLE_FEATURE_FIND_SAMEFILE
> +ACTF(samefile)
> +{
> +       return statbuf->st_ino == ap->inode_num &&
> +              statbuf->st_dev == ap->device;
> +}
> +#endif
> #if ENABLE_FEATURE_FIND_EXEC
> static int do_exec(action_exec *ap, const char *fileName)
> {
> @@ -1125,6 +1143,7 @@ static action*** parse_params(char **argv)
> IF_FEATURE_FIND_CMIN(   PARM_cmin      ,)
> IF_FEATURE_FIND_NEWER(  PARM_newer     ,)
> IF_FEATURE_FIND_INUM(   PARM_inum      ,)
> +       IF_FEATURE_FIND_SAMEFILE(PARM_samefile ,)
> IF_FEATURE_FIND_USER(   PARM_user      ,)
> IF_FEATURE_FIND_GROUP(  PARM_group     ,)
> IF_FEATURE_FIND_SIZE(   PARM_size      ,)
> @@ -1173,6 +1192,7 @@ static action*** parse_params(char **argv)
> IF_FEATURE_FIND_CMIN(   "-cmin\0"   )
> IF_FEATURE_FIND_NEWER(  "-newer\0"  )
> IF_FEATURE_FIND_INUM(   "-inum\0"   )
> +       IF_FEATURE_FIND_SAMEFILE("-samefile\0")
> IF_FEATURE_FIND_USER(   "-user\0"   )
> IF_FEATURE_FIND_GROUP(  "-group\0"  )
> IF_FEATURE_FIND_SIZE(   "-size\0"   )
> @@ -1511,6 +1531,21 @@ static action*** parse_params(char **argv)
> ap->inode_num = xatoul(arg1);
> }
> #endif
> +#if ENABLE_FEATURE_FIND_SAMEFILE
> +               else if (parm == PARM_samefile) {
> +                       action_samefile *ap;
> +                       struct stat stbuf;
> +                       dbg("%d", __LINE__);
> +                       if (G.recurse_flags & (ACTION_FOLLOWLINKS |
> +                                              ACTION_FOLLOWLINKS_L0))
> +                               xstat(arg1, &stbuf);
> +                       else if (lstat(arg1, &stbuf))
> +                               bb_perror_msg_and_die("can't stat '%s'", arg1);
> +                       ap = ALLOC_ACTION(samefile);
> +                       ap->inode_num = stbuf.st_ino;
> +                       ap->device = stbuf.st_dev;
> +               }
> +#endif
> #if ENABLE_FEATURE_FIND_USER
> else if (parm == PARM_user) {
> action_user *ap;
> --
> 2.17.0
> 
> _______________________________________________
> busybox mailing list
> busybox@busybox.net
> http://lists.busybox.net/mailman/listinfo/busybox
_______________________________________________
busybox mailing list
busybox@busybox.net
http://lists.busybox.net/mailman/listinfo/busybox


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic