bpt/guile.git
24 years ago* image-type.c: Updated example to use scm_make_smob_type_mfpe,
Mikael Djurfeldt [Wed, 7 Jul 1999 09:41:38 +0000 (09:41 +0000)]
* image-type.c:  Updated example to use scm_make_smob_type_mfpe,
SCM_RETURN_NEWSMOB, SCM_NEWSMOB function and macros.

24 years ago* data-rep.texi: Updated SMOB docs to talk about
Mikael Djurfeldt [Wed, 7 Jul 1999 09:40:28 +0000 (09:40 +0000)]
* data-rep.texi: Updated SMOB docs to talk about
scm_make_smob_type_mfpe, SCM_RETURN_NEWSMOB, SCM_NEWSMOB function
and macros.

24 years ago1999-07-04 Gary Houston <ghouston@easynet.co.uk>
Gary Houston [Sun, 4 Jul 1999 11:50:54 +0000 (11:50 +0000)]
1999-07-04  Gary Houston  <ghouston@easynet.co.uk>
* unif.c (scm_uniform_array_write): likewise.
* ioext.c (scm_redirect_port): likewise.
* ports.c (scm_putc): call scm_read_flush.
(scm_puts): likewise.
(scm_lfwrite): likewise.
(scm_lseek): likewise.
(scm_ftruncate): likewise.
* ports.c (scm_fill_buffer): don't take pt argument.  change callers.
(read_flush_void_port): new proc, for void port ptob.
* vports.c (sf_read_flush): likewise.
* strports.c (st_read_flush): take offset arg.
* fports.c (local_read_flush): use offset, don't reset putback
buffer here.
* ports.h (scm_ptobfuns): let read_flush take an offset argument,
which is the number of chars from the putback buffer.
* ports.c (scm_read_flush): new procedure, resets the putback
buffer before calling the ptob routine.

24 years ago1999-07-04 Gary Houston <ghouston@easynet.co.uk>
Gary Houston [Sun, 4 Jul 1999 11:02:21 +0000 (11:02 +0000)]
1999-07-04  Gary Houston  <ghouston@easynet.co.uk>
* strports.c (scm_strprint_obj): bug fix: get pt from the port,
not from the parameter obj.  (Thanks to Eric Moore.)
* ports.h: SCM_CRDY, SCM_CUC, SCM_CRDYP, SCM_SETRDY, SCM_CUNGET,
SCM_CGETUN, SCM_CLRDY, SCM_TRY_CLRDY, SCM_N_READY_CHARS: deleted.
* strings.c (scm_make_string): throw error if 2nd arg isn't
a char.
* unif.c (scm_uniform_array_read_x): fix reading from a port.
allow non-fports.
(scm_uniform_array_write): likewise.
1999-06-29  Gary Houston  <ghouston@easynet.co.uk>
* ports.c (scm_drain_input): rewritten.
* fports.c (local_fclose): check putback_buf.
(local_read_flush): likewise.
* ports.c (scm_remove_from_port_table): maybe free putback_buf.
* ports.h (scm_port): replace cbuf/cbufend/cp with putback_buf/
putback_buf_size.
(SCM_INITIAL_PUTBACK_BUF_SIZE): renamed from SCM_INITIAL_CBUF_SIZE.
* ports.c (scm_grow_port_cbuf): deleted.
(scm_add_to_port_table): initialise putback_buf to 0.  remove cbuf
stuff.
(scm_char_ready_p): check putback_buf
(scm_fill_buffer): likewise.
(scm_ungetc): rewritten.
1999-06-27  Gary Houston  <ghouston@easynet.co.uk>
* fports.c (local_fclose): account for push-back buffer.
* ports.c (scm_char_ready_p): check the push-back buffer in
a new way.
* ioext.c (scm_do_read_line): remove the extra code to handle
the push-back buffer.
* ports.c (scm_getc): don't use SCM_CRDYP etc.
* ioext.c (scm_do_read_line): call scm_fill_buffer.
* ports.c (scm_ungetc): don't call SCM_CUNGET.  reset the
read buffer pointers.
scm_fill_buffer: new procedure.
(scm_getc): call scm_fill_buffer.
* ports.h (struct scm_port): saved_read_buf, saved_read_pos,
saved_read_end: new fields.
1999-07-04  Gary Houston  <ghouston@easynet.co.uk>
* configure.in: don't check for ways to violate stdio abstraction.

24 years agonever finished
Jim Blandy [Wed, 30 Jun 1999 09:27:12 +0000 (09:27 +0000)]
never finished

24 years ago*** empty log message ***
Mikael Djurfeldt [Tue, 29 Jun 1999 10:36:08 +0000 (10:36 +0000)]
*** empty log message ***

24 years ago* readline.scm: Bugfix: Avoid getting the continued-lines prompt
Mikael Djurfeldt [Tue, 29 Jun 1999 10:35:36 +0000 (10:35 +0000)]
* readline.scm: Bugfix: Avoid getting the continued-lines prompt
at multiple calls to read.
(promtp2): Variable for continued-lines prompt.
(make-readline-port): Use prompt2.
(set-readline-prompt!): New optional arg which sets
continued-lines prompt.

24 years ago* boot-9.scm (top-repl): Set/clear readline prompts before/after
Mikael Djurfeldt [Tue, 29 Jun 1999 10:35:06 +0000 (10:35 +0000)]
* boot-9.scm (top-repl): Set/clear readline prompts before/after
reading expressions.

24 years ago*** empty log message ***
Mikael Djurfeldt [Wed, 23 Jun 1999 16:00:30 +0000 (16:00 +0000)]
*** empty log message ***

24 years ago* dynl-dl.c (sysdep_dynl_link): Added parenthesis around the
Mikael Djurfeldt [Wed, 23 Jun 1999 16:00:15 +0000 (16:00 +0000)]
* dynl-dl.c (sysdep_dynl_link): Added parenthesis around the
trinary conditional in order for the flag computation to be
correct.

24 years ago*** empty log message ***
Mikael Djurfeldt [Wed, 23 Jun 1999 12:01:04 +0000 (12:01 +0000)]
*** empty log message ***

24 years ago*** empty log message ***
Mikael Djurfeldt [Wed, 23 Jun 1999 11:19:45 +0000 (11:19 +0000)]
*** empty log message ***

24 years ago* tag.c (scm_tag): Base tag on vtable pointer.
Mikael Djurfeldt [Wed, 23 Jun 1999 11:19:25 +0000 (11:19 +0000)]
* tag.c (scm_tag): Base tag on vtable pointer.

24 years ago* struct.c, struct.h:
Mikael Djurfeldt [Wed, 23 Jun 1999 11:17:36 +0000 (11:17 +0000)]
* struct.c, struct.h:
(scm_struct_i_free): New hidden struct slot.  Holds destructor for
instances to this vtable.
(scm_struct_free_0): New destructor: Doesn't deallocate data.
(scm_struct_free_light): New destructor: Deallocates a light
struct (i.e. a struct without hidden slots).
(scm_struct_free_standard): New destructor: Deallocates standard
structs.
(scm_struct_free_entity): New destructor: Deallocates entity
structs.
(SCM_SET_VTABLE_DESTRUCTOR): New macro.
Changes to hidden slots:
(scm_struct_i_size): scm_struct_i_flags now shares space with
scm_struct_i_size which holds the size of light structs.
(scm_struct_i_n_words): This slot has changed meaning.  Previously
it included hidden slots.  Now it indicates visible slots.
(scm_alloc_struct): Clear flags.
(SCM_STRUCTF_MASK): 4 new flag positions added => 12 bits.
(struct_num, scm_struct_i_tag): Removed.
(scm_struct_vtable_tag): Base tag on the pointer to mallocated
memory.
(scm_struct_ihashq): Base hash value on pointer to struct handle.

24 years ago* snarf.h (SCM_KEYWORD, SCM_GLOBAL_KEYWORD): New macros.
Mikael Djurfeldt [Wed, 23 Jun 1999 11:16:52 +0000 (11:16 +0000)]
* snarf.h (SCM_KEYWORD, SCM_GLOBAL_KEYWORD): New macros.

