strings: Print strings that have the minimum length

Previously, there was an off-by-one error when determining whether
to print a strings, so when the string was exactly the minimum
length, it was not printed.

This fixes a bug with an x264 configure test, which expects to find
a string of length 4 (BIGE/EBIG) to detect system endianness.
This commit is contained in:
Michael Forney 2021-01-14 21:41:59 -08:00
parent 3eb89c44aa
commit 5377a9c3d1
1 changed files with 5 additions and 7 deletions

View File

@ -23,23 +23,21 @@ strings(FILE *fp, const char *fname, size_t len)
if (r == Runeerror)
continue;
if (!isprintrune(r)) {
if (i > len)
if (i == len)
putchar('\n');
i = 0;
continue;
}
if (i < len) {
rbuf[i++] = r;
continue;
} else if (i > len) {
if (i == len) {
efputrune(&r, stdout, "<stdout>");
continue;
}
rbuf[i++] = r;
if (i < len)
continue;
printf(format, (long)off - i);
for (i = 0; i < len; i++)
efputrune(rbuf + i, stdout, "<stdout>");
efputrune(&r, stdout, "<stdout>");
i++;
}
free(rbuf);
}