diff options
author | Denis Vlasenko <vda.linux@googlemail.com> | 2007-04-04 23:41:35 +0000 |
---|---|---|
committer | Denis Vlasenko <vda.linux@googlemail.com> | 2007-04-04 23:41:35 +0000 |
commit | 56fce00fc7c11c2b8dabac5ba0ef6a0a8a19dee5 (patch) | |
tree | 7e59e42ff0a038c125a9335ff78953b390fe01ea /findutils/find.c | |
parent | febe3c421109032cdfb36249c54e314d39256ace (diff) | |
download | busybox-w32-56fce00fc7c11c2b8dabac5ba0ef6a0a8a19dee5.tar.gz busybox-w32-56fce00fc7c11c2b8dabac5ba0ef6a0a8a19dee5.tar.bz2 busybox-w32-56fce00fc7c11c2b8dabac5ba0ef6a0a8a19dee5.zip |
find: un-DESKTOPize (Kai Schwenzfeier <niteblade@gmx.net>)
find: -group, -depth (Natanael Copa <natanael.copa@gmail.com>)
find: make constant array static, declare PARM_xx constants with enum
Diffstat (limited to 'findutils/find.c')
-rw-r--r-- | findutils/find.c | 228 |
1 files changed, 116 insertions, 112 deletions
diff --git a/findutils/find.c b/findutils/find.c index a4fe5d187..9ca38c21a 100644 --- a/findutils/find.c +++ b/findutils/find.c | |||
@@ -71,14 +71,15 @@ USE_FEATURE_FIND_MMIN( ACTS(mmin, char mmin_char; unsigned mmin_mins;)) | |||
71 | USE_FEATURE_FIND_NEWER( ACTS(newer, time_t newer_mtime;)) | 71 | USE_FEATURE_FIND_NEWER( ACTS(newer, time_t newer_mtime;)) |
72 | USE_FEATURE_FIND_INUM( ACTS(inum, ino_t inode_num;)) | 72 | USE_FEATURE_FIND_INUM( ACTS(inum, ino_t inode_num;)) |
73 | USE_FEATURE_FIND_EXEC( ACTS(exec, char **exec_argv; unsigned int *subst_count; int exec_argc;)) | 73 | USE_FEATURE_FIND_EXEC( ACTS(exec, char **exec_argv; unsigned int *subst_count; int exec_argc;)) |
74 | USE_FEATURE_FIND_USER( ACTS(user, int uid;)) | 74 | USE_FEATURE_FIND_USER( ACTS(user, uid_t uid;)) |
75 | USE_DESKTOP( ACTS(paren, action ***subexpr;)) | 75 | USE_FEATURE_FIND_GROUP( ACTS(group, gid_t gid;)) |
76 | USE_DESKTOP( ACTS(size, off_t size;)) | 76 | USE_FEATURE_FIND_PAREN( ACTS(paren, action ***subexpr;)) |
77 | USE_DESKTOP( ACTS(prune)) | 77 | USE_FEATURE_FIND_SIZE( ACTS(size, off_t size;)) |
78 | USE_FEATURE_FIND_PRUNE( ACTS(prune)) | ||
78 | 79 | ||
79 | static action ***actions; | 80 | static action ***actions; |
80 | static bool need_print = 1; | 81 | static bool need_print = 1; |
81 | 82 | static int recurse_flags = action_recurse; | |
82 | 83 | ||
83 | #if ENABLE_FEATURE_FIND_EXEC | 84 | #if ENABLE_FEATURE_FIND_EXEC |
84 | static unsigned int count_subst(const char *str) | 85 | static unsigned int count_subst(const char *str) |
@@ -231,6 +232,13 @@ ACTF(user) | |||
231 | } | 232 | } |
232 | #endif | 233 | #endif |
233 | 234 | ||
235 | #if ENABLE_FEATURE_FIND_GROUP | ||
236 | ACTF(group) | ||
237 | { | ||
238 | return (statbuf->st_gid == ap->gid); | ||
239 | } | ||
240 | #endif | ||
241 | |||
234 | #if ENABLE_FEATURE_FIND_PRINT0 | 242 | #if ENABLE_FEATURE_FIND_PRINT0 |
235 | ACTF(print0) | 243 | ACTF(print0) |
236 | { | 244 | { |
@@ -245,12 +253,14 @@ ACTF(print) | |||
245 | return TRUE; | 253 | return TRUE; |
246 | } | 254 | } |
247 | 255 | ||
248 | #if ENABLE_DESKTOP | 256 | #if ENABLE_FEATURE_FIND_PAREN |
249 | ACTF(paren) | 257 | ACTF(paren) |
250 | { | 258 | { |
251 | return exec_actions(ap->subexpr, fileName, statbuf); | 259 | return exec_actions(ap->subexpr, fileName, statbuf); |
252 | } | 260 | } |
261 | #endif | ||
253 | 262 | ||
263 | #if ENABLE_FEATURE_FIND_SIZE | ||
254 | /* | 264 | /* |
255 | * -prune: if -depth is not given, return true and do not descend | 265 | * -prune: if -depth is not given, return true and do not descend |
256 | * current dir; if -depth is given, return false with no effect. | 266 | * current dir; if -depth is given, return false with no effect. |
@@ -261,7 +271,9 @@ ACTF(prune) | |||
261 | { | 271 | { |
262 | return SKIP; | 272 | return SKIP; |
263 | } | 273 | } |
274 | #endif | ||
264 | 275 | ||
276 | #if ENABLE_FEATURE_FIND_PRUNE | ||
265 | ACTF(size) | 277 | ACTF(size) |
266 | { | 278 | { |
267 | return statbuf->st_size == ap->size; | 279 | return statbuf->st_size == ap->size; |
@@ -327,81 +339,69 @@ static const char* plus_minus_num(const char* str) | |||
327 | } | 339 | } |
328 | #endif | 340 | #endif |
329 | 341 | ||
330 | #define PARM_a 0 | ||
331 | #define PARM_o 1 | ||
332 | #define PARM_char_not (PARM_o + ENABLE_FEATURE_FIND_NOT) | ||
333 | #define PARM_print (PARM_char_not + 1) | ||
334 | #define PARM_print0 (PARM_print + ENABLE_FEATURE_FIND_PRINT0) | ||
335 | #define PARM_name (PARM_print0 + 1) | ||
336 | #define PARM_type (PARM_name + ENABLE_FEATURE_FIND_TYPE) | ||
337 | #define PARM_perm (PARM_type + ENABLE_FEATURE_FIND_PERM) | ||
338 | #define PARM_mtime (PARM_perm + ENABLE_FEATURE_FIND_MTIME) | ||
339 | #define PARM_mmin (PARM_mtime + ENABLE_FEATURE_FIND_MMIN) | ||
340 | #define PARM_newer (PARM_mmin + ENABLE_FEATURE_FIND_NEWER) | ||
341 | #define PARM_inum (PARM_newer + ENABLE_FEATURE_FIND_INUM) | ||
342 | #define PARM_exec (PARM_inum + ENABLE_FEATURE_FIND_EXEC) | ||
343 | #define PARM_user (PARM_exec + ENABLE_FEATURE_FIND_USER) | ||
344 | #if ENABLE_DESKTOP | ||
345 | #define PARM_and (PARM_user + 1) | ||
346 | #define PARM_or (PARM_and + 1) | ||
347 | #define PARM_not (PARM_or + ENABLE_FEATURE_FIND_NOT) | ||
348 | #define PARM_char_brace (PARM_not + 1) | ||
349 | #define PARM_prune (PARM_char_brace + 1) | ||
350 | #define PARM_size (PARM_prune + 1) | ||
351 | #endif | ||
352 | static action*** parse_params(char **argv) | 342 | static action*** parse_params(char **argv) |
353 | { | 343 | { |
354 | action*** appp; | 344 | enum { |
355 | unsigned cur_group = 0; | 345 | PARM_a , |
356 | unsigned cur_action = 0; | 346 | PARM_o , |
357 | USE_FEATURE_FIND_NOT( bool invert_flag = 0; ) | 347 | USE_FEATURE_FIND_NOT( PARM_char_not ,) |
358 | const char * const params[] = { | 348 | PARM_print , |
359 | "-a", | 349 | USE_FEATURE_FIND_PRINT0(PARM_print0 ,) |
360 | "-o", | 350 | PARM_name , |
361 | #if ENABLE_FEATURE_FIND_NOT | 351 | USE_FEATURE_FIND_TYPE( PARM_type ,) |
362 | "!", | 352 | USE_FEATURE_FIND_PERM( PARM_perm ,) |
363 | #endif | 353 | USE_FEATURE_FIND_MTIME( PARM_mtime ,) |
364 | "-print", | 354 | USE_FEATURE_FIND_MMIN( PARM_mmin ,) |
365 | #if ENABLE_FEATURE_FIND_PRINT0 | 355 | USE_FEATURE_FIND_NEWER( PARM_newer ,) |
366 | "-print0", | 356 | USE_FEATURE_FIND_INUM( PARM_inum ,) |
367 | #endif | 357 | USE_FEATURE_FIND_EXEC( PARM_exec ,) |
368 | "-name", | 358 | USE_FEATURE_FIND_USER( PARM_user ,) |
369 | #if ENABLE_FEATURE_FIND_TYPE | 359 | USE_FEATURE_FIND_GROUP( PARM_group ,) |
370 | "-type", | 360 | USE_FEATURE_FIND_DEPTH( PARM_depth ,) |
371 | #endif | 361 | USE_FEATURE_FIND_PAREN( PARM_char_brace,) |
372 | #if ENABLE_FEATURE_FIND_PERM | 362 | USE_FEATURE_FIND_SIZE( PARM_prune ,) |
373 | "-perm", | 363 | USE_FEATURE_FIND_PRUNE( PARM_size ,) |
374 | #endif | 364 | #if ENABLE_DESKTOP |
375 | #if ENABLE_FEATURE_FIND_MTIME | 365 | PARM_and , |
376 | "-mtime", | 366 | PARM_or , |
377 | #endif | 367 | USE_FEATURE_FIND_NOT( PARM_not ,) |
378 | #if ENABLE_FEATURE_FIND_MMIN | ||
379 | "-mmin", | ||
380 | #endif | ||
381 | #if ENABLE_FEATURE_FIND_NEWER | ||
382 | "-newer", | ||
383 | #endif | ||
384 | #if ENABLE_FEATURE_FIND_INUM | ||
385 | "-inum", | ||
386 | #endif | ||
387 | #if ENABLE_FEATURE_FIND_EXEC | ||
388 | "-exec", | ||
389 | #endif | ||
390 | #if ENABLE_FEATURE_FIND_USER | ||
391 | "-user", | ||
392 | #endif | 368 | #endif |
369 | }; | ||
370 | |||
371 | static const char *const params[] = { | ||
372 | "-a" , | ||
373 | "-o" , | ||
374 | USE_FEATURE_FIND_NOT( "!" ,) | ||
375 | "-print" , | ||
376 | USE_FEATURE_FIND_PRINT0("-print0",) | ||
377 | "-name" , | ||
378 | USE_FEATURE_FIND_TYPE( "-type" ,) | ||
379 | USE_FEATURE_FIND_PERM( "-perm" ,) | ||
380 | USE_FEATURE_FIND_MTIME( "-mtime" ,) | ||
381 | USE_FEATURE_FIND_MMIN( "-mmin" ,) | ||
382 | USE_FEATURE_FIND_NEWER( "-newer" ,) | ||
383 | USE_FEATURE_FIND_INUM( "-inum" ,) | ||
384 | USE_FEATURE_FIND_EXEC( "-exec" ,) | ||
385 | USE_FEATURE_FIND_USER( "-user" ,) | ||
386 | USE_FEATURE_FIND_GROUP( "-group" ,) | ||
387 | USE_FEATURE_FIND_DEPTH( "-depth" ,) | ||
388 | USE_FEATURE_FIND_PAREN( "(" ,) | ||
389 | USE_FEATURE_FIND_SIZE( "-prune" ,) | ||
390 | USE_FEATURE_FIND_PRUNE( "-size" ,) | ||
393 | #if ENABLE_DESKTOP | 391 | #if ENABLE_DESKTOP |
394 | "-and", | 392 | "-and" , |
395 | "-or", | 393 | "-or" , |
396 | # if ENABLE_FEATURE_FIND_NOT | 394 | USE_FEATURE_FIND_NOT( "-not" ,) |
397 | "-not", | ||
398 | # endif | ||
399 | "(", | ||
400 | "-prune", | ||
401 | "-size", | ||
402 | #endif | 395 | #endif |
403 | NULL | 396 | NULL |
404 | }; | 397 | }; |
398 | |||
399 | action*** appp; | ||
400 | unsigned cur_group = 0; | ||
401 | unsigned cur_action = 0; | ||
402 | USE_FEATURE_FIND_NOT( bool invert_flag = 0; ) | ||
403 | |||
404 | /* 'static' doesn't work here! (gcc 4.1.2) */ | ||
405 | action* alloc_action(int sizeof_struct, action_fp f) | 405 | action* alloc_action(int sizeof_struct, action_fp f) |
406 | { | 406 | { |
407 | action *ap; | 407 | action *ap; |
@@ -413,6 +413,7 @@ static action*** parse_params(char **argv) | |||
413 | USE_FEATURE_FIND_NOT( invert_flag = 0; ) | 413 | USE_FEATURE_FIND_NOT( invert_flag = 0; ) |
414 | return ap; | 414 | return ap; |
415 | } | 415 | } |
416 | |||
416 | #define ALLOC_ACTION(name) (action_##name*)alloc_action(sizeof(action_##name), (action_fp) func_##name) | 417 | #define ALLOC_ACTION(name) (action_##name*)alloc_action(sizeof(action_##name), (action_fp) func_##name) |
417 | 418 | ||
418 | appp = xzalloc(2 * sizeof(appp[0])); /* appp[0],[1] == NULL */ | 419 | appp = xzalloc(2 * sizeof(appp[0])); /* appp[0],[1] == NULL */ |
@@ -436,12 +437,10 @@ static action*** parse_params(char **argv) | |||
436 | const char *arg1 = argv[1]; | 437 | const char *arg1 = argv[1]; |
437 | int parm = index_in_str_array(params, arg); | 438 | int parm = index_in_str_array(params, arg); |
438 | /* --- Operators --- */ | 439 | /* --- Operators --- */ |
439 | if (parm == PARM_a USE_DESKTOP(|| parm == PARM_and)) | 440 | if (parm == PARM_a USE_DESKTOP(|| parm == PARM_and)) { |
440 | { | ||
441 | /* no further special handling required */ | 441 | /* no further special handling required */ |
442 | } | 442 | } |
443 | else if (parm == PARM_o USE_DESKTOP(|| parm == PARM_or)) | 443 | else if (parm == PARM_o USE_DESKTOP(|| parm == PARM_or)) { |
444 | { | ||
445 | /* start new OR group */ | 444 | /* start new OR group */ |
446 | cur_group++; | 445 | cur_group++; |
447 | appp = xrealloc(appp, (cur_group+2) * sizeof(*appp)); | 446 | appp = xrealloc(appp, (cur_group+2) * sizeof(*appp)); |
@@ -450,31 +449,27 @@ static action*** parse_params(char **argv) | |||
450 | cur_action = 0; | 449 | cur_action = 0; |
451 | } | 450 | } |
452 | #if ENABLE_FEATURE_FIND_NOT | 451 | #if ENABLE_FEATURE_FIND_NOT |
453 | else if (parm == PARM_char_not USE_DESKTOP(|| parm == PARM_not)) | 452 | else if (parm == PARM_char_not USE_DESKTOP(|| parm == PARM_not)) { |
454 | { | ||
455 | /* also handles "find ! ! -name 'foo*'" */ | 453 | /* also handles "find ! ! -name 'foo*'" */ |
456 | invert_flag ^= 1; | 454 | invert_flag ^= 1; |
457 | } | 455 | } |
458 | #endif | 456 | #endif |
459 | 457 | ||
460 | /* --- Tests and actions --- */ | 458 | /* --- Tests and actions --- */ |
461 | else if (parm == PARM_print) | 459 | else if (parm == PARM_print) { |
462 | { | ||
463 | need_print = 0; | 460 | need_print = 0; |
464 | /* GNU find ignores '!' here: "find ! -print" */ | 461 | /* GNU find ignores '!' here: "find ! -print" */ |
465 | USE_FEATURE_FIND_NOT( invert_flag = 0; ) | 462 | USE_FEATURE_FIND_NOT( invert_flag = 0; ) |
466 | (void) ALLOC_ACTION(print); | 463 | (void) ALLOC_ACTION(print); |
467 | } | 464 | } |
468 | #if ENABLE_FEATURE_FIND_PRINT0 | 465 | #if ENABLE_FEATURE_FIND_PRINT0 |
469 | else if (parm == PARM_print0) | 466 | else if (parm == PARM_print0) { |
470 | { | ||
471 | need_print = 0; | 467 | need_print = 0; |
472 | USE_FEATURE_FIND_NOT( invert_flag = 0; ) | 468 | USE_FEATURE_FIND_NOT( invert_flag = 0; ) |
473 | (void) ALLOC_ACTION(print0); | 469 | (void) ALLOC_ACTION(print0); |
474 | } | 470 | } |
475 | #endif | 471 | #endif |
476 | else if (parm == PARM_name) | 472 | else if (parm == PARM_name) { |
477 | { | ||
478 | action_name *ap; | 473 | action_name *ap; |
479 | if (!*++argv) | 474 | if (!*++argv) |
480 | bb_error_msg_and_die(bb_msg_requires_arg, arg); | 475 | bb_error_msg_and_die(bb_msg_requires_arg, arg); |
@@ -482,8 +477,7 @@ static action*** parse_params(char **argv) | |||
482 | ap->pattern = arg1; | 477 | ap->pattern = arg1; |
483 | } | 478 | } |
484 | #if ENABLE_FEATURE_FIND_TYPE | 479 | #if ENABLE_FEATURE_FIND_TYPE |
485 | else if (parm == PARM_type) | 480 | else if (parm == PARM_type) { |
486 | { | ||
487 | action_type *ap; | 481 | action_type *ap; |
488 | if (!*++argv) | 482 | if (!*++argv) |
489 | bb_error_msg_and_die(bb_msg_requires_arg, arg); | 483 | bb_error_msg_and_die(bb_msg_requires_arg, arg); |
@@ -498,8 +492,7 @@ static action*** parse_params(char **argv) | |||
498 | * -perm -mode All of the permission bits mode are set for the file. | 492 | * -perm -mode All of the permission bits mode are set for the file. |
499 | * -perm +mode Any of the permission bits mode are set for the file. | 493 | * -perm +mode Any of the permission bits mode are set for the file. |
500 | */ | 494 | */ |
501 | else if (parm == PARM_perm) | 495 | else if (parm == PARM_perm) { |
502 | { | ||
503 | action_perm *ap; | 496 | action_perm *ap; |
504 | if (!*++argv) | 497 | if (!*++argv) |
505 | bb_error_msg_and_die(bb_msg_requires_arg, arg); | 498 | bb_error_msg_and_die(bb_msg_requires_arg, arg); |
@@ -512,8 +505,7 @@ static action*** parse_params(char **argv) | |||
512 | } | 505 | } |
513 | #endif | 506 | #endif |
514 | #if ENABLE_FEATURE_FIND_MTIME | 507 | #if ENABLE_FEATURE_FIND_MTIME |
515 | else if (parm == PARM_mtime) | 508 | else if (parm == PARM_mtime) { |
516 | { | ||
517 | action_mtime *ap; | 509 | action_mtime *ap; |
518 | if (!*++argv) | 510 | if (!*++argv) |
519 | bb_error_msg_and_die(bb_msg_requires_arg, arg); | 511 | bb_error_msg_and_die(bb_msg_requires_arg, arg); |
@@ -523,8 +515,7 @@ static action*** parse_params(char **argv) | |||
523 | } | 515 | } |
524 | #endif | 516 | #endif |
525 | #if ENABLE_FEATURE_FIND_MMIN | 517 | #if ENABLE_FEATURE_FIND_MMIN |
526 | else if (parm == PARM_mmin) | 518 | else if (parm == PARM_mmin) { |
527 | { | ||
528 | action_mmin *ap; | 519 | action_mmin *ap; |
529 | if (!*++argv) | 520 | if (!*++argv) |
530 | bb_error_msg_and_die(bb_msg_requires_arg, arg); | 521 | bb_error_msg_and_die(bb_msg_requires_arg, arg); |
@@ -534,8 +525,7 @@ static action*** parse_params(char **argv) | |||
534 | } | 525 | } |
535 | #endif | 526 | #endif |
536 | #if ENABLE_FEATURE_FIND_NEWER | 527 | #if ENABLE_FEATURE_FIND_NEWER |
537 | else if (parm == PARM_newer) | 528 | else if (parm == PARM_newer) { |
538 | { | ||
539 | action_newer *ap; | 529 | action_newer *ap; |
540 | struct stat stat_newer; | 530 | struct stat stat_newer; |
541 | if (!*++argv) | 531 | if (!*++argv) |
@@ -546,8 +536,7 @@ static action*** parse_params(char **argv) | |||
546 | } | 536 | } |
547 | #endif | 537 | #endif |
548 | #if ENABLE_FEATURE_FIND_INUM | 538 | #if ENABLE_FEATURE_FIND_INUM |
549 | else if (parm == PARM_inum) | 539 | else if (parm == PARM_inum) { |
550 | { | ||
551 | action_inum *ap; | 540 | action_inum *ap; |
552 | if (!*++argv) | 541 | if (!*++argv) |
553 | bb_error_msg_and_die(bb_msg_requires_arg, arg); | 542 | bb_error_msg_and_die(bb_msg_requires_arg, arg); |
@@ -556,8 +545,7 @@ static action*** parse_params(char **argv) | |||
556 | } | 545 | } |
557 | #endif | 546 | #endif |
558 | #if ENABLE_FEATURE_FIND_EXEC | 547 | #if ENABLE_FEATURE_FIND_EXEC |
559 | else if (parm == PARM_exec) | 548 | else if (parm == PARM_exec) { |
560 | { | ||
561 | int i; | 549 | int i; |
562 | action_exec *ap; | 550 | action_exec *ap; |
563 | need_print = 0; | 551 | need_print = 0; |
@@ -582,8 +570,7 @@ static action*** parse_params(char **argv) | |||
582 | } | 570 | } |
583 | #endif | 571 | #endif |
584 | #if ENABLE_FEATURE_FIND_USER | 572 | #if ENABLE_FEATURE_FIND_USER |
585 | else if (parm == PARM_user) | 573 | else if (parm == PARM_user) { |
586 | { | ||
587 | action_user *ap; | 574 | action_user *ap; |
588 | if (!*++argv) | 575 | if (!*++argv) |
589 | bb_error_msg_and_die(bb_msg_requires_arg, arg); | 576 | bb_error_msg_and_die(bb_msg_requires_arg, arg); |
@@ -593,9 +580,24 @@ static action*** parse_params(char **argv) | |||
593 | ap->uid = xuname2uid(arg1); | 580 | ap->uid = xuname2uid(arg1); |
594 | } | 581 | } |
595 | #endif | 582 | #endif |
596 | #if ENABLE_DESKTOP | 583 | #if ENABLE_FEATURE_FIND_GROUP |
597 | else if (parm == PARM_char_brace) | 584 | else if (parm == PARM_group) { |
598 | { | 585 | action_group *ap; |
586 | if (!*++argv) | ||
587 | bb_error_msg_and_die(bb_msg_requires_arg, arg); | ||
588 | ap = ALLOC_ACTION(group); | ||
589 | ap->gid = bb_strtou(arg1, NULL, 10); | ||
590 | if (errno) | ||
591 | ap->gid = xgroup2gid(arg1); | ||
592 | } | ||
593 | #endif | ||
594 | #if ENABLE_FEATURE_FIND_DEPTH | ||
595 | else if (parm == PARM_depth) { | ||
596 | recurse_flags |= action_depthFirst; | ||
597 | } | ||
598 | #endif | ||
599 | #if ENABLE_FEATURE_FIND_PAREN | ||
600 | else if (parm == PARM_char_brace) { | ||
599 | action_paren *ap; | 601 | action_paren *ap; |
600 | char **endarg; | 602 | char **endarg; |
601 | unsigned nested = 1; | 603 | unsigned nested = 1; |
@@ -616,13 +618,15 @@ static action*** parse_params(char **argv) | |||
616 | *endarg = (char*) ")"; /* restore NULLed parameter */ | 618 | *endarg = (char*) ")"; /* restore NULLed parameter */ |
617 | argv = endarg; | 619 | argv = endarg; |
618 | } | 620 | } |
619 | else if (parm == PARM_prune) | 621 | #endif |
620 | { | 622 | #if ENABLE_FEATURE_FIND_PRUNE |
623 | else if (parm == PARM_prune) { | ||
621 | USE_FEATURE_FIND_NOT( invert_flag = 0; ) | 624 | USE_FEATURE_FIND_NOT( invert_flag = 0; ) |
622 | (void) ALLOC_ACTION(prune); | 625 | (void) ALLOC_ACTION(prune); |
623 | } | 626 | } |
624 | else if (parm == PARM_size) | 627 | #endif |
625 | { | 628 | #if ENABLE_FEATURE_FIND_SIZE |
629 | else if (parm == PARM_size) { | ||
626 | action_size *ap; | 630 | action_size *ap; |
627 | if (!*++argv) | 631 | if (!*++argv) |
628 | bb_error_msg_and_die(bb_msg_requires_arg, arg); | 632 | bb_error_msg_and_die(bb_msg_requires_arg, arg); |
@@ -657,7 +661,7 @@ USE_FEATURE_FIND_XDEV( "-xdev", ) | |||
657 | break; | 661 | break; |
658 | if (ENABLE_FEATURE_FIND_NOT && LONE_CHAR(argv[firstopt], '!')) | 662 | if (ENABLE_FEATURE_FIND_NOT && LONE_CHAR(argv[firstopt], '!')) |
659 | break; | 663 | break; |
660 | #if ENABLE_DESKTOP | 664 | #if ENABLE_FEATURE_FIND_PAREN |
661 | if (LONE_CHAR(argv[firstopt], '(')) | 665 | if (LONE_CHAR(argv[firstopt], '(')) |
662 | break; | 666 | break; |
663 | #endif | 667 | #endif |
@@ -706,7 +710,7 @@ USE_FEATURE_FIND_XDEV( "-xdev", ) | |||
706 | 710 | ||
707 | for (i = 1; i < firstopt; i++) { | 711 | for (i = 1; i < firstopt; i++) { |
708 | if (!recursive_action(argv[i], | 712 | if (!recursive_action(argv[i], |
709 | action_recurse|(1<<dereference), /* flags */ | 713 | recurse_flags|(1<<dereference), /* flags */ |
710 | fileAction, /* file action */ | 714 | fileAction, /* file action */ |
711 | fileAction, /* dir action */ | 715 | fileAction, /* dir action */ |
712 | NULL, /* user data */ | 716 | NULL, /* user data */ |