In order to improve compatibility with GNU grep improve support for long
options to busybox grep.

Signed-off-by: Walter Lozano <[email protected]>

---

Changes in v2:
- Decouple FEATURE_GREP_CONTEXT from LONG_OPTS.

 findutils/grep.c | 43 +++++++++++++++++++++++++++++++++++++++++--
 1 file changed, 41 insertions(+), 2 deletions(-)

diff --git a/findutils/grep.c b/findutils/grep.c
index 0b72812f1..4ae070a01 100644
--- a/findutils/grep.c
+++ b/findutils/grep.c
@@ -720,17 +720,56 @@ int grep_main(int argc UNUSED_PARAM, char **argv)
 
        /* do normal option parsing */
 #if ENABLE_FEATURE_GREP_CONTEXT
+#if !ENABLE_LONG_OPTS
        /* -H unsets -h; -C unsets -A,-B */
-       opts = getopt32long(argv, "^"
+       opts = getopt32(argv, "^"
                OPTSTR_GREP
                        "\0"
                        "H-h:C-AB",
-               "color\0" Optional_argument "\xff",
                &pattern_head, &fopt, &max_matches,
                &lines_after, &lines_before, &Copt
                , NULL
        );
+#else
+       static const char grep_longopts[] ALIGN1 =
+               "with-filename\0"        No_argument         "H"
+               "no-filename\0"          No_argument         "h"
+               "line-number\0"          No_argument         "n"
+               "files-without-match\0"  No_argument         "L"
+               "files-with-matches\0"   No_argument         "l"
+               "count\0"                No_argument         "c"
+               "only-matching\0"        No_argument         "o"
+               "quiet\0"                No_argument         "q"
+               "silent\0"               No_argument         "q"
+               "invert-match\0"         No_argument         "v"
+               "no-messages\0"          No_argument         "s"
+               "recursive\0"            No_argument         "r"
+               "ignore-case\0"          No_argument         "i"
+               "word-regexp\0"          No_argument         "w"
+               "line-regexp\0"          No_argument         "x"
+               "fixed-strings\0"        No_argument         "F"
+               "extended-regexp\0"      No_argument         "E"
+               "null-data\0"            No_argument         "z"
+               "max-count\0"            Required_argument   "m"
+               "after-context\0"        Required_argument   "A"
+               "before-context\0"       Required_argument   "B"
+               "context\0"              Required_argument   "C"
+               "regexp\0"               Required_argument   "e"
+               "file\0"                 Required_argument   "f"
+               "color\0"                Optional_argument   "\xff"
+               ;
 
+       /* -H unsets -h; -C unsets -A,-B */
+       opts = getopt32long(argv, "^"
+               OPTSTR_GREP
+                       "\0"
+                       "H-h:C-AB",
+               grep_longopts,
+               &pattern_head, &fopt, &max_matches,
+               &lines_after, &lines_before, &Copt
+               , NULL
+       );
+#endif
        if (opts & OPT_C) {
                /* -C unsets prev -A and -B, but following -A or -B
                 * may override it */
-- 
2.25.1

_______________________________________________
busybox mailing list
[email protected]
http://lists.busybox.net/mailman/listinfo/busybox

Reply via email to