summaryrefslogtreecommitdiff
path: root/xs_io.h
diff options
context:
space:
mode:
Diffstat (limited to 'xs_io.h')
-rw-r--r--xs_io.h7
1 files changed, 3 insertions, 4 deletions
diff --git a/xs_io.h b/xs_io.h
index 110b0eb..9c5018e 100644
--- a/xs_io.h
+++ b/xs_io.h
@@ -14,7 +14,7 @@ xs_val *xs_readall(FILE *f);
14xs_str *xs_readline(FILE *f) 14xs_str *xs_readline(FILE *f)
15/* reads a line from a file */ 15/* reads a line from a file */
16{ 16{
17 xs_str *s = NULL; 17 xs_str *s = xs_str_new(NULL);
18 18
19 errno = 0; 19 errno = 0;
20 20
@@ -22,12 +22,11 @@ xs_str *xs_readline(FILE *f)
22 if (!feof(f)) { 22 if (!feof(f)) {
23 int c; 23 int c;
24 24
25 s = xs_str_new(NULL);
26
27 while ((c = fgetc(f)) != EOF) { 25 while ((c = fgetc(f)) != EOF) {
28 unsigned char rc = c; 26 unsigned char rc = c;
29 27
30 s = xs_append_m(s, (char *)&rc, 1); 28 if (xs_is_string((char *)&rc))
29 s = xs_append_m(s, (char *)&rc, 1);
31 30
32 if (c == '\n') 31 if (c == '\n')
33 break; 32 break;