24 years ago* objects.h (SCM_SET_CLASS_DESTRUCTOR,
Mikael Djurfeldt [Wed, 23 Jun 1999 11:16:44 +0000 (11:16 +0000)]
* objects.h (SCM_SET_CLASS_DESTRUCTOR,
SCM_SET_CLASS_INSTANCE_SIZE): New macros.

24 years ago* objects.c (scm_init_objects): Initialize destructor slot of the
Mikael Djurfeldt [Wed, 23 Jun 1999 11:16:28 +0000 (11:16 +0000)]
* objects.c (scm_init_objects): Initialize destructor slot of the
primordial entity class.

24 years ago* libguile.h: #include "objects.h"
Mikael Djurfeldt [Wed, 23 Jun 1999 11:16:18 +0000 (11:16 +0000)]
* libguile.h: #include "objects.h"

24 years ago* keywords.c, keywords.h (scm_c_make_keyword): New function.
Mikael Djurfeldt [Wed, 23 Jun 1999 11:16:09 +0000 (11:16 +0000)]
* keywords.c, keywords.h (scm_c_make_keyword): New function.
(We should remove the use of the prefix '-'.)

24 years ago* gc.c (scm_gc_sweep): Call struct free slot.
Mikael Djurfeldt [Wed, 23 Jun 1999 11:15:58 +0000 (11:15 +0000)]
* gc.c (scm_gc_sweep): Call struct free slot.

24 years ago*** empty log message ***
Marius Vollmer [Mon, 21 Jun 1999 15:18:48 +0000 (15:18 +0000)]
*** empty log message ***

24 years agoResolved harmless conflict.
Marius Vollmer [Mon, 21 Jun 1999 15:16:54 +0000 (15:16 +0000)]
Resolved harmless conflict.

24 years ago* dynl.c (DYNL_GLOBAL): New.
Marius Vollmer [Mon, 21 Jun 1999 15:14:01 +0000 (15:14 +0000)]
* dynl.c (DYNL_GLOBAL): New.
(sysdep_dynl_link): Added `flags' argument.
(kw_global, sym_global): New.
(scm_dynamic_link): Handle keyword arguments.  Pass suitable flags
to sysdep_dynl_link.
* dynl-dl.c (sysdep_dynl_link): Handle new `flags' argument by
conditrionally adding RTLD_GLOBAL to DLOPEN_MODES.
* dynl-shl.c (sysdep_dynl_link): Add and ignore new flags
argument.
* dynl-dld.c (sysdep_dynl_link): Add and ignore new flags
argument.
* dynl.h (scm_dynamic_link): Added rest argument.
* dynl.c (sysdep_dynl_unlink, sysdep_dynl_func): Use const
qualifier for char* argument, to match prototypes.  Thanks to Mark
Elbrecht.

24 years ago*** empty log message ***
Jim Blandy [Mon, 21 Jun 1999 14:50:36 +0000 (14:50 +0000)]
*** empty log message ***

24 years ago* dynl.c (no_dynl_error, sysdep_dynl_link, sysdep_dynl_unlink,
Jim Blandy [Mon, 21 Jun 1999 14:50:19 +0000 (14:50 +0000)]
* dynl.c (no_dynl_error, sysdep_dynl_link, sysdep_dynl_unlink,
sysdep_dynl_func): Use ANSI declarations, and const char *
pointers.  (Thanks to Mark Elbrecht.)

25 years ago*** empty log message ***
Jim Blandy [Sat, 19 Jun 1999 20:21:25 +0000 (20:21 +0000)]
*** empty log message ***

25 years agoPatch from Greg Harvey:
Jim Blandy [Sat, 19 Jun 1999 20:21:07 +0000 (20:21 +0000)]
Patch from Greg Harvey:
* eq.c, eval.c, list.c, ramap.c, vectors.c: Always write parens
around the condition of an `if', `while', etc., even if the
condition is a macro invocation that expands to something
surrounded by parens.  It's more readable.

25 years ago*** empty log message ***
Jim Blandy [Sat, 19 Jun 1999 17:27:01 +0000 (17:27 +0000)]
*** empty log message ***

25 years ago*** empty log message ***
Jim Blandy [Sat, 19 Jun 1999 17:26:09 +0000 (17:26 +0000)]
*** empty log message ***

25 years ago* eval.c (scm_map, scm_for_each): Verify that all arguments are
Jim Blandy [Sat, 19 Jun 1999 17:25:25 +0000 (17:25 +0000)]
* eval.c (scm_map, scm_for_each): Verify that all arguments are
proper lists, and of the appropriate lengths.
(check_map_args): New function.

25 years ago*** empty log message ***
Jim Blandy [Sat, 19 Jun 1999 16:28:17 +0000 (16:28 +0000)]
*** empty log message ***

25 years ago* tests/interp.test: New file.
Jim Blandy [Sat, 19 Jun 1999 16:28:11 +0000 (16:28 +0000)]
* tests/interp.test: New file.

25 years ago*** empty log message ***
Jim Blandy [Sat, 19 Jun 1999 16:11:55 +0000 (16:11 +0000)]
*** empty log message ***

25 years ago* guardians.c (guardian_t): `next' - new field to be used for
Jim Blandy [Sat, 19 Jun 1999 16:11:38 +0000 (16:11 +0000)]
* guardians.c (guardian_t): `next' - new field to be used for
chaining the live guardians in a single-linked list during the GC
mark phase.
(GUARDIAN_NEXT): convenience macro to access the `next' field.
(guardians, guardians_size, n_guardians): deleted.
(first_live_guardian, current_link_field): new globals used to
point to the head of the live guardian list and current `next'
field, respectively.
(g_mark): append the guardian to the live guardian list.
(scm_guardian_gc_init): zero the live guardian list.
(scm_guardian_zombify): iterate through the live guardian list.

25 years agoRemove spurious menu.
Jim Blandy [Sat, 19 Jun 1999 11:02:18 +0000 (11:02 +0000)]
Remove spurious menu.

25 years ago*** empty log message ***
Jim Blandy [Fri, 18 Jun 1999 10:16:40 +0000 (10:16 +0000)]
*** empty log message ***

25 years ago* ls.scm (ls, lls): Handle no arguments as meaning to look in
Jim Blandy [Fri, 18 Jun 1999 10:16:10 +0000 (10:16 +0000)]
* ls.scm (ls, lls): Handle no arguments as meaning to look in
`(current-module)'. (Patch from Thien-Thi Nguyen.)

25 years ago(A Common Mistake In Allocating Smobs): New section.
Jim Blandy [Thu, 17 Jun 1999 22:52:01 +0000 (22:52 +0000)]
(A Common Mistake In Allocating Smobs): New section.

25 years ago*** empty log message ***
Jim Blandy [Wed, 16 Jun 1999 13:20:43 +0000 (13:20 +0000)]
*** empty log message ***

25 years ago*** empty log message ***
Jim Blandy [Wed, 16 Jun 1999 10:18:34 +0000 (10:18 +0000)]
*** empty log message ***

25 years ago* gc.c (scm_mallocated): Just make this signed.
Jim Blandy [Wed, 16 Jun 1999 10:18:27 +0000 (10:18 +0000)]
* gc.c (scm_mallocated): Just make this signed.
(scm_igc): Check for underflow by seeing if this is negative.
Much cleaner.
* gc.h (scm_mallocated): Fix declaration.
(Thanks to Greg Harvey.)

25 years ago*** empty log message ***
Jim Blandy [Wed, 16 Jun 1999 09:57:52 +0000 (09:57 +0000)]
*** empty log message ***

25 years agoDoc fix.
Jim Blandy [Wed, 16 Jun 1999 09:05:55 +0000 (09:05 +0000)]
Doc fix.

25 years ago*** empty log message ***
Jim Blandy [Wed, 16 Jun 1999 09:00:35 +0000 (09:00 +0000)]
*** empty log message ***

25 years ago* ports.h: #include <sys/types.h>, to get a definition for `off_t'.
Jim Blandy [Wed, 16 Jun 1999 08:53:46 +0000 (08:53 +0000)]
* ports.h: #include <sys/types.h>, to get a definition for `off_t'.

25 years ago*** empty log message ***
Jim Blandy [Wed, 16 Jun 1999 08:44:24 +0000 (08:44 +0000)]
*** empty log message ***

25 years ago*** empty log message ***
Jim Blandy [Tue, 15 Jun 1999 14:10:06 +0000 (14:10 +0000)]
*** empty log message ***

25 years ago* tests/time.test: New test file.
Jim Blandy [Tue, 15 Jun 1999 14:09:53 +0000 (14:09 +0000)]
* tests/time.test: New test file.

25 years ago*** empty log message ***
Jim Blandy [Tue, 15 Jun 1999 14:01:25 +0000 (14:01 +0000)]
*** empty log message ***

25 years ago* stime.c (bdtime2c): Initialize lt->gmtoff and lt->tm_zone from
Jim Blandy [Tue, 15 Jun 1999 14:01:13 +0000 (14:01 +0000)]
* stime.c (bdtime2c): Initialize lt->gmtoff and lt->tm_zone from
sbd_time.  (Thanks to Eric Hanchrow.)

25 years agoFix from Ken Raeburn <raeburn@raeburn.org>:
Jim Blandy [Tue, 15 Jun 1999 14:00:24 +0000 (14:00 +0000)]
Fix from Ken Raeburn <raeburn@raeburn.org>:
* weaks.c (scm_make_weak_vector): Add another extra slot before
vector contents, to be used only during garbage collection.
* weaks.h (SCM_WVECT_GC_CHAIN): New macro to access it.
* gc.c (scm_weak_vectors): Now a SCM instead of a SCM*, and now
static.
(scm_weak_size, scm_n_weak): Deleted.
(scm_igc): Use SCM_WVECT_GC_CHAIN to build up a chain of weak
vectors without allocating new storage during GC, using
scm_weak_vectors as the head of the chain.
(scm_mark_weak_vector_spines): Walk SCM_WVECT_GC_CHAIN chain
instead of stepping through an array.
(scm_gc_sweep): Update offset used to find start of weak vector to
free it.
(scm_init_storage): Set scm_weak_vectors to EOL.
Fix from Ken Raeburn <raeburn@raeburn.org>:
* gc.c (already_in_gc): New variable.
(scm_igc): Set and clear already_in_gc; abort if it's set at
entry.

25 years agoFix from Ken Raeburn <raeburn@raeburn.org>:
Jim Blandy [Tue, 15 Jun 1999 14:00:11 +0000 (14:00 +0000)]
Fix from Ken Raeburn <raeburn@raeburn.org>:
* weaks.c (scm_make_weak_vector): Add another extra slot before
vector contents, to be used only during garbage collection.
* weaks.h (SCM_WVECT_GC_CHAIN): New macro to access it.
* gc.c (scm_weak_vectors): Now a SCM instead of a SCM*, and now
static.
(scm_weak_size, scm_n_weak): Deleted.
(scm_igc): Use SCM_WVECT_GC_CHAIN to build up a chain of weak
vectors without allocating new storage during GC, using
scm_weak_vectors as the head of the chain.
(scm_mark_weak_vector_spines): Walk SCM_WVECT_GC_CHAIN chain
instead of stepping through an array.
(scm_gc_sweep): Update offset used to find start of weak vector to
free it.
(scm_init_storage): Set scm_weak_vectors to EOL.

25 years ago*** empty log message ***
Jim Blandy [Tue, 15 Jun 1999 08:40:04 +0000 (08:40 +0000)]
*** empty log message ***

25 years ago* lib.scm: Import (test-suite paths).
Jim Blandy [Tue, 15 Jun 1999 08:39:39 +0000 (08:39 +0000)]
* lib.scm: Import (test-suite paths).
(data-file): New exported function.

25 years ago* tests/ports.test: Group the string port tests under a new
Jim Blandy [Tue, 15 Jun 1999 08:39:11 +0000 (08:39 +0000)]
* tests/ports.test: Group the string port tests under a new
test name prefix.
* tests/ports.test ("line counter"): Check the final column, too.

25 years ago* tests/r4rs.test: New set of tests, taken from Guile's test
Jim Blandy [Tue, 15 Jun 1999 08:38:44 +0000 (08:38 +0000)]
* tests/r4rs.test: New set of tests, taken from Guile's test
script, taken from SCM.

25 years ago* string-fun.scm (split-before-predicate, split-after-predicate,
Jim Blandy [Mon, 14 Jun 1999 16:55:08 +0000 (16:55 +0000)]
* string-fun.scm (split-before-predicate, split-after-predicate,
split-discarding-predicate): Make these public.  (Thanks to
Thien-Thi Nguyen.)

25 years ago*** empty log message ***
Jim Blandy [Mon, 14 Jun 1999 16:54:29 +0000 (16:54 +0000)]
*** empty log message ***

25 years ago* more changes to expect.scm, to avoid the one-character lookhead
Jim Blandy [Mon, 14 Jun 1999 16:54:15 +0000 (16:54 +0000)]
* more changes to expect.scm, to avoid the one-character lookhead
that was introduced to fix the $ problem:
* expect.scm (expect): call the match proc an extra time at end
of file and set the eof? argument appropriately.  call
expect-eof-proc only if the last call didn't match.
* expect.scm (expect-strings): change port to eof? in match proc.
* expect.scm (expect-regexec): take an eof indicator as an argument
instead of a port.

25 years ago*** empty log message ***
Jim Blandy [Mon, 14 Jun 1999 16:30:10 +0000 (16:30 +0000)]
*** empty log message ***

25 years ago* fports.c (local_seek): Signal an error if the seek fails.
Jim Blandy [Mon, 14 Jun 1999 16:29:48 +0000 (16:29 +0000)]
* fports.c (local_seek): Signal an error if the seek fails.
* ports.c (scm_lseek): Don't check return value of port's seek
function; it's its job to signal an error if there's a problem.

25 years ago* ioext.c (scm_read_line): Switch to reading properly.
Jim Blandy [Sat, 12 Jun 1999 17:26:56 +0000 (17:26 +0000)]
* ioext.c (scm_read_line): Switch to reading properly.
* fports.c, fports.h, gc.c, gdbint.c, ioext.c, ports.c, ports.h,
scmsigs.c, strports.c, vports.c: Install the sources which
actually correspond to the changes described below.  I got the
ChangeLog entries and the patch from two different places...

25 years ago*** empty log message ***
Jim Blandy [Sat, 12 Jun 1999 17:26:51 +0000 (17:26 +0000)]
*** empty log message ***

25 years ago* strports.c (scm_call_with_output_string): Don't include the
Jim Blandy [Sat, 12 Jun 1999 17:26:34 +0000 (17:26 +0000)]
* strports.c (scm_call_with_output_string): Don't include the
extra character at the end of the string in the result.
* fports.c, fports.h, gc.c, gdbint.c, ioext.c, ports.c, ports.h,
scmsigs.c, strports.c, vports.c: Install the sources which
actually correspond to the changes described below.  I got the
ChangeLog entries and the patch from two different places...

25 years ago* fports.c, fports.h, gc.c, gdbint.c, ioext.c, ports.c, ports.h,
Jim Blandy [Sat, 12 Jun 1999 17:26:22 +0000 (17:26 +0000)]
* fports.c, fports.h, gc.c, gdbint.c, ioext.c, ports.c, ports.h,
scmsigs.c, strports.c, vports.c: Install the sources which
actually correspond to the changes described below.  I got the
ChangeLog entries and the patch from two different places...

25 years ago*** empty log message ***
Jim Blandy [Sat, 12 Jun 1999 12:45:51 +0000 (12:45 +0000)]
*** empty log message ***

25 years ago*** empty log message ***
Jim Blandy [Sat, 12 Jun 1999 12:45:23 +0000 (12:45 +0000)]
*** empty log message ***

25 years ago*** empty log message ***
Jim Blandy [Wed, 9 Jun 1999 12:55:20 +0000 (12:55 +0000)]
*** empty log message ***

25 years ago * expect.scm (expect-regexec): define 'eof-next?'. I don't
Jim Blandy [Wed, 9 Jun 1999 12:54:59 +0000 (12:54 +0000)]
* expect.scm (expect-regexec): define 'eof-next?'.  I don't
know why it was missing.  also don't peek for end of lines
unless expect-strings-exec-flags contains regexp/noteol.
(expect-strings-exec-flags): initialise to regexp/noteol.

25 years ago* Makefile.am (ice9_sources): Add popen.scm to list.
Jim Blandy [Wed, 9 Jun 1999 12:30:45 +0000 (12:30 +0000)]
* Makefile.am (ice9_sources): Add popen.scm to list.
* Makefile.in: Regenerated.
* popen.scm: applied fixes from Greg Harvey.  use a guardian
and a gc-thunk so that cleanup is done if a pipe is garbage
collected or closed with close-port.  use a weak hash-table instead of
an alist.
* boot-9.scm (reopen-file): deleted.
* popen.scm (open-output-pipe, open-input-pipe): moved from
boot-9.scm.
* popen.scm: new file.

25 years ago*** empty log message ***
Jim Blandy [Wed, 9 Jun 1999 12:25:26 +0000 (12:25 +0000)]
*** empty log message ***

25 years ago * ioext.c (scm_do_read_line): Rewritten to use memchr to find the
Jim Blandy [Wed, 9 Jun 1999 12:19:58 +0000 (12:19 +0000)]
* ioext.c (scm_do_read_line): Rewritten to use memchr to find the
newline.  A bit faster, and definitely hairier.
(scm_read_line): Count newlines here instead.
* strings.c (scm_take_str): New function.
(scm_take0str): Reimplement in terms of scm_take_str.  * strings.h
(scm_take_str): New declaration.  * ioext.c (scm_read_line): Use
scm_take_str, to avoid copying the string.
Add some simple-minded support for line buffered ports.
* ports.h (SCM_BUFLINE): New flag for ports.
* init.c (scm_init_standard_ports): Request line-buffering on
the standard output port.
* * ports.c (scm_mode_bits): Recognize 'l' as a request for line
buffering.
(scm_putc, scm_puts, scm_lfwrite): If the port is line-buffered,
and there's a newline to be written, flush the port.
* ports.c: (scm_lseek): clear buffers even if just reading current
position.
* fports.c (local_fclose): call local_fflush unconditionally.
(various): don't use the scm_must... memory procs.
* ports.h (scm_port): make read_pos a pointer to const.
strports.c: take care of rw_active and rw_randow.
fports.c: scm_fport_drain_input: removed.  do it all in ports.c.
strports.c (scm_mkstrport): check that pos is reasonable.
ioext.c (scm_ftell, scm_fseek): use lseek.
(SCM_CLEAR_BUFFERS): macro deleted.
ioext.c (redirect_port: use ptob fflush, read_flush.
ports.h (scm_ptobfuns): add ftruncate.
ports.c (scm_newptob): set ftruncate.
adjust ptob tables.
* ports.c (scm_ftruncate): new procedure.
fports.c (local_ftrunate), strports.c (str_ftruncate): new procs.
strports.c (st_seek, st_grow_port): new procs.
fports.h (scm_port): change size types from int to off_t.
ports.c (scm_init_ports): initialise the seek symbols here
instead of in ioext.c.
strports.c (scm_call_with_output_string): start with an empty
string, so seek and ftruncate can be used.
* ports.h (scm_ptobfuns): add a read_flush procedure which is the
equivalent to fflush for the read buffer.
* ports.c (scm_newptob): set read_flush.
ports.c (void_port_ptob): set read_flush.
fports.c (local_read_flush): new proc.  add to ptob.
strport.c (st_read_flush): likewise.
vport.c (sf_read_flush): likewise.
fports.h (struct scm_fport): remove random member.  there's nothing
left but fdes.  leaving it as a struct to allow for future changes.
fports.c: replace usage of scm_fport::random with scm_port::rw_random.
ports.c: (scm_putc, scm_puts, scm_lfwrite): call the read_flush
ptob proc if the read buffer is filled.
* ports.h (scm_port): add a rw_random member and replace
reading and writing members with rw_active member.
SCM_PORT_READ/SCM_PORT_WRITE: new values.
* ports.h (struct scm_port_table): add writing and reading members
to replace write_needs_seek: it isn't good enough for non-fports.
ports.c, ioext.c, fports.c: corresponding changes.
(struct scm_port_table): give it a typedef and rename to scm_port.
ports.c, fports.c, strports.c, vports.c, ioext.c, ports.h:
corresponding changes.
* ports.c (scm_newptob): bugfix: set seek member.
* * (scm_lseek): new procedure, using code from ioext.c:scm_fseek
and generalised to all port types.
* scmsigs.c (scm_init_scmsigs): set the SA_RESTART flag for all
signals (it was only being done for handlers installed from Scheme).
Otherwise (for example) SIGSTOP followed by SIGCONT on an interpreter
waiting for input caused an EINTR error from read.
* ports.h (struct scm_port_table): make all the char members
unsigned, so they convert to int without becoming negative if large.
* fports.c (scm_fdes_wait_for_input): forgot to check compilation
with threads enabled.  rename this procedure to
fport_wait_for_input and take a port instead of a fdes.
use scm_fport_input_waiting_p instead of scm_fdes_waiting_p.
* readline.c (scm_readline): Applied a patch from Greg Harvey to
get readline support working again: use fdopen to get FILE objects.
* gc.c (scm_init_storage): install an atexit proc to flush the
ports.
(cleanup): the new proc.  it sets a global variable which can be
checked by the ptob flush procs to avoid trying to throw
exceptions during exit.  not very pleasant but it seems more reliable.
* fports.c (local_fflush): check terminating variable and if set
don't throw exception.
* CHECKME: that the atexit proc is installed if unexec used.
* throw.c (scm_handle_by_message): don't flush all ports here.
it still causes bus errors.
* fports.h (SCM_FPORT_CLEAR_BUFFERS): rename to SCM_CLEAR_BUFFERS
and move to ioext.c.
* fports.c (scm_fdes_waiting_p): merged into fport_input_waiting_p.
* ports.c (scm_char_ready_p): check the port buffer and call the
ptob entry if needed.
* ports.h (scm_ptobfuns): input_waiting_p added.  change all the
ptob initialisers.  use it in char-ready
* ioext.c (scm_do_read_line): moved from ports.c.  make it static.
* vports.c (sfflush): modified to write a char (since softports
currently use shortbuf.)
* fports.c (scm_standard_stream_to_port): moved to init.c and
made static.
* init.c (scm_init_standard_ports): make stdout and stderr
unbuffered if connected to a terminal.  with stdio they
were line-buffered by default.
* ports.h (scm_ptobfuns): change fflush return to void.
change flush proc definitions.
* strports.c (scm_call_with_output_string): get size from
buffer instead of port stream.
(scm_strprint_obj): likewise.
(st_flush): new proc.
* ports.h (struct scm_port_table): added write_end member,
as an optimisation.  set it where write_buf_size is set.
* ports.h (struct scm_port_table): change stream from void *
back to SCM.  SCM presumably must be large enough to hold a
pointer (and probably vice versa but who knows.)
(SCM_SSTREAM): deleted.  change users back to SCM_STREAM.
(scm_puts): rewritten
* fports.c (local_ffwrite, local_fputs): removed.
* strports.c (stputc, stputs, stwrite): dyked out (FIXME)
* vports.c (sfputc, sfputs, sfwrite) likewise.
* ports.c (write_void_port, puts_void_port): removed.
(putc_void_port, getc_void_port, fgets_void_port): likewise.
* ports.c (scm_lfwrite): rewritten using fport.c version.
* fports.c (local_fputc): deleted.
* ports.c (scm_add_to_port_table): initialise write_needs_seek.
* ports.h (scm_ptobfuns): add seek function pointer.
* fports.c: set it to local_seek, new procedure.
* fports.h (SCM_MAYBE_DRAIN_INPUT): moved to ports.c.
use ptob for seek. take ptob instead of fport arg.
* ports.h (struct scm_port_table): new member write_needs_seek,
replaces reading member in fport struct.
* vports.c (sfgetc): store the getted char into the buffer.
rename to sf_fill_buffer and install it for fill-buffer in ptob.
the Scheme interface is still a procedure that gets a char.
(scm_make_soft_port): set up the port buffer (shortbuf).
* fports.c (local_fgetc, local_fgets): deleted.
* strports.c (stgetc): likewise.
* ports.c: scm_generic_fgets: likewise.
* ports.h (scm_ptobfuns): add fill_buffer.
* ports.c (scm_newptob): assign it.
* strports.c (scm_mkstrport): set up the buffer.
put just the string into the stream, not cons (pos stream).
(stfill_buffer): new proc.
* ports.h: fport buffer moved into port table: to be
used for all port types.
* throw.c (scm_handle_by_message): flush ports at exit.
* socket.c (scm_sock_fd_to_port): use scm_fdes_to_port.
(scm_getsockopt, scm_setsockopt, scm_shutdown, scm_connect,
scm_bind, scm_listen, scm_accept, scm_getsockname,
scm_getpeername, scm_recv, scm_send, scm_recvfrom,
scm_sendto,
use SCM_FPORT_FDES.  use SCM_OPFPORTP not SCM_FPORTP.
* posix.c (scm_getgroups): use SCM_ALLOW/DEFER_INTS.
(scm_ttyname): use SCM_FPORT_FDES.
(scm_tcgetpgrp, scm_tcsetpgrp): likewise.
* ioext.c (scm_isatty_p): use SCM_FPORT_FDES.
(scm_fdes_to_ports): modified.
(scm_fdopen): use scm_fdes_to_port.
* ports.c (scm_init_ports): don't try to flush ports using
atexit().  it's too late, errors will cause SEGV.
* fports.c (scm_fport_buffer_add): new procedure.
* fports.h (SCM_FDES_RANDOM_P): new macro.  use it in
scm_fdes_to_port and scm_redirect_port.
* ioext.c (scm_redirect_port): use setvbuf to set buffers in the
new port.  reset fp->random.
* fports.c (scm_fdes_to_port), ports.c (scm_void_port),
filesys.c (scm_opendir):
restore defer interrupts while the port is constructed.
* (scm_setvbuf): if mode is _IOFBF and size is not supplied,
derive buffer size from fdes or use a default.
(scm_fdes_to_port): use setvbuf instead of creating the buffers
directly.
vports.c (various places): use SCM_SSTREAM.
strports.c: likewise.
* gdbint.c: likewise.
* ports.h (SCM_SSTREAM): new macro.
* fports.c (scm_input_waiting_p): use scm_return_first, since port
may be removed from the stack by the tail call to scm_fdes_waiting_p.
* fports.h (SCM_CLEAR_BUFFERS): new macro.
* ports.c (scm_force_output): call scm_fflush.
* print.c (scm_newline): don't check errno for EPIPE (it wouldn't
* reach this point.)  don't flush port (if scm_cur_outp).
* fports.h (SCM_FPORT_FDES): new macro.
* vports.c (sfflush): don't need to set errno.
* ports.c: install scm_flush_all_ports to be run on exit.
ports.c fports.c ioext.c posix.c socket.c net_db.c filesys.c:
removed all uses of SCM_DEFER/ALLOW ints for now.  they were mainly
just protecting errno.  some may need to be put back.
* scmsigs.c (take_signal): save and restore errno while this
proc runs.
*fports.c (print_pipe_port, local_pclose, scm_pipob): deleted.
* open-pipe, close-pipe are emulated in (ice-9 popen)
ports.c (scm_ports_prehistory): don't init scm_pipob.
ports.h (scm_tc16_pipe): deleted.
posix.c (scm_open_pipe, scm_close_pipe): deleted.
* ioext.c (scm_primitive_move_to_fdes): use fport.
* fport.c (scm_fport_fill_buffer): flush write buffer if needed.
change arg type from scm_fport to SCM port.
fport.h (SCM_SETFDES): removed.
(SCM_MAYBE_DRAIN_INPUT): new macro.
* ioext.c (scm_dup_to_fdes): use SCM_FSTREAM.
(scm_ftell): always use lseek and account for the buffer.
(scm_fileno): use fport buffer.
(scm_fseek): clear fport buffers.  always use lseek.
* posix.c (scm_pipe): use fport buffer.
* unif.c: include fports.h instead of genio.h.
* fports.c (scm_fdes_wait_for_input, scm_fport_fill_buffer): new
procedures.
(local_fgetc): use them.
(local_ffwrite): use buffer.
(local_fgets): use buffer.
(scm_setbuf0): deleted.
(scm_setvbuf): set the buffer.
(scm_setfileno): deleted.
(scm_evict_ports): set fdes directly.
* (scm_freopen): deleted.  doesn't seem useful in Guile.
(scm_stdio_to_port): deleted.
fports.h (struct scm_fport): add shortbuf member to avoid separate
code for unbuffered ports.
(SCM_FPORTP, SCM_OPFPORTP, SCM_OPINFPORTP, SCM_OPOUTFPORTP): moved
from ports.h.
* genio.c, genio.h: move contents into ports.c, ports.h.  The
division wasn't useful.
* fports.c, fports.h (scm_fport_drain_input): new procedure.
* ports.c (scm_drain_input): call scm_fport_drain_input.
* scm_fdes_waiting_p: new procedure.
* fports.c (scm_fdes_to_port): allocate read and/or write buffers.
(scm_input_waiting_p): check the buffer.
(local_fgetc, local_fflush, local_fputc): likewise.
* fports.h (scm_fport): read/write_buf,_pos,_buf_end,,_buf_size:
new members.
* init.c (scm_init_standard_ports): pass fdes instead of FILE *.
* * ports.c (scm_drain_input): new procedure.
ports.h: prototype.
* fports.c (FPORT_READ_SAFE, FPORT_WRITE_SAFE, FPORT_ALL_OKAY,
pre_read, pre_write): removed.
(local_fputc, local_fputs, local_ffwrite): use write, not stdio.
(scm_standard_stream_to_port): change first arg from FILE * to
int fdes.
(local_fflush): flush fdes, not FILE *.
* fports.h (SCM_NOFTELL): removed.
* genio.c, ports.c: don't include filesys.h.
* genio.c (scm_getc): don't use scm_internal_select if FPORT.
do it in fports.c:local_fgetc.
* genio.c: don't use SCM_SYSCALL when calling ptob procedures.
do it where it's needed in the port smobs.
* filesys.c (scm_input_waiting_p): moved to fports.c, stdio
  buffer support removed.  take SCM arg, not FILE *.
* filesys.h: prototype moved too.
* fports.c (scm_fdes_to_port): new procedure.
(local_fgetc): use read not fgetc.
(local_fclose): use close, not fclose.
(local_fgets): use read, not fgets
* fports.h: prototype for scm_fdes_to_port.
* fports.h (scm_fport): new struct.
* fports.c (scm_open_file): use open, not fopen.
#include fcntl.h
* ports.h (struct scm_port_table): change stream from SCM to void *.
* ports.c (scm_add_to_port_table): check for memory allocation error.
(scm_prinport): remove MSDOS hair.
(scm_void_port): set stream to 0 instead of SCM_BOOL_F.
(scm_close_port): don't throw errors: do it in fports.c.

25 years ago * genio.c, genio.h: move contents into ports.c, ports.h. The
Jim Blandy [Wed, 9 Jun 1999 12:18:55 +0000 (12:18 +0000)]
* genio.c, genio.h: move contents into ports.c, ports.h.  The
division wasn't useful.
* * ports.c (scm_drain_input): new procedure.
ports.h: prototype.
* fports.c (FPORT_READ_SAFE, FPORT_WRITE_SAFE, FPORT_ALL_OKAY,
pre_read, pre_write): removed.
(local_fputc, local_fputs, local_ffwrite): use write, not stdio.
(scm_standard_stream_to_port): change first arg from FILE * to
int fdes.
(local_fflush): flush fdes, not FILE *.
* fports.h (SCM_NOFTELL): removed.
* genio.c, ports.c: don't include filesys.h.
* genio.c (scm_getc): don't use scm_internal_select if FPORT.
do it in fports.c:local_fgetc.
* genio.c: don't use SCM_SYSCALL when calling ptob procedures.
do it where it's needed in the port smobs.
* filesys.c (scm_input_waiting_p): moved to fports.c, stdio
  buffer support removed.  take SCM arg, not FILE *.
* filesys.h: prototype moved too.
* fports.c (scm_fdes_to_port): new procedure.
(local_fgetc): use read not fgetc.
(local_fclose): use close, not fclose.
(local_fgets): use read, not fgets
* fports.h: prototype for scm_fdes_to_port.
* fports.h (scm_fport): new struct.
* fports.c (scm_open_file): use open, not fopen.
#include fcntl.h
* ports.h (struct scm_port_table): change stream from SCM to void *.
* ports.c (scm_add_to_port_table): check for memory allocation error.
(scm_prinport): remove MSDOS hair.
(scm_void_port): set stream to 0 instead of SCM_BOOL_F.
(scm_close_port): don't throw errors: do it in fports.c.

25 years ago* gc.c (scm_igc): Check for scm_mallocated underflow. Otherwise,
Jim Blandy [Wed, 9 Jun 1999 12:18:40 +0000 (12:18 +0000)]
* gc.c (scm_igc): Check for scm_mallocated underflow.  Otherwise,
it shows up as terrible performance, as we GC constantly.
* gc.c (scm_init_storage): install an atexit proc to flush the
ports.
(cleanup): the new proc.  it sets a global variable which can be
checked by the ptob flush procs to avoid trying to throw
exceptions during exit.  not very pleasant but it seems more reliable.
* fports.c (local_fflush): check terminating variable and if set
don't throw exception.
* CHECKME: that the atexit proc is installed if unexec used.

25 years ago * ports.h (scm_port): make read_pos a pointer to const.
Jim Blandy [Wed, 9 Jun 1999 12:18:24 +0000 (12:18 +0000)]
* ports.h (scm_port): make read_pos a pointer to const.
strports.c: take care of rw_active and rw_randow.
fports.c: scm_fport_drain_input: removed.  do it all in ports.c.
strports.c (scm_mkstrport): check that pos is reasonable.
ioext.c (scm_ftell, scm_fseek): use lseek.
(SCM_CLEAR_BUFFERS): macro deleted.
ioext.c (redirect_port: use ptob fflush, read_flush.
ports.h (scm_ptobfuns): add ftruncate.
ports.c (scm_newptob): set ftruncate.
adjust ptob tables.
* ports.c (scm_ftruncate): new procedure.
fports.c (local_ftrunate), strports.c (str_ftruncate): new procs.
strports.c (st_seek, st_grow_port): new procs.
fports.h (scm_port): change size types from int to off_t.
ports.c (scm_init_ports): initialise the seek symbols here
instead of in ioext.c.
strports.c (scm_call_with_output_string): start with an empty
string, so seek and ftruncate can be used.
* ports.h (scm_ptobfuns): add a read_flush procedure which is the
equivalent to fflush for the read buffer.
* ports.c (scm_newptob): set read_flush.
ports.c (void_port_ptob): set read_flush.
fports.c (local_read_flush): new proc.  add to ptob.
strport.c (st_read_flush): likewise.
vport.c (sf_read_flush): likewise.
fports.h (struct scm_fport): remove random member.  there's nothing
left but fdes.  leaving it as a struct to allow for future changes.
fports.c: replace usage of scm_fport::random with scm_port::rw_random.
ports.c: (scm_putc, scm_puts, scm_lfwrite): call the read_flush
ptob proc if the read buffer is filled.
* fports.h (SCM_FPORT_CLEAR_BUFFERS): rename to SCM_CLEAR_BUFFERS
and move to ioext.c.
* fports.h (SCM_MAYBE_DRAIN_INPUT): moved to ports.c.
use ptob for seek. take ptob instead of fport arg.
* fports.h (SCM_FDES_RANDOM_P): new macro.  use it in
scm_fdes_to_port and scm_redirect_port.
* fports.h (SCM_CLEAR_BUFFERS): new macro.
* fports.h (SCM_FPORT_FDES): new macro.
* posix.c (scm_pipe): use fport buffer.
* unif.c: include fports.h instead of genio.h.
* fports.c (scm_fdes_wait_for_input, scm_fport_fill_buffer): new
procedures.
(local_fgetc): use them.
(local_ffwrite): use buffer.
(local_fgets): use buffer.
(scm_setbuf0): deleted.
(scm_setvbuf): set the buffer.
(scm_setfileno): deleted.
(scm_evict_ports): set fdes directly.
* (scm_freopen): deleted.  doesn't seem useful in Guile.
(scm_stdio_to_port): deleted.
fports.h (struct scm_fport): add shortbuf member to avoid separate
code for unbuffered ports.
(SCM_FPORTP, SCM_OPFPORTP, SCM_OPINFPORTP, SCM_OPOUTFPORTP): moved
from ports.h.
* fports.c, fports.h (scm_fport_drain_input): new procedure.
* ports.c (scm_drain_input): call scm_fport_drain_input.
* scm_fdes_waiting_p: new procedure.
* fports.c (scm_fdes_to_port): allocate read and/or write buffers.
(scm_input_waiting_p): check the buffer.
(local_fgetc, local_fflush, local_fputc): likewise.
* fports.h (scm_fport): read/write_buf,_pos,_buf_end,,_buf_size:
new members.
* init.c (scm_init_standard_ports): pass fdes instead of FILE *.
* * ports.c (scm_drain_input): new procedure.
ports.h: prototype.
* fports.c (FPORT_READ_SAFE, FPORT_WRITE_SAFE, FPORT_ALL_OKAY,
pre_read, pre_write): removed.
(local_fputc, local_fputs, local_ffwrite): use write, not stdio.
(scm_standard_stream_to_port): change first arg from FILE * to
int fdes.
(local_fflush): flush fdes, not FILE *.
* fports.h (SCM_NOFTELL): removed.
* genio.c, ports.c: don't include filesys.h.
* genio.c (scm_getc): don't use scm_internal_select if FPORT.
do it in fports.c:local_fgetc.
* genio.c: don't use SCM_SYSCALL when calling ptob procedures.
do it where it's needed in the port smobs.
* filesys.c (scm_input_waiting_p): moved to fports.c, stdio
  buffer support removed.  take SCM arg, not FILE *.
* filesys.h: prototype moved too.
* fports.c (scm_fdes_to_port): new procedure.
(local_fgetc): use read not fgetc.
(local_fclose): use close, not fclose.
(local_fgets): use read, not fgets
* fports.h: prototype for scm_fdes_to_port.
* fports.h (scm_fport): new struct.
* fports.c (scm_open_file): use open, not fopen.
#include fcntl.h
* ports.h (struct scm_port_table): change stream from SCM to void *.
* ports.c (scm_add_to_port_table): check for memory allocation error.
(scm_prinport): remove MSDOS hair.
(scm_void_port): set stream to 0 instead of SCM_BOOL_F.
(scm_close_port): don't throw errors: do it in fports.c.

25 years ago * fports.c (local_fclose): call local_fflush unconditionally.
Jim Blandy [Wed, 9 Jun 1999 12:18:12 +0000 (12:18 +0000)]
* fports.c (local_fclose): call local_fflush unconditionally.
(various): don't use the scm_must... memory procs.
* ports.h (scm_port): make read_pos a pointer to const.
strports.c: take care of rw_active and rw_randow.
fports.c: scm_fport_drain_input: removed.  do it all in ports.c.
strports.c (scm_mkstrport): check that pos is reasonable.
ioext.c (scm_ftell, scm_fseek): use lseek.
(SCM_CLEAR_BUFFERS): macro deleted.
ioext.c (redirect_port: use ptob fflush, read_flush.
ports.h (scm_ptobfuns): add ftruncate.
ports.c (scm_newptob): set ftruncate.
adjust ptob tables.
* ports.c (scm_ftruncate): new procedure.
fports.c (local_ftrunate), strports.c (str_ftruncate): new procs.
strports.c (st_seek, st_grow_port): new procs.
fports.h (scm_port): change size types from int to off_t.
ports.c (scm_init_ports): initialise the seek symbols here
instead of in ioext.c.
strports.c (scm_call_with_output_string): start with an empty
string, so seek and ftruncate can be used.
* ports.h (scm_ptobfuns): add a read_flush procedure which is the
equivalent to fflush for the read buffer.
* ports.c (scm_newptob): set read_flush.
ports.c (void_port_ptob): set read_flush.
fports.c (local_read_flush): new proc.  add to ptob.
strport.c (st_read_flush): likewise.
vport.c (sf_read_flush): likewise.
fports.h (struct scm_fport): remove random member.  there's nothing
left but fdes.  leaving it as a struct to allow for future changes.
fports.c: replace usage of scm_fport::random with scm_port::rw_random.
ports.c: (scm_putc, scm_puts, scm_lfwrite): call the read_flush
ptob proc if the read buffer is filled.
* ports.h (struct scm_port_table): add writing and reading members
to replace write_needs_seek: it isn't good enough for non-fports.
ports.c, ioext.c, fports.c: corresponding changes.
(struct scm_port_table): give it a typedef and rename to scm_port.
ports.c, fports.c, strports.c, vports.c, ioext.c, ports.h:
corresponding changes.
* fports.c (scm_fdes_wait_for_input): forgot to check compilation
with threads enabled.  rename this procedure to
fport_wait_for_input and take a port instead of a fdes.
use scm_fport_input_waiting_p instead of scm_fdes_waiting_p.
* gc.c (scm_init_storage): install an atexit proc to flush the
ports.
(cleanup): the new proc.  it sets a global variable which can be
checked by the ptob flush procs to avoid trying to throw
exceptions during exit.  not very pleasant but it seems more reliable.
* fports.c (local_fflush): check terminating variable and if set
don't throw exception.
* CHECKME: that the atexit proc is installed if unexec used.
* fports.c (scm_fdes_waiting_p): merged into fport_input_waiting_p.
* fports.c (scm_standard_stream_to_port): moved to init.c and
made static.
(scm_puts): rewritten
* fports.c (local_ffwrite, local_fputs): removed.
* strports.c (stputc, stputs, stwrite): dyked out (FIXME)
* vports.c (sfputc, sfputs, sfwrite) likewise.
* ports.c (write_void_port, puts_void_port): removed.
(putc_void_port, getc_void_port, fgets_void_port): likewise.
* fports.c (local_fputc): deleted.
* ports.h (scm_ptobfuns): add seek function pointer.
* fports.c: set it to local_seek, new procedure.
* fports.c (local_fgetc, local_fgets): deleted.
* strports.c (stgetc): likewise.
* ports.c: scm_generic_fgets: likewise.
* fports.c (scm_fport_buffer_add): new procedure.
* fports.c (scm_fdes_to_port), ports.c (scm_void_port),
filesys.c (scm_opendir):
restore defer interrupts while the port is constructed.
* (scm_setvbuf): if mode is _IOFBF and size is not supplied,
derive buffer size from fdes or use a default.
(scm_fdes_to_port): use setvbuf instead of creating the buffers
directly.
* fports.c (scm_input_waiting_p): use scm_return_first, since port
may be removed from the stack by the tail call to scm_fdes_waiting_p.
ports.c fports.c ioext.c posix.c socket.c net_db.c filesys.c:
removed all uses of SCM_DEFER/ALLOW ints for now.  they were mainly
just protecting errno.  some may need to be put back.
*fports.c (print_pipe_port, local_pclose, scm_pipob): deleted.
* open-pipe, close-pipe are emulated in (ice-9 popen)
ports.c (scm_ports_prehistory): don't init scm_pipob.
ports.h (scm_tc16_pipe): deleted.
posix.c (scm_open_pipe, scm_close_pipe): deleted.
* posix.c (scm_pipe): use fport buffer.
* unif.c: include fports.h instead of genio.h.
* fports.c (scm_fdes_wait_for_input, scm_fport_fill_buffer): new
procedures.
(local_fgetc): use them.
(local_ffwrite): use buffer.
(local_fgets): use buffer.
(scm_setbuf0): deleted.
(scm_setvbuf): set the buffer.
(scm_setfileno): deleted.
(scm_evict_ports): set fdes directly.
* (scm_freopen): deleted.  doesn't seem useful in Guile.
(scm_stdio_to_port): deleted.
fports.h (struct scm_fport): add shortbuf member to avoid separate
code for unbuffered ports.
(SCM_FPORTP, SCM_OPFPORTP, SCM_OPINFPORTP, SCM_OPOUTFPORTP): moved
from ports.h.
* fports.c, fports.h (scm_fport_drain_input): new procedure.
* ports.c (scm_drain_input): call scm_fport_drain_input.
* scm_fdes_waiting_p: new procedure.
* fports.c (scm_fdes_to_port): allocate read and/or write buffers.
(scm_input_waiting_p): check the buffer.
(local_fgetc, local_fflush, local_fputc): likewise.
* * ports.c (scm_drain_input): new procedure.
ports.h: prototype.
* fports.c (FPORT_READ_SAFE, FPORT_WRITE_SAFE, FPORT_ALL_OKAY,
pre_read, pre_write): removed.
(local_fputc, local_fputs, local_ffwrite): use write, not stdio.
(scm_standard_stream_to_port): change first arg from FILE * to
int fdes.
(local_fflush): flush fdes, not FILE *.
* fports.h (SCM_NOFTELL): removed.
* genio.c, ports.c: don't include filesys.h.
* genio.c (scm_getc): don't use scm_internal_select if FPORT.
do it in fports.c:local_fgetc.
* genio.c: don't use SCM_SYSCALL when calling ptob procedures.
do it where it's needed in the port smobs.
* filesys.c (scm_input_waiting_p): moved to fports.c, stdio
  buffer support removed.  take SCM arg, not FILE *.
* filesys.h: prototype moved too.
* fports.c (scm_fdes_to_port): new procedure.
(local_fgetc): use read not fgetc.
(local_fclose): use close, not fclose.
(local_fgets): use read, not fgets
* fports.h: prototype for scm_fdes_to_port.
* fports.h (scm_fport): new struct.
* fports.c (scm_open_file): use open, not fopen.
#include fcntl.h
* ports.h (struct scm_port_table): change stream from SCM to void *.
* ports.c (scm_add_to_port_table): check for memory allocation error.
(scm_prinport): remove MSDOS hair.
(scm_void_port): set stream to 0 instead of SCM_BOOL_F.
(scm_close_port): don't throw errors: do it in fports.c.

25 years ago* * ports.c (scm_drain_input): new procedure.
Jim Blandy [Wed, 9 Jun 1999 12:17:53 +0000 (12:17 +0000)]
* * ports.c (scm_drain_input): new procedure.
ports.h: prototype.
* fports.c (FPORT_READ_SAFE, FPORT_WRITE_SAFE, FPORT_ALL_OKAY,
pre_read, pre_write): removed.
(local_fputc, local_fputs, local_ffwrite): use write, not stdio.
(scm_standard_stream_to_port): change first arg from FILE * to
int fdes.
(local_fflush): flush fdes, not FILE *.
* fports.h (SCM_NOFTELL): removed.
* genio.c, ports.c: don't include filesys.h.
* genio.c (scm_getc): don't use scm_internal_select if FPORT.
do it in fports.c:local_fgetc.
* genio.c: don't use SCM_SYSCALL when calling ptob procedures.
do it where it's needed in the port smobs.
* filesys.c (scm_input_waiting_p): moved to fports.c, stdio
  buffer support removed.  take SCM arg, not FILE *.
* filesys.h: prototype moved too.
* fports.c (scm_fdes_to_port): new procedure.
(local_fgetc): use read not fgetc.
(local_fclose): use close, not fclose.
(local_fgets): use read, not fgets
* fports.h: prototype for scm_fdes_to_port.
* fports.h (scm_fport): new struct.
* fports.c (scm_open_file): use open, not fopen.
#include fcntl.h
* ports.h (struct scm_port_table): change stream from SCM to void *.
* ports.c (scm_add_to_port_table): check for memory allocation error.
(scm_prinport): remove MSDOS hair.
(scm_void_port): set stream to 0 instead of SCM_BOOL_F.
(scm_close_port): don't throw errors: do it in fports.c.

25 years ago * filesys.c (scm_chown): use SCM_FPORT_FDES.
Jim Blandy [Wed, 9 Jun 1999 12:17:38 +0000 (12:17 +0000)]
* filesys.c (scm_chown): use SCM_FPORT_FDES.
(scm_chmod, scm_stat, scm_truncate_file: likewise.
* fports.c (scm_fdes_to_port), ports.c (scm_void_port),
filesys.c (scm_opendir):
restore defer interrupts while the port is constructed.
* (scm_setvbuf): if mode is _IOFBF and size is not supplied,
derive buffer size from fdes or use a default.
(scm_fdes_to_port): use setvbuf instead of creating the buffers
directly.
* filesys.c (scm_fsync): use SCM_FDES.
* filesys.c (scm_fcntl): get fdes from fport.
(set_element, get_element): likewise.
* filesys.c (scm_open): adjust port_mode for O_APPEND and O_CREAT.
ports.c fports.c ioext.c posix.c socket.c net_db.c filesys.c:
removed all uses of SCM_DEFER/ALLOW ints for now.  they were mainly
just protecting errno.  some may need to be put back.
* * ports.c (scm_drain_input): new procedure.
ports.h: prototype.
* fports.c (FPORT_READ_SAFE, FPORT_WRITE_SAFE, FPORT_ALL_OKAY,
pre_read, pre_write): removed.
(local_fputc, local_fputs, local_ffwrite): use write, not stdio.
(scm_standard_stream_to_port): change first arg from FILE * to
int fdes.
(local_fflush): flush fdes, not FILE *.
* fports.h (SCM_NOFTELL): removed.
* genio.c, ports.c: don't include filesys.h.
* genio.c (scm_getc): don't use scm_internal_select if FPORT.
do it in fports.c:local_fgetc.
* genio.c: don't use SCM_SYSCALL when calling ptob procedures.
do it where it's needed in the port smobs.
* filesys.c (scm_input_waiting_p): moved to fports.c, stdio
  buffer support removed.  take SCM arg, not FILE *.
* filesys.h: prototype moved too.
* fports.c (scm_fdes_to_port): new procedure.
(local_fgetc): use read not fgetc.
(local_fclose): use close, not fclose.
(local_fgets): use read, not fgets
* fports.h: prototype for scm_fdes_to_port.
* fports.h (scm_fport): new struct.
* fports.c (scm_open_file): use open, not fopen.
#include fcntl.h
* ports.h (struct scm_port_table): change stream from SCM to void *.
* ports.c (scm_add_to_port_table): check for memory allocation error.
(scm_prinport): remove MSDOS hair.
(scm_void_port): set stream to 0 instead of SCM_BOOL_F.
(scm_close_port): don't throw errors: do it in fports.c.

25 years ago* * expect.scm (expect): call the match proc with the port instead.
Jim Blandy [Wed, 9 Jun 1999 12:17:16 +0000 (12:17 +0000)]
* * expect.scm (expect): call the match proc with the port instead.
(expect-strings): use peek-char to get the next char.  this has
the advantage of getting the handling of $ "correct", but the
disadvantage of needing to get (and maybe block for) an extra character
from the port when it may not be needed.  hence:
* (expect-strings-exec-flags): new variable/parameter, supplies
flags for regexp-exec.  if this includes regexp/noteol, then
automatic regexp/noteol handling (requiring an extra peeked char)
is enabled.  default is regexp/noteol.
*       (expect-strings-compile-flags): new variable/parameter, supplies
flags for make-regexp.  default is regexp/newline.
* * expect.scm (expect): call the match proc with an extra char,
peeked from the stream.
(expect-strings): build a match proc which takes the extra char.
(expect-regexec): take an extra arg "eof-next?" and use it
to decide whether the regexp/noteol flag should be added.

25 years ago* boot-9.scm (top-repl): don't flush all ports at exit.
Jim Blandy [Wed, 9 Jun 1999 12:17:03 +0000 (12:17 +0000)]
* boot-9.scm (top-repl): don't flush all ports at exit.
(error-catching-loop): likewise.
* boot-9.scm (scm-style-repl): -read: don't call
consume-trailing-whitespace if val is eof object.  Allows
exiting repl with single control-D.
* boot-9.scm (error-catching-loop): don't force output within
error catching loop after quit received.
(top-repl): flush all ports when the repl terminates.
* boot-9.scm (error-catching-loop): flush all ports before
primitive exit if non-interactive.
force-output on current-error-port if interactive.
* boot-9.scm (reopen-file): deleted.
* popen.scm (open-output-pipe, open-input-pipe): moved from
boot-9.scm.
* popen.scm: new file.

25 years ago*** empty log message ***
Jim Blandy [Wed, 9 Jun 1999 09:42:21 +0000 (09:42 +0000)]
*** empty log message ***

25 years ago* tests/ports.test ("line counter"): Verify that we do eventually
Jim Blandy [Wed, 9 Jun 1999 09:42:15 +0000 (09:42 +0000)]
* tests/ports.test ("line counter"): Verify that we do eventually
get EOF on the port --- don't just read forever.

25 years ago* lib.scm (print-counts): XFAILS are "expected failures", not
Jim Blandy [Wed, 9 Jun 1999 09:41:54 +0000 (09:41 +0000)]
* lib.scm (print-counts): XFAILS are "expected failures", not
"unexpected failures."

25 years ago*** empty log message ***
Jim Blandy [Wed, 9 Jun 1999 08:57:32 +0000 (08:57 +0000)]
*** empty log message ***

25 years ago* lib.scm (full-reporter): The test name is the cadr of the
Jim Blandy [Wed, 9 Jun 1999 08:57:23 +0000 (08:57 +0000)]
* lib.scm (full-reporter): The test name is the cadr of the
result, not the cdr.  I'm not macho enough to handle run-time
typechecking.

25 years ago*** empty log message ***
Mikael Djurfeldt [Mon, 7 Jun 1999 09:52:39 +0000 (09:52 +0000)]
*** empty log message ***

25 years ago*** empty log message ***
Mikael Djurfeldt [Sat, 5 Jun 1999 06:00:05 +0000 (06:00 +0000)]
*** empty log message ***

25 years ago* numbers.c: Added #include "feature.h".
Mikael Djurfeldt [Sat, 5 Jun 1999 05:59:50 +0000 (05:59 +0000)]
* numbers.c: Added #include "feature.h".

25 years ago* boot-9.scm (iota): replaced by a tail recursive version.
Mikael Djurfeldt [Sat, 5 Jun 1999 05:59:26 +0000 (05:59 +0000)]
* boot-9.scm (iota):  replaced by a tail recursive version.
(reverse-iota):  removed.

25 years ago* optargs.scm (lambda*): Bugfix: Replaced ARGLIST -->
Mikael Djurfeldt [Thu, 3 Jun 1999 05:02:23 +0000 (05:02 +0000)]
* optargs.scm (lambda*): Bugfix: Replaced ARGLIST -->
non-optional-args.  (Thanks to David Lutterkort.)

25 years ago*** empty log message ***
Mikael Djurfeldt [Thu, 3 Jun 1999 05:02:05 +0000 (05:02 +0000)]
*** empty log message ***

25 years agoUpdated
Mikael Djurfeldt [Thu, 3 Jun 1999 05:01:55 +0000 (05:01 +0000)]
Updated

25 years agoGary Houston's patches turn popen into a module, which we need to
Jim Blandy [Mon, 31 May 1999 21:30:06 +0000 (21:30 +0000)]
Gary Houston's patches turn popen into a module, which we need to
import.
("pipe: read", "pipe: write"): Use close-pipe, not close-port, so
Guile will wait for the command to terminate.

25 years agoProvide a default reporter, so that results don't just go into the bit
Jim Blandy [Mon, 31 May 1999 21:27:20 +0000 (21:27 +0000)]
Provide a default reporter, so that results don't just go into the bit
bucket if you use the test suite functions without a driver script.
(default-reporter): New variable.
(report): Send results to default-reporter if there are no registered
reporters.
(full-reporter): New function.
(user-reporter): Re-implemented in terms of full-reporter.

25 years agoIgnore log files produced by benchmarks and test suites.
Jim Blandy [Sun, 30 May 1999 10:31:56 +0000 (10:31 +0000)]
Ignore log files produced by benchmarks and test suites.

25 years agoMark file as Scheme code.
Jim Blandy [Sun, 30 May 1999 09:23:37 +0000 (09:23 +0000)]
Mark file as Scheme code.
Use catch-test-errors to isolate independent tests, so we can still
get some results even though Gary Houston's patches don't support
pipes yet.

25 years agoCopyleft files.
Jim Blandy [Sun, 30 May 1999 09:22:12 +0000 (09:22 +0000)]
Copyleft files.

25 years agoIndicate which version of Guile is required to run the test suites.
Jim Blandy [Sat, 29 May 1999 14:34:02 +0000 (14:34 +0000)]
Indicate which version of Guile is required to run the test suites.

25 years agoInitial checkin of the Guile test suite.
Jim Blandy [Sat, 29 May 1999 14:22:24 +0000 (14:22 +0000)]
Initial checkin of the Guile test suite.

25 years ago*** empty log message ***
Mikael Djurfeldt [Sun, 23 May 1999 10:13:18 +0000 (10:13 +0000)]
*** empty log message ***