From 0f88a8f3bda336c5c26341f3899ce5aa61d4db3c Mon Sep 17 00:00:00 2001 From: Jim Blandy Date: Fri, 9 Oct 1998 10:02:41 +0000 Subject: [PATCH] Change the definition of the functions in scm_ptobfuns so that they get passed the port object, not the port's stream. * ports.h (scm_ptobfuns): Rename all `stream' arguments to `port'. * gc.c (scm_gc_sweep): Pass the port itself to the free function. * genio.c (scm_putc, scm_puts, scm_lfwrite, scm_fflush, scm_getc): Pass the port itself to the scm_ptobs function. * ports.c (scm_close_port, scm_force_output, scm_flush_all_ports, scm_generic_fgets): Same. (putc_void_port, puts_void_port, write_void_port, flush_void_port, getc_void_port, fgets_void_port, close_void_port): Just change the argument names; these functions don't really do anything. * fports.c (local_fgetc, local_fgets, local_fclose, local_fflush, local_fputc, local_fputs, local_ffwrite, local_pclose): Take the port as an argument, and use SCM_STREAM to get the stdio FILE *. Also, use prototyped definitions, and get rid of the extra declarations. (scm_fptob, scm_pipob): We don't need casts here any more. * strports.c (prinstpt): Use prototype declarations. (stputc, stwrite, stputs, stgetc): Take the port as an argument, and use SCM_STREAM to get the string info. Also, use prototyped definitions, and get rid of the extra declarations. * vports.c (sfputc, sfwrite, sfputs, sfflush, sfgetc, sfclose, noop0): Same. --- libguile/gc.c | 2 +- libguile/genio.c | 10 ++++----- libguile/ports.c | 25 +++++++++++------------ libguile/strports.c | 42 +++++++++++++------------------------ libguile/vports.c | 50 +++++++++++++++------------------------------ 5 files changed, 48 insertions(+), 81 deletions(-) diff --git a/libguile/gc.c b/libguile/gc.c index ee83f6fc5..2fdf8a727 100644 --- a/libguile/gc.c +++ b/libguile/gc.c @@ -1220,7 +1220,7 @@ scm_gc_sweep () /* Yes, I really do mean scm_ptobs[k].free */ /* rather than ftobs[k].close. .close */ /* is for explicit CLOSE-PORT by user */ - (scm_ptobs[k].free) (SCM_STREAM (scmptr)); + (scm_ptobs[k].free) (scmptr); SCM_SETSTREAM (scmptr, 0); scm_remove_from_port_table (scmptr); scm_gc_ports_collected++; diff --git a/libguile/genio.c b/libguile/genio.c index 1b04a0ce9..6db2cb574 100644 --- a/libguile/genio.c +++ b/libguile/genio.c @@ -59,7 +59,7 @@ scm_putc (c, port) SCM port; { scm_sizet i = SCM_PTOBNUM (port); - SCM_SYSCALL ((scm_ptobs[i].fputc) (c, SCM_STREAM (port))); + SCM_SYSCALL ((scm_ptobs[i].fputc) (c, port)); } void @@ -68,7 +68,7 @@ scm_puts (s, port) SCM port; { scm_sizet i = SCM_PTOBNUM (port); - SCM_SYSCALL ((scm_ptobs[i].fputs) (s, SCM_STREAM (port))); + SCM_SYSCALL ((scm_ptobs[i].fputs) (s, port)); #ifdef TRANSCRIPT_SUPPORT if (scm_trans && (port == def_outp || port == cur_errp)) SCM_SYSCALL (fputs (s, scm_trans)); @@ -82,7 +82,7 @@ scm_lfwrite (ptr, size, port) SCM port; { scm_sizet i = SCM_PTOBNUM (port); - SCM_SYSCALL (scm_ptobs[i].fwrite(ptr, size, 1, SCM_STREAM (port))); + SCM_SYSCALL (scm_ptobs[i].fwrite (ptr, size, 1, port)); #ifdef TRANSCRIPT_SUPPORT if (scm_trans && (port == def_outp || port == cur_errp)) SCM_SYSCALL (fwrite (ptr, size, 1, scm_trans)); @@ -95,7 +95,7 @@ scm_fflush (port) SCM port; { scm_sizet i = SCM_PTOBNUM (port); - (scm_ptobs[i].fflush) (SCM_STREAM (port)); + (scm_ptobs[i].fflush) (port); } @@ -133,7 +133,7 @@ scm_getc (port) while (n == -1 && errno == EINTR); } #endif - SCM_SYSCALL (c = (scm_ptobs[i].fgetc) (f)); + SCM_SYSCALL (c = (scm_ptobs[i].fgetc) (port)); } if (c == '\n') diff --git a/libguile/ports.c b/libguile/ports.c index 44e61a132..223cf08c5 100644 --- a/libguile/ports.c +++ b/libguile/ports.c @@ -431,7 +431,7 @@ scm_close_port (port) SCM_DEFER_INTS; if (scm_ptobs[i].fclose) { - SCM_SYSCALL (rv = (scm_ptobs[i].fclose) (SCM_STREAM (port))); + SCM_SYSCALL (rv = (scm_ptobs[i].fclose) (port)); /* ports with a closed file descriptor can be reclosed without error. */ if (rv < 0 && errno != EBADF) scm_syserror (s_close_port); @@ -530,7 +530,7 @@ scm_force_output (port) } { scm_sizet i = SCM_PTOBNUM (port); - SCM_SYSCALL ((scm_ptobs[i].fflush) (SCM_STREAM (port))); + SCM_SYSCALL ((scm_ptobs[i].fflush) (port)); return SCM_UNSPECIFIED; } } @@ -547,7 +547,7 @@ scm_flush_all_ports (void) if (SCM_OPOUTPORTP (port)) { scm_sizet ptob = SCM_PTOBNUM (port); - (scm_ptobs[ptob].fflush) (SCM_STREAM (port)); + (scm_ptobs[ptob].fflush) (port); } } return SCM_UNSPECIFIED; @@ -605,7 +605,6 @@ scm_generic_fgets (port, len) SCM port; int *len; { - SCM f = SCM_STREAM (port); scm_sizet p = SCM_PTOBNUM (port); char *buf; @@ -637,7 +636,7 @@ scm_generic_fgets (port, len) limit *= 2; } - c = (scm_ptobs[p].fgetc) (f); + c = (scm_ptobs[p].fgetc) (port); if (c != EOF) buf[(*len)++] = c; @@ -839,19 +838,19 @@ print_void_port (SCM exp, SCM port, scm_print_state *pstate) } static int -putc_void_port (int c, SCM strm) +putc_void_port (int c, SCM port) { return 0; /* vestigial return value */ } static int -puts_void_port (char *s, SCM strm) +puts_void_port (char *s, SCM port) { return 0; /* vestigial return value */ } static scm_sizet -write_void_port (char *ptr, scm_sizet size, scm_sizet nitems, SCM strm) +write_void_port (char *ptr, scm_sizet size, scm_sizet nitems, SCM port) { int len; len = size * nitems; @@ -860,26 +859,26 @@ write_void_port (char *ptr, scm_sizet size, scm_sizet nitems, SCM strm) static int -flush_void_port (SCM strm) +flush_void_port (SCM port) { return 0; } static int -getc_void_port (SCM strm) +getc_void_port (SCM port) { return EOF; } static char * -fgets_void_port (SCM strm, int *len) +fgets_void_port (SCM port, int *len) { return NULL; } static int -close_void_port (SCM strm) +close_void_port (SCM port) { return 0; /* this is ignored by scm_close_port. */ } @@ -893,7 +892,7 @@ noop0 (SCM stream) } -static struct scm_ptobfuns void_port_ptob = +static struct scm_ptobfuns void_port_ptob = { 0, noop0, diff --git a/libguile/strports.c b/libguile/strports.c index 4e0ea1a8b..405a0ae94 100644 --- a/libguile/strports.c +++ b/libguile/strports.c @@ -59,26 +59,18 @@ */ -static int prinstpt SCM_P ((SCM exp, SCM port, scm_print_state *pstate)); - static int -prinstpt (exp, port, pstate) - SCM exp; - SCM port; - scm_print_state *pstate; +prinstpt (SCM exp, SCM port, scm_print_state *pstate) { scm_prinport (exp, port, "string"); return !0; } -static int stputc SCM_P ((int c, SCM p)); - static int -stputc (c, p) - int c; - SCM p; +stputc (int c, SCM port) { + SCM p = SCM_STREAM (port); scm_sizet ind = SCM_INUM (SCM_CAR (p)); SCM_DEFER_INTS; if (ind >= SCM_LENGTH (SCM_CDR (p))) @@ -90,15 +82,14 @@ stputc (c, p) } -static scm_sizet stwrite SCM_P ((char *str, scm_sizet siz, scm_sizet num, SCM p)); - static scm_sizet -stwrite (str, siz, num, p) - char *str; - scm_sizet siz; - scm_sizet num; - SCM p; +stwrite (char *str, + scm_sizet siz, + scm_sizet num, + SCM port) { + SCM p = SCM_STREAM (port); + scm_sizet ind = SCM_INUM (SCM_CAR (p)); scm_sizet len = siz * num; char *dst; @@ -114,24 +105,19 @@ stwrite (str, siz, num, p) } -static int stputs SCM_P ((char *s, SCM p)); - static int -stputs (s, p) - char *s; - SCM p; +stputs (char *s, SCM port) { - stwrite (s, 1, strlen (s), p); + stwrite (s, 1, strlen (s), port); return 0; } -static int stgetc SCM_P ((SCM p)); - static int -stgetc (p) - SCM p; +stgetc (SCM port) { + SCM p = SCM_STREAM (port); + scm_sizet ind = SCM_INUM (SCM_CAR (p)); if (ind >= SCM_ROLENGTH (SCM_CDR (p))) return EOF; diff --git a/libguile/vports.c b/libguile/vports.c index f873ae8df..c9b802285 100644 --- a/libguile/vports.c +++ b/libguile/vports.c @@ -81,28 +81,21 @@ prinsfpt (exp, port, pstate) */ -static int sfputc SCM_P ((int c, SCM p)); - static int -sfputc (c, p) - int c; - SCM p; +sfputc (int c, SCM port) { + SCM p = SCM_STREAM (port); + scm_apply (SCM_VELTS (p)[0], SCM_MAKICHR (c), scm_listofnull); errno = 0; return c; } -static scm_sizet sfwrite SCM_P ((char *str, scm_sizet siz, scm_sizet num, SCM p)); - static scm_sizet -sfwrite (str, siz, num, p) - char *str; - scm_sizet siz; - scm_sizet num; - SCM p; +sfwrite (char *str, scm_sizet siz, scm_sizet num, SCM port) { + SCM p = SCM_STREAM (port); SCM sstr; sstr = scm_makfromstr (str, siz * num, 0); scm_apply (SCM_VELTS (p)[1], sstr, scm_listofnull); @@ -111,24 +104,19 @@ sfwrite (str, siz, num, p) } -static int sfputs SCM_P ((char *s, SCM p)); - static int -sfputs (s, p) - char *s; - SCM p; +sfputs (char *s, SCM port) { - sfwrite (s, 1, strlen (s), p); + sfwrite (s, 1, strlen (s), port); return 0; } -static int sfflush SCM_P ((SCM stream)); - static int -sfflush (stream) - SCM stream; +sfflush (SCM port) { + SCM stream = SCM_STREAM (port); + SCM f = SCM_VELTS (stream)[2]; if (SCM_BOOL_F == f) return 0; @@ -138,12 +126,11 @@ sfflush (stream) } -static int sfgetc SCM_P ((SCM p)); - static int -sfgetc (p) - SCM p; +sfgetc (SCM port) { + SCM p = SCM_STREAM (port); + SCM ans; ans = scm_apply (SCM_VELTS (p)[3], SCM_EOL, SCM_EOL); errno = 0; @@ -154,12 +141,10 @@ sfgetc (p) } -static int sfclose SCM_P ((SCM p)); - static int -sfclose (p) - SCM p; +sfclose (SCM port) { + SCM p = SCM_STREAM (port); SCM f = SCM_VELTS (p)[4]; if (SCM_BOOL_F == f) return 0; @@ -193,11 +178,8 @@ scm_make_soft_port (pv, modes) } -static int noop0 SCM_P ((SCM stream)); - static int -noop0 (stream) - SCM stream; +noop0 (SCM port) { return 0; } -- 2.20.1