aboutsummaryrefslogtreecommitdiff
path: root/findutils
diff options
context:
space:
mode:
authorRon Yorston <rmy@pobox.com>2021-12-27 08:21:55 +0000
committerRon Yorston <rmy@pobox.com>2021-12-27 08:21:55 +0000
commitb15f68214da209b5b293039c09c00f490c0cc193 (patch)
treed644b5d9318b79cb1baa356cbb63318cc4872c05 /findutils
parent1ee308c75f4720ee38be8e81ff8c9ed4c52670d4 (diff)
parent44075929a8b9c1861d15564fa6ac4562abb724d7 (diff)
downloadbusybox-w32-b15f68214da209b5b293039c09c00f490c0cc193.tar.gz
busybox-w32-b15f68214da209b5b293039c09c00f490c0cc193.tar.bz2
busybox-w32-b15f68214da209b5b293039c09c00f490c0cc193.zip
Merge busybox into merge
Fix merge conflict in coreutils/timeout.c.
Diffstat (limited to 'findutils')
-rw-r--r--findutils/find.c35
1 files changed, 35 insertions, 0 deletions
diff --git a/findutils/find.c b/findutils/find.c
index 87f827b1f..7dbd32dac 100644
--- a/findutils/find.c
+++ b/findutils/find.c
@@ -155,6 +155,13 @@
155//config: default y 155//config: default y
156//config: depends on FIND && (PLATFORM_POSIX || FEATURE_EXTRA_FILE_DATA) 156//config: depends on FIND && (PLATFORM_POSIX || FEATURE_EXTRA_FILE_DATA)
157//config: 157//config:
158//config:config FEATURE_FIND_SAMEFILE
159//config: bool "Enable -samefile: reference file matching"
160//config: default y
161//config: depends on FIND
162//config: help
163//config: Support the 'find -samefile' option for searching by a reference file.
164//config:
158//config:config FEATURE_FIND_EXEC 165//config:config FEATURE_FIND_EXEC
159//config: bool "Enable -exec: execute commands" 166//config: bool "Enable -exec: execute commands"
160//config: default y 167//config: default y
@@ -350,6 +357,9 @@
350//usage: IF_FEATURE_FIND_INUM( 357//usage: IF_FEATURE_FIND_INUM(
351//usage: "\n -inum N File has inode number N" 358//usage: "\n -inum N File has inode number N"
352//usage: ) 359//usage: )
360//usage: IF_FEATURE_FIND_SAMEFILE(
361//usage: "\n -samefile FILE File is same as FILE"
362//usage: )
353//usage: IF_FEATURE_FIND_USER( 363//usage: IF_FEATURE_FIND_USER(
354//usage: "\n -user NAME/ID File is owned by given user" 364//usage: "\n -user NAME/ID File is owned by given user"
355//usage: ) 365//usage: )
@@ -444,6 +454,7 @@ IF_FEATURE_FIND_MTIME( ACTS(mtime, unsigned char time_type; unsigned char mtime
444IF_FEATURE_FIND_MMIN( ACTS(mmin, unsigned char time_type; unsigned char mmin_char; unsigned mmin_mins;)) 454IF_FEATURE_FIND_MMIN( ACTS(mmin, unsigned char time_type; unsigned char mmin_char; unsigned mmin_mins;))
445IF_FEATURE_FIND_NEWER( ACTS(newer, time_t newer_mtime;)) 455IF_FEATURE_FIND_NEWER( ACTS(newer, time_t newer_mtime;))
446IF_FEATURE_FIND_INUM( ACTS(inum, ino_t inode_num;)) 456IF_FEATURE_FIND_INUM( ACTS(inum, ino_t inode_num;))
457IF_FEATURE_FIND_SAMEFILE(ACTS(samefile, ino_t inode_num; dev_t device;))
447IF_FEATURE_FIND_USER( ACTS(user, uid_t uid;)) 458IF_FEATURE_FIND_USER( ACTS(user, uid_t uid;))
448IF_FEATURE_FIND_SIZE( ACTS(size, char size_char; off_t size;)) 459IF_FEATURE_FIND_SIZE( ACTS(size, char size_char; off_t size;))
449IF_FEATURE_FIND_CONTEXT(ACTS(context, security_context_t context;)) 460IF_FEATURE_FIND_CONTEXT(ACTS(context, security_context_t context;))
@@ -731,6 +742,13 @@ ACTF(inum)
731 return (statbuf->st_ino == ap->inode_num); 742 return (statbuf->st_ino == ap->inode_num);
732} 743}
733#endif 744#endif
745#if ENABLE_FEATURE_FIND_SAMEFILE
746ACTF(samefile)
747{
748 return statbuf->st_ino == ap->inode_num &&
749 statbuf->st_dev == ap->device;
750}
751#endif
734#if ENABLE_FEATURE_FIND_EXEC 752#if ENABLE_FEATURE_FIND_EXEC
735static int do_exec(action_exec *ap, const char *fileName) 753static int do_exec(action_exec *ap, const char *fileName)
736{ 754{
@@ -1125,6 +1143,7 @@ static action*** parse_params(char **argv)
1125 IF_FEATURE_FIND_CMIN( PARM_cmin ,) 1143 IF_FEATURE_FIND_CMIN( PARM_cmin ,)
1126 IF_FEATURE_FIND_NEWER( PARM_newer ,) 1144 IF_FEATURE_FIND_NEWER( PARM_newer ,)
1127 IF_FEATURE_FIND_INUM( PARM_inum ,) 1145 IF_FEATURE_FIND_INUM( PARM_inum ,)
1146 IF_FEATURE_FIND_SAMEFILE(PARM_samefile ,)
1128 IF_FEATURE_FIND_USER( PARM_user ,) 1147 IF_FEATURE_FIND_USER( PARM_user ,)
1129 IF_FEATURE_FIND_GROUP( PARM_group ,) 1148 IF_FEATURE_FIND_GROUP( PARM_group ,)
1130 IF_FEATURE_FIND_SIZE( PARM_size ,) 1149 IF_FEATURE_FIND_SIZE( PARM_size ,)
@@ -1173,6 +1192,7 @@ static action*** parse_params(char **argv)
1173 IF_FEATURE_FIND_CMIN( "-cmin\0" ) 1192 IF_FEATURE_FIND_CMIN( "-cmin\0" )
1174 IF_FEATURE_FIND_NEWER( "-newer\0" ) 1193 IF_FEATURE_FIND_NEWER( "-newer\0" )
1175 IF_FEATURE_FIND_INUM( "-inum\0" ) 1194 IF_FEATURE_FIND_INUM( "-inum\0" )
1195 IF_FEATURE_FIND_SAMEFILE("-samefile\0")
1176 IF_FEATURE_FIND_USER( "-user\0" ) 1196 IF_FEATURE_FIND_USER( "-user\0" )
1177 IF_FEATURE_FIND_GROUP( "-group\0" ) 1197 IF_FEATURE_FIND_GROUP( "-group\0" )
1178 IF_FEATURE_FIND_SIZE( "-size\0" ) 1198 IF_FEATURE_FIND_SIZE( "-size\0" )
@@ -1515,6 +1535,21 @@ static action*** parse_params(char **argv)
1515# endif 1535# endif
1516 } 1536 }
1517#endif 1537#endif
1538#if ENABLE_FEATURE_FIND_SAMEFILE
1539 else if (parm == PARM_samefile) {
1540 action_samefile *ap;
1541 struct stat stbuf;
1542 dbg("%d", __LINE__);
1543 if (G.recurse_flags & (ACTION_FOLLOWLINKS |
1544 ACTION_FOLLOWLINKS_L0))
1545 xstat(arg1, &stbuf);
1546 else if (lstat(arg1, &stbuf))
1547 bb_perror_msg_and_die("can't stat '%s'", arg1);
1548 ap = ALLOC_ACTION(samefile);
1549 ap->inode_num = stbuf.st_ino;
1550 ap->device = stbuf.st_dev;
1551 }
1552#endif
1518#if ENABLE_FEATURE_FIND_USER 1553#if ENABLE_FEATURE_FIND_USER
1519 else if (parm == PARM_user) { 1554 else if (parm == PARM_user) {
1520 action_user *ap; 1555 action_user *ap;