summaryrefslogtreecommitdiff
path: root/userland
diff options
context:
space:
mode:
authorAnton Kling <anton@kling.gg>2024-06-23 12:42:37 +0200
committerAnton Kling <anton@kling.gg>2024-06-23 12:42:56 +0200
commiteb606d798b18be08e4a403132350b6dc350b522b (patch)
treedb4aa1e6ec799f9d5bf4bd8c9b71ed0dc45bedad /userland
parent5fbd9b519e082fc235a8a57c6cf761e6cefbfb62 (diff)
LibC: Include delim in getdelim if it was seen
Diffstat (limited to 'userland')
-rw-r--r--userland/libc/stdio/getdelim.c7
-rw-r--r--userland/test/test.c7
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);