find: support -HLP
authorDenys Vlasenko <vda.linux@googlemail.com>
Tue, 14 May 2013 15:20:35 +0000 (17:20 +0200)
committerDenys Vlasenko <vda.linux@googlemail.com>
Tue, 14 May 2013 15:20:35 +0000 (17:20 +0200)
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
findutils/find.c

index 2235b50..d4b7c8e 100644 (file)
 //kbuild:lib-$(CONFIG_FIND) += find.o
 
 //usage:#define find_trivial_usage
-//usage:       "[PATH]... [OPTIONS] [ACTIONS]"
+//usage:       "[-HL] [PATH]... [OPTIONS] [ACTIONS]"
 //usage:#define find_full_usage "\n\n"
 //usage:       "Search for files and perform actions on them.\n"
 //usage:       "First failed action stops processing of current file.\n"
 //usage:       "Defaults: PATH is current directory, action is '-print'\n"
-//usage:     "\n       -follow         Follow symlinks"
+//usage:     "\n       -L,-follow      Follow symlinks"
+//usage:     "\n       -H              ...on command line only"
 //usage:       IF_FEATURE_FIND_XDEV(
 //usage:     "\n       -xdev           Don't descend directories on other filesystems"
 //usage:       )
@@ -1254,7 +1255,15 @@ int find_main(int argc UNUSED_PARAM, char **argv)
 
        INIT_G();
 
-       argv++;
+       /* "+": stop on first non-option */
+       i = getopt32(argv, "+HLP");
+       if (i & (1<<0))
+               G.recurse_flags |= ACTION_FOLLOWLINKS_L0 | ACTION_DANGLING_OK;
+       if (i & (1<<1))
+               G.recurse_flags |= ACTION_FOLLOWLINKS | ACTION_DANGLING_OK;
+       /* -P is default and is ignored */
+       argv += optind;
+
        for (firstopt = 0; argv[firstopt]; firstopt++) {
                if (argv[firstopt][0] == '-')
                        break;