[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