diff options
author | Anton Kling <anton@kling.gg> | 2024-06-23 12:42:37 +0200 |
---|---|---|
committer | Anton Kling <anton@kling.gg> | 2024-06-23 12:42:56 +0200 |
commit | eb606d798b18be08e4a403132350b6dc350b522b (patch) | |
tree | db4aa1e6ec799f9d5bf4bd8c9b71ed0dc45bedad /userland | |
parent | 5fbd9b519e082fc235a8a57c6cf761e6cefbfb62 (diff) |
LibC: Include delim in getdelim if it was seen
Diffstat (limited to 'userland')
-rw-r--r-- | userland/libc/stdio/getdelim.c | 7 | ||||
-rw-r--r-- | userland/test/test.c | 7 |
2 files changed, 7 insertions, 7 deletions
diff --git a/userland/libc/stdio/getdelim.c b/userland/libc/stdio/getdelim.c index 3a6f23e..606a545 100644 --- a/userland/libc/stdio/getdelim.c +++ b/userland/libc/stdio/getdelim.c @@ -10,10 +10,6 @@ size_t getdelim(char **lineptr, size_t *n, int delimiter, FILE *stream) { for (;;) { char c; if (0 == fread(&c, 1, 1, stream)) { - s++; - break; - } - if (c == delimiter) { break; } if (s + 1 >= *n) { @@ -22,6 +18,9 @@ size_t getdelim(char **lineptr, size_t *n, int delimiter, FILE *stream) { } (*lineptr)[s] = c; s++; + if (c == delimiter) { + break; + } } (*lineptr)[s] = '\0'; return s; diff --git a/userland/test/test.c b/userland/test/test.c index 28e84d9..9013f1e 100644 --- a/userland/test/test.c +++ b/userland/test/test.c @@ -723,15 +723,16 @@ void getline_test(void) { size_t n; n = 256; getline(&line_buffer, &n, fp); - assert(0 == strcmp("line1", line_buffer)); + assert(0 == strcmp("line1\n", line_buffer)); n = 256; getline(&line_buffer, &n, fp); - assert(0 == strcmp("line2", line_buffer)); + assert(0 == strcmp("line2\n", line_buffer)); n = 256; getline(&line_buffer, &n, fp); - assert(0 == strcmp("foo", line_buffer)); + assert(0 == strcmp("foo\n", line_buffer)); n = 256; getline(&line_buffer, &n, fp); + printf("line_buffer: %s\n", line_buffer); assert(0 == strcmp("bar", line_buffer)); } free(buffer); |