sbase

suckless unix tools
git clone git://git.2f30.org/sbase.git
Log | Files | Refs | README | LICENSE

commit f4d8ff9598ed8d57bd3c73748b3077ccae4a8f88
parent 64aac9b504c23b1fdf451025ff3d0765bec6edcd
Author: sin <sin@2f30.org>
Date:   Thu Nov 20 17:38:31 +0000

Properly handle -F and -i

Diffstat:
grep.c | 17+++++++++++++----
1 file changed, 13 insertions(+), 4 deletions(-)
diff --git a/grep.c b/grep.c @@ -20,6 +20,7 @@ static int Hflag; static int eflag; static int fflag; static int hflag; +static int iflag; static int sflag; static int vflag; static int xflag; @@ -78,6 +79,7 @@ main(int argc, char *argv[]) break; case 'i': flags |= REG_ICASE; + iflag = 1; break; case 's': sflag = 1; @@ -197,10 +199,17 @@ grep(FILE *fp, const char *str) if (regexec(&pnode->preg, buf, 0, NULL, 0) ^ vflag) continue; } else { - if (!xflag) - match = strstr(buf, pnode->pattern) ? Match : NoMatch; - else - match = strcmp(buf, pnode->pattern); + if (!xflag) { + if ((iflag ? strcasestr : strstr)(buf, pnode->pattern)) + match = Match; + else + match = NoMatch; + } else { + if (!(iflag ? strcasecmp : strcmp)(buf, pnode->pattern)) + match = Match; + else + match = NoMatch; + } if (match ^ vflag) continue; }