diff options
author | Mikael Djurfeldt <djurfeldt@nada.kth.se> | 1998-10-30 08:24:07 +0000 |
---|---|---|
committer | Mikael Djurfeldt <djurfeldt@nada.kth.se> | 1998-10-30 08:24:07 +0000 |
commit | 64e764482e5d9b4686e23622e7efcfe44ce45b5e (patch) | |
tree | efa74708f7bfd3f2077f942b4463592ef53d28a1 | |
parent | b8af68db8849748bb570e403a41ecbacae2e6bfb (diff) | |
download | guile-64e764482e5d9b4686e23622e7efcfe44ce45b5e.tar.gz |
* ports.c (scm_add_to_port_table, scm_remove_from_port_table):
Handle new fields.
(scm_generic_fgets), fports.c (local_fgets): Use a loop
to read unread characters. Use SCM_TRY_CLRDY instead of
SCM_CLRDY.
-rw-r--r-- | libguile/fports.c | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/libguile/fports.c b/libguile/fports.c index 4dcc997d2..3a86a047d 100644 --- a/libguile/fports.c +++ b/libguile/fports.c @@ -397,10 +397,12 @@ static int local_fgetc (SCM port) { FILE *s = (FILE *) SCM_STREAM (port); +#if 0 pre_read (port); if (feof (s)) return EOF; else +#endif return fgetc (s); } @@ -414,7 +416,9 @@ local_fgets (SCM port, int *len) char *p; /* pointer to current buffer position */ int limit = 80; /* current size of buffer */ +#if 0 pre_read (port); +#endif /* If this is a socket port or something where we can't rely on ftell to determine how much we've read, then call the generic @@ -435,11 +439,11 @@ local_fgets (SCM port, int *len) /* If a char has been pushed onto the port with scm_ungetc, read that first. */ - if (SCM_CRDYP (port)) + while (SCM_CRDYP (port)) { buf[*len] = SCM_CGETUN (port); - SCM_CLRDY (port); - if (buf[(*len)++] == '\n') + SCM_TRY_CLRDY (port); + if (buf[(*len)++] == '\n' || *len == limit - 1) { buf[*len] = '\0'; return buf; @@ -519,7 +523,9 @@ local_fputc (int c, SCM port) { FILE *fp = (FILE *) SCM_STREAM (port); +#if 0 pre_write (port); +#endif return fputc (c, fp); } @@ -527,7 +533,9 @@ static int local_fputs (char *s, SCM port) { FILE *fp = (FILE *) SCM_STREAM (port); +#if 0 pre_write (port); +#endif return fputs (s, fp); } @@ -538,7 +546,9 @@ local_ffwrite (char *ptr, SCM port) { FILE *fp = (FILE *) SCM_STREAM (port); +#if 0 pre_write (port); +#endif return ffwrite (ptr, size, nitems, fp); } |