Hi, previously egrep/fgrep shows as egrep/fgrep in ps output, now it shows as 'grep -E'/'grep -F'. Personally I don't see much problem in it, but I received some bug reports regarding it downstream. My question is, what about using symlinks for egrep/fgrep and something similar to the attached patch? Or are scripts used to support platforms without symlinks? Or is there different reason for script usage?
thanks & regards Jaroslav
diff --git a/src/grep.c b/src/grep.c --- a/src/grep.c +++ b/src/grep.c @@ -26,6 +26,7 @@ #include <fcntl.h> #include <inttypes.h> #include <stdio.h> +#include <string.h> #include "system.h" #include "argmatch.h" @@ -1938,6 +1939,7 @@ fgrep_to_grep_pattern (size_t len, char const *keys, int main (int argc, char **argv) { + char *ptr_c; char *keys; size_t keycc, oldcc, keyalloc; bool with_filenames; @@ -1984,6 +1986,19 @@ main (int argc, char **argv) compile = matchers[0].compile; execute = matchers[0].execute; + /* Check if executed through symlinks egrep/fgrep */ + if (argv[0] != NULL) + { + ptr_c = strchrnul(argv[0], ' '); + if (ptr_c - argv[0] >= 5) + { + if (strncmp(ptr_c - 5, "egrep", 5) == 0) + setmatcher ("egrep"); + else if (strncmp(ptr_c - 5, "fgrep", 5) == 0) + setmatcher ("fgrep"); + } + } + while (prev_optind = optind, (opt = get_nondigit_option (argc, argv, &default_context)) != -1) switch (opt)