find: support -perm /BITS. Closes 7340
function old new delta parse_params 1487 1497 +10 func_perm 57 61 +4 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 2/0 up/down: 14/0) Total: 14 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
4eb1e425fe
commit
3e9b13e4c5
@ -558,8 +558,8 @@ ACTF(type)
|
|||||||
#if ENABLE_FEATURE_FIND_PERM
|
#if ENABLE_FEATURE_FIND_PERM
|
||||||
ACTF(perm)
|
ACTF(perm)
|
||||||
{
|
{
|
||||||
/* -perm +mode: at least one of perm_mask bits are set */
|
/* -perm [+/]mode: at least one of perm_mask bits are set */
|
||||||
if (ap->perm_char == '+')
|
if (ap->perm_char == '+' || ap->perm_char == '/')
|
||||||
return (statbuf->st_mode & ap->perm_mask) != 0;
|
return (statbuf->st_mode & ap->perm_mask) != 0;
|
||||||
/* -perm -mode: all of perm_mask are set */
|
/* -perm -mode: all of perm_mask are set */
|
||||||
if (ap->perm_char == '-')
|
if (ap->perm_char == '-')
|
||||||
@ -1252,14 +1252,14 @@ static action*** parse_params(char **argv)
|
|||||||
/* -perm BITS File's mode bits are exactly BITS (octal or symbolic).
|
/* -perm BITS File's mode bits are exactly BITS (octal or symbolic).
|
||||||
* Symbolic modes use mode 0 as a point of departure.
|
* Symbolic modes use mode 0 as a point of departure.
|
||||||
* -perm -BITS All of the BITS are set in file's mode.
|
* -perm -BITS All of the BITS are set in file's mode.
|
||||||
* -perm +BITS At least one of the BITS is set in file's mode.
|
* -perm [+/]BITS At least one of the BITS is set in file's mode.
|
||||||
*/
|
*/
|
||||||
else if (parm == PARM_perm) {
|
else if (parm == PARM_perm) {
|
||||||
action_perm *ap;
|
action_perm *ap;
|
||||||
dbg("%d", __LINE__);
|
dbg("%d", __LINE__);
|
||||||
ap = ALLOC_ACTION(perm);
|
ap = ALLOC_ACTION(perm);
|
||||||
ap->perm_char = arg1[0];
|
ap->perm_char = arg1[0];
|
||||||
arg1 = plus_minus_num(arg1);
|
arg1 = (arg1[0] == '/' ? arg1+1 : plus_minus_num(arg1));
|
||||||
/*ap->perm_mask = 0; - ALLOC_ACTION did it */
|
/*ap->perm_mask = 0; - ALLOC_ACTION did it */
|
||||||
if (!bb_parse_mode(arg1, &ap->perm_mask))
|
if (!bb_parse_mode(arg1, &ap->perm_mask))
|
||||||
bb_error_msg_and_die("invalid mode '%s'", arg1);
|
bb_error_msg_and_die("invalid mode '%s'", arg1);
|
||||||
|
Loading…
Reference in New Issue
Block a user