grep: Fix exit status with -F when last line doesn't match

Test case:

if printf '%s\n' foo bar | ./grep -F foo >/dev/null ; then
	echo pass
else
	echo fail
fi
This commit is contained in:
Michael Forney 2016-05-13 23:34:51 -07:00 committed by sin
parent 8636c956d9
commit e6b3af07cf

8
grep.c
View File

@ -107,7 +107,7 @@ grep(FILE *fp, const char *str)
ssize_t len = 0; ssize_t len = 0;
long c = 0, n; long c = 0, n;
struct pattern *pnode; struct pattern *pnode;
int match = NoMatch; int match, result = NoMatch;
for (n = 1; (len = getline(&buf, &size, fp)) > 0; n++) { for (n = 1; (len = getline(&buf, &size, fp)) > 0; n++) {
/* Remove the trailing newline if one is present. */ /* Remove the trailing newline if one is present. */
@ -149,7 +149,7 @@ grep(FILE *fp, const char *str)
puts(buf); puts(buf);
break; break;
} }
match = Match; result = Match;
break; break;
} }
} }
@ -158,9 +158,9 @@ grep(FILE *fp, const char *str)
end: end:
if (ferror(fp)) { if (ferror(fp)) {
weprintf("%s: read error:", str); weprintf("%s: read error:", str);
match = Error; result = Error;
} }
return match; return result;
} }
static void static void