summaryrefslogtreecommitdiff
path: root/libguile/genio.c
diff options
context:
space:
mode:
authorTom Tromey <tromey@redhat.com>1997-10-15 17:18:32 +0000
committerTom Tromey <tromey@redhat.com>1997-10-15 17:18:32 +0000
commitb7f3516f99450ec2f0338ed1d17e28491c85de9e (patch)
treed0bfca606a3a187d20da8671282641c04e74aa61 /libguile/genio.c
parent8d6787b6dcf1480f3c67c4c9b8d4ca81b4ec0b40 (diff)
downloadguile-b7f3516f99450ec2f0338ed1d17e28491c85de9e.tar.gz
* Makefile.in: Rebuilt.
* Makefile.am (libguile_la_SOURCES): Removed extchrs.c, mbstrings.c. (modinclude_HEADERS): Removed extchrs.h, mbstrings.h. * unif.c (scm_vector_set_length_x): Don't handle multibyte strings. * tag.c (scm_utag_mb_string, scm_utag_mb_substring): Removed. (scm_tag): Don't handle multibyte strings. * read.c: Don't include mbstrings.h. (scm_lreadr): Don't handle multibyte ports. * kw.c: Don't include mbstrings.h. * init.c: Don't include mbstrings.h. (scm_boot_guile_1): Don't init mbstrings module. * hash.c (scm_hasher): Don't handle mbstrings. * gscm.c (gscm_run_scm): Don't init mbstrings module. * gc.c (scm_gc_mark): Don't handle mbstrings. (scm_gc_sweep): Likewise. * eval.c (SCM_CEVAL): Don't handle mbstrings. * eq.c (scm_equal_p): Use SCM_TYP7S, not SCM_TYP7SD. * tags.h (SCM_TYP7SD): Removed. (SCM_TYP7D): Removed. (scm_tc7_mb_string): Removed. (scm_tc7_mb_substring): Removed. * print.c (scm_iprin1): Handle char printing directly. Don't handle mbstrings. Don't include "mbstrings.h". * symbols.c (scm_intern_obarray_soft, scm_string_to_symbol, scm_string_to_obarray_symbol, msymbolize): Don't set symbol's multi-byte flag. Don't include "mbstrings.h". * symbols.h (SCM_SYMBOL_MULTI_BYTE_STRINGP): Removed. (SCM_SYMBOL_SLOTS): Define as 4. (SCM_ROSTRINGP): Use SCM_TYP7S, not SCM_TYP7SD. * arbiters.c, backtrace.c, debug.c, dynl.c, eval.c, fluids.c, gc.c, gsubr.c, ioext.c, kw.c, mallocs.c, numbers.c, ports.c, print.c, read.c, regex-posix.c, root.c, srcprop.c, stackchk.c, struct.c, threads.c, throw.c, unif.c, variable.c: Use new ("gen"-less) I/O function names. * ports.c (scm_add_to_port_table): Don't set port's representation. * ports.h (scm_port_representation_type): Removed. (scm_string_representation_type): Removed. (struct scm_port_table ): Removed representation field. (SCM_PORT_REPRESENTATION): Removed. (SCM_SET_PORT_REPRESENTATION): Removed. * genio.h: Use new function names. * genio.c: Don't include "extchrs.h". (scm_gen_putc, scm_gen_puts, scm_gen_write, scm_get_getc): Removed. (scm_putc, scm_puts, scm_lfwrite): No longer static. (scm_getc): No longer static; handle line and column changes. (scm_ungetc): Renamed from scm_gen_ungetc. (scm_do_read_line): Renamed from scm_gen_read_line. * libguile.h: Don't include "extchrs.h" or "mbstrings.h" * extchrs.h, extchrs.c, mbstrings.h, mbstrings.c: Removed.
Diffstat (limited to 'libguile/genio.c')
-rw-r--r--libguile/genio.c421
1 files changed, 30 insertions, 391 deletions
diff --git a/libguile/genio.c b/libguile/genio.c
index 889323e3b..328b9edd3 100644
--- a/libguile/genio.c
+++ b/libguile/genio.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995,1996 Free Software Foundation, Inc.
+/* Copyright (C) 1995,1996, 1997 Free Software Foundation, Inc.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -39,7 +39,6 @@
* whether to permit this exception to apply to your modifications.
* If you do not wish that, delete this exception notice. */
-#include "extchrs.h"
#include <stdio.h>
#include "_scm.h"
#include "chars.h"
@@ -51,11 +50,7 @@
#endif
-
-
-static void scm_putc SCM_P ((int c, SCM port));
-
-static void
+void
scm_putc (c, port)
int c;
SCM port;
@@ -64,11 +59,7 @@ scm_putc (c, port)
SCM_SYSCALL ((scm_ptobs[i].fputc) (c, SCM_STREAM (port)));
}
-
-
-static void scm_puts SCM_P ((char *s, SCM port));
-
-static void
+void
scm_puts (s, port)
char *s;
SCM port;
@@ -81,311 +72,24 @@ scm_puts (s, port)
#endif
}
-
-
-static int scm_lfwrite SCM_P ((char *ptr, scm_sizet size, scm_sizet nitems, SCM port));
-
-static int
-scm_lfwrite (ptr, size, nitems, port)
+void
+scm_lfwrite (ptr, size, port)
char *ptr;
scm_sizet size;
- scm_sizet nitems;
SCM port;
{
- int ret;
scm_sizet i = SCM_PTOBNUM (port);
- SCM_SYSCALL (ret = (scm_ptobs[i].fwrite(ptr, size, nitems, SCM_STREAM (port))));
+ SCM_SYSCALL (scm_ptobs[i].fwrite(ptr, size, 1, SCM_STREAM (port)));
#ifdef TRANSCRIPT_SUPPORT
if (scm_trans && (port == def_outp || port == cur_errp))
- SCM_SYSCALL (fwrite (ptr, size, nitems, scm_trans));
+ SCM_SYSCALL (fwrite (ptr, size, 1, scm_trans));
#endif
- return ret;
}
-
-void
-scm_gen_putc (c, port)
- int c;
- SCM port;
-{
- switch (SCM_PORT_REPRESENTATION (port))
- {
- case scm_regular_port:
- {
- /* Nothing good to do with extended chars here...
- * just truncate them.
- */
- scm_putc ((unsigned char)c, port);
- break;
- }
-
- case scm_mb_port:
- {
- char buf[256];
- int len;
-
- SCM_ASSERT (XMB_CUR_MAX < sizeof (buf), SCM_MAKICHR (c),
- "huge translation", "scm_gen_putc");
-
- len = xwctomb (buf, c);
-
- SCM_ASSERT ((len >= 0), SCM_MAKICHR (c), "bogus character", "scm_gen_putc");
-
- if (len == 0)
- scm_putc (0, port);
- else
- {
- int x;
- for (x = 0; x < len; ++x)
- scm_putc (buf[x], port);
- }
- break;
- }
-
- case scm_wchar_port:
- {
- scm_putc (((unsigned char)(c >> 8) & 0xff), port);
- scm_putc ((unsigned char)(c & 0xff), port);
- break;
- }
- }
-}
-
-
-
-
-
-
-void
-scm_gen_puts (rep, str_data, port)
- enum scm_string_representation_type rep;
- char *str_data;
- SCM port;
-{
- switch (rep)
- {
-
- case scm_regular_string:
- switch (SCM_PORT_REPRESENTATION (port))
- {
- case scm_regular_port:
- case scm_mb_port:
- scm_puts (str_data, port);
- return;
- case scm_wchar_port:
- {
- while (*str_data)
- {
- scm_putc (0, port);
- scm_putc (*str_data, port);
- ++str_data;
- }
- return;
- }
- }
-
- case scm_mb_string:
- switch (SCM_PORT_REPRESENTATION (port))
- {
- case scm_regular_port:
- case scm_mb_port:
- scm_puts (str_data, port);
- return;
- case scm_wchar_port:
- {
- xwchar_t output;
- int len;
- int size;
-
- size = strlen (str_data);
- while (size)
- {
- len = xmbtowc (&output, str_data, size);
- SCM_ASSERT ((len > 0), SCM_MAKINUM (*str_data),
- "bogus character", "scm_gen_puts");
- scm_putc ((output >> 8) & 0xff, port);
- scm_putc (output & 0xff, port);
- size -= len;
- str_data += len;
- }
- return;
- }
- }
-
- case scm_wchar_string:
- {
- xwchar_t * wstr_data;
-
- wstr_data = (xwchar_t *) str_data;
- switch (SCM_PORT_REPRESENTATION (port))
- {
- case scm_regular_port:
- while (*wstr_data)
- {
- scm_putc ((unsigned char) *wstr_data, port);
- ++wstr_data;
- }
- return;
-
- case scm_mb_port:
- {
- char buf[256];
- SCM_ASSERT (XMB_CUR_MAX < sizeof (buf), SCM_BOOL_F,
- "huge translation", "scm_gen_puts");
-
- while (*wstr_data)
- {
- int len;
-
- len = xwctomb (buf, *wstr_data);
-
- SCM_ASSERT ((len > 0), SCM_MAKINUM (*wstr_data), "bogus character", "scm_gen_puts");
-
- {
- int x;
- for (x = 0; x < len; ++x)
- scm_putc (buf[x], port);
- }
- ++wstr_data;
- }
- return;
- }
-
- case scm_wchar_port:
- {
- int len;
- for (len = 0; wstr_data[len]; ++len)
- ;
- scm_lfwrite (str_data, sizeof (xwchar_t), len, port);
- return;
- }
- }
- }
- }
-}
-
-
-
-
-
-void
-scm_gen_write (rep, str_data, nitems, port)
- enum scm_string_representation_type rep;
- char *str_data;
- scm_sizet nitems;
- SCM port;
-{
- /* is nitems bytes or characters in the mb_string case? */
-
- switch (rep)
- {
- case scm_regular_string:
- switch (SCM_PORT_REPRESENTATION (port))
- {
- case scm_regular_port:
- case scm_mb_port:
- scm_lfwrite (str_data, 1, nitems, port);
- return;
- case scm_wchar_port:
- {
- while (nitems)
- {
- scm_putc (0, port);
- scm_putc (*str_data, port);
- ++str_data;
- --nitems;
- }
- return;
- }
- }
-
- case scm_mb_string:
- switch (SCM_PORT_REPRESENTATION (port))
- {
- case scm_regular_port:
- case scm_mb_port:
- scm_lfwrite (str_data, 1, nitems, port);
- return;
-
- case scm_wchar_port:
- {
- xwchar_t output;
- int len;
-
- while (nitems)
- {
- len = xmbtowc (&output, str_data, nitems);
- SCM_ASSERT ((len > 0), SCM_MAKINUM (*str_data), "bogus character", "scm_gen_puts");
- scm_putc ((output >> 8) & 0xff, port);
- scm_putc (output & 0xff, port);
- nitems -= len;
- str_data += len;
- }
- return;
- }
- }
-
- case scm_wchar_string:
- {
- xwchar_t * wstr_data;
-
- wstr_data = (xwchar_t *) str_data;
- switch (SCM_PORT_REPRESENTATION (port))
- {
- case scm_regular_port:
- while (nitems)
- {
- scm_putc ((unsigned char) *wstr_data, port);
- ++wstr_data;
- --nitems;
- }
- return;
-
- case scm_mb_port:
- {
- char buf[256];
- SCM_ASSERT (XMB_CUR_MAX < sizeof (buf), SCM_BOOL_F,
- "huge translation", "scm_gen_puts");
-
- while (nitems)
- {
- int len;
-
- len = xwctomb (buf, *wstr_data);
-
- SCM_ASSERT ((len > 0), SCM_MAKINUM (*wstr_data), "bogus character", "scm_gen_puts");
-
- {
- int x;
- for (x = 0; x < len; ++x)
- scm_putc (buf[x], port);
- }
- ++wstr_data;
- --nitems;
- }
- return;
- }
-
- case scm_wchar_port:
- {
- scm_lfwrite (str_data, sizeof (xwchar_t), nitems, port);
- return;
- }
- }
- }
- }
-}
-
-
-
-
-
-static int scm_getc SCM_P ((SCM port));
-
-static int
+int
scm_getc (port)
SCM port;
{
@@ -393,107 +97,42 @@ scm_getc (port)
int c;
scm_sizet i;
- f = SCM_STREAM (port);
- i = SCM_PTOBNUM (port);
- SCM_SYSCALL (c = (scm_ptobs[i].fgetc) (f));
- return c;
-}
-
-
-int
-scm_gen_getc (port)
- SCM port;
-{
- int c;
-
/* One char may be stored in the high bits of (car port) orre@nada.kth.se. */
if (SCM_CRDYP (port))
{
c = SCM_CGETUN (port);
- SCM_CLRDY (port); /* Clear ungetted char */
-
- return_c:
- if (c == '\n')
- {
- SCM_INCLINE (port);
- }
- else if (c == '\t')
- {
- SCM_TABCOL (port);
- }
- else
- {
- SCM_INCCOL (port);
- }
- return c;
+ SCM_CLRDY (port); /* Clear ungetted char */
}
-
-
- switch (SCM_PORT_REPRESENTATION (port))
+ else
{
- case scm_regular_port:
- c = scm_getc (port);
- goto return_c;
-
- case scm_mb_port:
- {
- int x;
- char buf[256];
-
- SCM_ASSERT (XMB_CUR_MAX < sizeof (buf), SCM_BOOL_F,
- "huge translation", "scm_gen_puts");
-
- x = 0;
- while (1)
- {
- xwchar_t out;
- c = scm_getc (port);
-
- if (c == EOF)
- return EOF;
-
- buf[x] = c;
-
- if (xmbtowc (&out, buf, x + 1) > 0)
- {
- c = out;
- goto return_c;
- }
-
- SCM_ASSERT (x < sizeof (buf), SCM_BOOL_F,
- "huge translation", "scm_gen_getc");
- ++x;
- }
- }
-
-
- case scm_wchar_port:
- {
- int hi;
- int lo;
- hi = scm_getc (port);
- lo = (hi == EOF
- ? EOF
- : scm_getc (port));
- c = ((hi == EOF)
- ? EOF
- : ((hi << 8) | lo));
- goto return_c;
- }
-
+ f = SCM_STREAM (port);
+ i = SCM_PTOBNUM (port);
+ SCM_SYSCALL (c = (scm_ptobs[i].fgetc) (f));
+ }
- default:
- return EOF;
+ if (c == '\n')
+ {
+ SCM_INCLINE (port);
+ }
+ else if (c == '\t')
+ {
+ SCM_TABCOL (port);
+ }
+ else
+ {
+ SCM_INCCOL (port);
}
+
+ return c;
}
void
-scm_gen_ungetc (c, port)
+scm_ungetc (c, port)
int c;
SCM port;
{
-/* SCM_ASSERT(!SCM_CRDYP(port), port, SCM_ARG2, "too many scm_gen_ungetc");*/
+/* SCM_ASSERT(!SCM_CRDYP(port), port, SCM_ARG2, "too many scm_ungetc");*/
SCM_CUNGET (c, port);
if (c == '\n')
{
@@ -508,7 +147,7 @@ scm_gen_ungetc (c, port)
char *
-scm_gen_read_line (port)
+scm_do_read_line (port)
SCM port;
{
char *s;