Applied, thanks

On Sun, Nov 28, 2021 at 11:28 AM Aaro Koskinen <aaro.koski...@iki.fi> wrote:
>
> Implement -samefile.
>
> Signed-off-by: Aaro Koskinen <aaro.koski...@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

Reply via email to