| strings: Print strings that have the minimum length - sbase - suckless unix too… | |
| git clone git://git.suckless.org/sbase | |
| Log | |
| Files | |
| Refs | |
| README | |
| LICENSE | |
| --- | |
| commit 5377a9c3d16aefe4fc18025edb738676634c95f5 | |
| parent 3eb89c44aa788c1b122e7967f4a7a9a3b98322e9 | |
| Author: Michael Forney <[email protected]> | |
| Date: Thu, 14 Jan 2021 21:41:59 -0800 | |
| 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. | |
| Diffstat: | |
| M strings.c | 12 +++++------- | |
| 1 file changed, 5 insertions(+), 7 deletions(-) | |
| --- | |
| diff --git a/strings.c b/strings.c | |
| @@ -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); | |
| } |