commit f5f93394a48918ca95dca2246895dd50768471c2
parent 69588af1bd539112218193a151eecb929375a4ff
Author: vaplv <vaplv@free.fr>
Date: Tue, 8 Feb 2022 14:31:27 +0100
Fix the text_reader when the comment char is '\0'
Diffstat:
3 files changed, 20 insertions(+), 5 deletions(-)
diff --git a/src/test_text_reader.c b/src/test_text_reader.c
@@ -121,6 +121,21 @@ main(int argc, char** argv)
CHK(txtrdr_get_line(txtrdr) == NULL);
txtrdr_ref_put(txtrdr);
+ stream = freopen(filename, "w+", stream);
+ CHK(stream);
+ fprintf(stream, " AAAA\nbbb\n");
+ rewind(stream);
+ CHK(txtrdr_stream(&allocator, stream, stream_name, 0, &txtrdr) == RES_OK);
+ CHK(txtrdr_read_line(txtrdr) == RES_OK);
+ CHK(txtrdr_get_line(txtrdr) != NULL);
+ CHK(!strcmp(txtrdr_get_line(txtrdr), " AAAA"));
+ CHK(txtrdr_read_line(txtrdr) == RES_OK);
+ CHK(txtrdr_get_line(txtrdr) != NULL);
+ CHK(!strcmp(txtrdr_get_line(txtrdr), "bbb"));
+ CHK(txtrdr_read_line(txtrdr) == RES_OK);
+ CHK(txtrdr_get_line(txtrdr) == NULL);
+ txtrdr_ref_put(txtrdr);
+
fclose(stream);
check_memory_allocator(&allocator);
mem_shutdown_proxy_allocator(&allocator);
diff --git a/src/text_reader.c b/src/text_reader.c
@@ -83,9 +83,9 @@ txtrdr_stream
txtrdr->allocator = allocator;
txtrdr->stream = stream;
txtrdr->nlines = 0;
- txtrdr->reject[0] = comment;
- txtrdr->reject[1] = '\n';
- txtrdr->reject[2] = '\r';
+ txtrdr->reject[0] = '\n';
+ txtrdr->reject[1] = '\r';
+ txtrdr->reject[2] = comment;
txtrdr->reject[3] = '\0'; /* Finalize the string */
res = str_set(&txtrdr->name, name ? name : "<null>");
diff --git a/src/text_reader.h b/src/text_reader.h
@@ -27,7 +27,7 @@ RSYS_API res_T
txtrdr_file
(struct mem_allocator* allocator, /* May be NULL <=> default allocator */
const char* filename,
- const char comment, /* Char preceeding a comment */
+ const char comment, /* Char preceeding a comment. 0 <=> no comment char */
struct txtrdr** txtrdr);
RSYS_API res_T
@@ -35,7 +35,7 @@ txtrdr_stream
(struct mem_allocator* allocator, /* May be NULL <=> default allocator */
FILE* stream,
const char* name, /* Stream name. May be NULL */
- const char comment, /* Char preceeding a comment */
+ const char comment, /* Char preceeding a comment. 0 <=> no comment char */
struct txtrdr** txtrdr);
RSYS_API void