diff options
author | Tom Tromey <tromey@redhat.com> | 1997-10-15 17:18:32 +0000 |
---|---|---|
committer | Tom Tromey <tromey@redhat.com> | 1997-10-15 17:18:32 +0000 |
commit | b7f3516f99450ec2f0338ed1d17e28491c85de9e (patch) | |
tree | d0bfca606a3a187d20da8671282641c04e74aa61 /libguile/genio.c | |
parent | 8d6787b6dcf1480f3c67c4c9b8d4ca81b4ec0b40 (diff) | |
download | guile-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.c | 421 |
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; |