Mon Sep 9 20:00:15 1996 Jim Blandy * smob.h: Use PROTO instead of #if __STDC__. * continuations.c (scm_dynthrow): Use PROTO, not SCM_P. * __scm.h: Doc fixes. * __scm.h, libguile.h: Use "quotes" in the #includes, not ; this allows `make depends' to work properly. * libguile.h: #include smob.h and pairs.h before the others; they define typedefs used by other headers. C files should #include only the header files they need, not libguile.h (which #includes all the header files); the pointless recompilation was wasting my time. * Makefile.in (all .o dependency lists): Regenerated. * libguile.h: Don't try to get a definition for size_t here... * __scm.h: Do it here. * _scm.h: Since this is the internal libguile header, put things here that all (or a majority) of the libguile files will want. Don't #include here; that generates dependencies on way too much. Instead, get "__scm.h", "error.h", "pairs.h", "list.h", "gc.h", "gsubr.h", "procs.h", "numbers.h", "symbols.h", "boolean.h", "strings.h", "vectors.h", "root.h", "ports.h", and "async.h". * alist.c: Get "eq.h", "list.h", "alist.h". * append.c: Get "append.h", "list.h". * arbiters.c: Get "arbiters.h", "smob.h". * async.c: Get "async.h", "smob.h", "throw.h", "eval.h". * boolean.c: Get "boolean.h". * chars.c: Get "chars.h". * continuations.c: Get "continuations.h", "dynwind.h", "debug.h", "stackchk.h". * debug.c: Get "debug.h", "feature.h", "read.h", "strports.h", "continuations.h", "alist.h", "srcprop.h", "procprop.h", "smob.h", "genio.h", "throw.h", "eval.h". * dynwind.c: Get "dynwind.h", "alist.h", "eval.h". * eq.c: Get "eq.h", "unif.h", "smob.h", "strorder.h", "stackchk.h". * error.c: Get "error.h", "throw.h", "genio.h", "pairs.h". * eval.c: Get "eval.h", "stackchk.h", "srcprop.h", "debug.h", "hashtab.h", "procprop.h", "markers.h", "smob.h", "throw.h", "continuations.h", "eq.h", "sequences.h", "alist.h", "append.h", "debug.h". * fdsocket.c: Get "fdsocket.h", "unif.h", "filesys.h". * feature.c: Get "feature.h". * files.c: Get "files.h". * filesys.c: Get "filesys.h", "smob.h", "genio.h". * fports.c: Get "fports.h", "markers.h". * gc.c: Get "async.h", "unif.h", "smob.h", "weaks.h", "genio.h", "struct.h", "stackchk.h", "stime.h". * gdbint.c: Get "gdbint.h", "chars.h", "eval.h", "print.h", "read.h", "strports.h", "tag.h". * genio.c: Get "genio.h", "chars.h". * gsubr.c: Get "gsubr.h", "genio.h". * hash.c: Get "hash.h", "chars.h". * hashtab.c: Get "hashtab.h", "eval.h", "hash.h", "alist.h". * init.c: Get everyone who has an scm_init_mumble function: "weaks.h", "vports.h", "version.h", "vectors.h", "variable.h", "unif.h", "throw.h", "tag.h", "symbols.h", "struct.h", "strports.h", "strorder.h", "strop.h", "strings.h", "stime.h", "stackchk.h", "srcprop.h", "socket.h", "simpos.h", "sequences.h", "scmsigs.h", "read.h", "ramap.h", "procs.h", "procprop.h", "print.h", "posix.h", "ports.h", "pairs.h", "options.h", "objprop.h", "numbers.h", "mbstrings.h", "mallocs.h", "load.h", "list.h", "kw.h", "ioext.h", "hashtab.h", "hash.h", "gsubr.h", "gdbint.h", "gc.h", "fports.h", "filesys.h", "files.h", "feature.h", "fdsocket.h", "eval.h", "error.h", "eq.h", "dynwind.h", "debug.h", "continuations.h", "chars.h", "boolean.h", "async.h", "arbiters.h", "append.h", "alist.h". * ioext.c: Get "ioext.h", "fports.h". * kw.c: Get "kw.h", "smob.h", "mbstrings.h", "genio.h". * list.c: Get "list.h", "eq.h". * load.c: Get "load.h", "eval.h", "read.h", "fports.h". * mallocs.c: Get "smob.h", "genio.h". * markers.c: Get "markers.h". * mbstrings.c: Get "mbstrings.h", "read.h", "genio.h", "unif.h", "chars.h". * numbers.c: Get "unif.h", "genio.h". * objprop.c: Get "objprop.h", "weaks.h", "alist.h", "hashtab.h". * options.c: Get "options.h". * ports.c: Get "ports.h", "vports.h", "strports.h", "fports.h", "markers.h", "chars.h", "genio.h". * posix.c: Get "posix.h", "sequences.h", "feature.h", "unif.h", "read.h", "scmsigs.h", "genio.h", "fports.h". * print.c: Get "print.h", "unif.h", "weaks.h", "read.h", "procprop.h", "eval.h", "smob.h", "mbstrings.h", "genio.h", "chars.h". * procprop.c: Get "procprop.h", "eval.h", "alist.h". * procs.c: Get "procs.h". * ramap.c: Get "ramap.h", "feature.h", "eval.h", "eq.h", "chars.h", "smob.h", "unif.h". * read.c: Get "alist.h", "kw.h", "mbstrings.h", "unif.h", "eval.h", "genio.h", "chars.h". * root.c: Get "root.h", "stackchk.h". * scmsigs.c: Get "scmsigs.h". * sequences.c: Get "sequences.h". * simpos.c: Get "simpos.h", "scmsigs.h". * smob.c: Get "smob.h". * socket.c: Get "socket.h", "feature.h". * srcprop.c: Get "srcprop.h", "weaks.h", "hashtab.h", "debug.h", "alist.h", "smob.h". * stackchk.c: Get "stackchk.h", "genio.h". * stime.c: Get "stime.h"."libguile/continuations.h". * strings.c: Get "strings.h", "chars.h". * strop.c: Get "strop.h", "chars.h". * strorder.c: Get "strorder.h", "chars.h". * strports.c: Get "strports.h", "print.h", "eval.h", "unif.h". * struct.c: Get "struct.h", "chars.h". * symbols.c: Get "symbols.h", "mbstrings.h", "alist.h", "variable.h", "eval.h", "chars.h". * tag.c: Get "tag.h", "struct.h", "chars.h". * throw.c: Get "throw.h", "continuations.h", "debug.h", "dynwind.h", "eval.h", "alist.h", "smob.h", "genio.h". * unif.c: Get "unif.h", "feature.h", "strop.h", "sequences.h", "smob.h", "genio.h", "eval.h", "chars.h". * variable.c: Get "variable.h", "smob.h", "genio.h". * vectors.c: Get "vectors.h", "eq.h". * version.c: Get "version.h". * vports.c: Get "vports.h", "fports.h", "chars.h", "eval.h". * weaks.c: Get "weaks.h". * stackchk.h: #include "libguile/debug.h", * print.h, read.h: #include "options.h", since everyone who uses either of these files will need that. * smob.h: #include "ports.h", "genio.h", and "print.h", since anyone who uses this file will need them to define the smob printing functions. Also, get markers.h, since people will need to #define the mark functions. * smob.h (scm_ptobfuns, SCM_PTOBNUM): Definitions moved... * ports.h: ... to here. * ports.h (scm_port_table_size): Explicitly give type as 'int'; don't rely on archaic C default type rules. * fports.h: #include "libguile/ports.h", since you need that in order to parse this. * genio.h: #include "libguile/print.h", because you need that to parse this; don't bother #including "ports.h", since print.h gets that. * error.h: Don't #include "pairs.h"; _scm.h will do that now. * eval.h (scm_top_level_lookup_thunk_var): Remove declaration for this; it's now a reference to an element of *scm_root. * debug.h: Don't #include "options.h"; the compiler won't be able to find that once the headers are installed; instead, #include "libguile/options.h". * gc.h: Same, with marksweep.h. * mbstrings.h: Same, with symbols.h. * scmhob.h: Same, with _scm.h. * smob.h: Same, with params.h. * Makefile.in (depends): Don't nuke scmconfig.h and the generated C files; there's no need for this, and it forces recompilations unnecessarily. Sat Sep 7 06:57:23 1996 Gary Houston * error.c (scm_error): declare scm_error_callback. * error.h: prototype for scm_error_callback. * __scm.h: define lgh_error. (SCM_SYSERROR): redefine using lgh_error. Thu Sep 5 22:40:06 1996 Gary Houston * error.c (scm_error): new procedure. * error.h: prototype for scm_error. * Makefile.in (install): install scmconfig.h from the current directory, not $(srcdir). Thu Sep 5 11:38:07 1996 Jim Blandy * alist.h, append.h, arbiters.h, async.h, boolean.h, chars.h, continuations.h, debug.h, dynwind.h, error.h, eval.h, fdsocket.h, feature.h, filesys.h, fports.h, gc.h, gdbint.h, genio.h, gsubr.h, hash.h, init.h, ioext.h, kw.h, list.h, markers.h, marksweep.h, mbstrings.h, numbers.h, objprop.h, options.h, pairs.h, ports.h, posix.h, print.h, procprop.h, procs.h, ramap.h, read.h, root.h, sequences.h, smob.h, socket.h, srcprop.h, stackchk.h, stime.h, strings.h, strop.h, strorder.h, strports.h, struct.h, symbols.h, tag.h, throw.h, unif.h, variable.h, vectors.h, version.h, vports.h, weaks.h: #include "libguile/__scm.h", not . This allows 'gcc -MM' to determine which dependencies are within libguile properly. Thu Sep 5 11:38:07 1996 Jim Blandy * Makefile.in (.c.x): Simplify; there's no need to run this rule when scmconfig.h doesn't exist. * load.c (scm_sys_try_load): Correct spelling. * feature.c (scm_loc_features): Make this static. * Makefile.in (libpath.h): Omit trailing slash from path. We shouldn't require it of users, so why put it here? Move code to initialize and search %load-path from ice-9 to C code, so we can use the load-path to find the ice-9 boot code; this makes it easier to run Guile without installing it. See corresponding changes in guile/Makefile.in. * feature.c: Move stuff concerned with the load path to load.c. (scm_compiled_library_path): Deleted. Don't #include libpath.h here. * feature.h: Don't mention scm_compiled_library_path. * load.c: #include "libpath.h" here, as well as , , and (if present). (R_OK): #define if the system hasn't deigned to. (scm_loc_load_path): New variable. (scm_init_load_path, scm_sys_search_load_path, scm_sys_try_load_path): New functions. (scm_init_load): Initialize scm_loc_load_path to point to the value cell of the Scheme %load-path variable. * load.h: Add declarations for scm_sys_search_load_path, scm_sys_try_load_path. * init.c: Call scm_init_load_path. * Makefile.in (feature.o, load.o): Dependencies updated. * load.c, load.h: Rewrite using PROTO macro. Thu Sep 5 01:54:33 1996 Mikael Djurfeldt * gc.c (scm_cellp): New function: C predicate to determine if an SCM value can be regarded as a pointer to a cell on the heap. * gc.h: Added declaration of scm_cellp. * gdb_interface.h: New file: The GDB interface header from the GDB distribution. * gdbint.c: New file: GDB interface. * gdbint.h: New file: GDB interface. * libguile.h: Added #include . * init.c (scm_boot_guile): Added scm_init_gdbint. * Makefile.in: Added gdb_interface.h, gdbint.[hc]. Added -I.. to INCLUDE_CFLAGS (otherwise the include files won't be found if object files and source are kept separate). Wed Sep 4 14:35:02 1996 Jim Blandy * feature.h, feature.c: Use PROTO macro, instead of #if __STDC__. Wed Sep 4 01:30:47 1996 Jim Blandy * configure.in: Don't substitute the values of TCL_SRC_DIR and TK_SRC_DIR; they're not relevant any more. * Makefile.in (CC): Don't list -Wall here; it's a GCC-specific flag. * configure.in: Instead, put it in CFLAGS here, iff we're using GCC. Wed Sep 4 00:55:49 1996 Jim Blandy * PLUGIN/guile.config (xtra_cflags): Include .. in the header search path, so we can find the headers. * Makefile.in (ancillary): List aclocal.m4, for 'make dist'. * Makefile.in (ALL_CFLAGS): Don't mention CFLAGS here; it's implicit in the .c.o rule. (.c.x): Don't mention ALL_CFLAGS here; its value is included in $(CC) already. Put the library path in a header file, instead of passing it on the command line in every compilation. * Makefile.in (libpath.h): New target. (feature.o): Depend on libpath.h. (clean): Delete libpath.h. (ALL_CFLAGS): Don't use -DLIBRARY_PATH here. Instead ... * feature.c: ... #include "libpath.h" here. * .cvsignore: Ignore libpath.h. * Don't install the unwashed masses of Guile header files in the main #include path; put most of them in a subdirectory called 'libguile'. This avoids naming conflicts between Guile header files and system header files (of which there were a few). * Makefile.in (pkgincludedir): Deleted. (innerincludedir): New variable; this and $(includedir) are enough. (INCLUDE_CFLAGS): Search for headers in "-I$(srcdir)/..". (installed_h_files): Divide this up. Now this variable lists those header files which should go into $(includedir) (i.e. appear directly in the #include path), and ... (inner_h_files): ... this new variable says which files appear in a subdirectory, and are referred to as . (h_files): List them both. (install): Create innerincludedir, not pkgincludedir. Put the installed_h_files and inner_h_files in their proper places. (uninstall): Corresponding changes. * alist.h, append.h, arbiters.h, async.h, boolean.h, chars.h, continuations.h, debug.h, dynwind.h, error.h, eval.h, fdsocket.h, feature.h, fports.h, gc.h, genio.h, gsubr.h, hash.h, init.h, ioext.h, kw.h, libguile.h, list.h, markers.h, marksweep.h, mbstrings.h, numbers.h, options.h, pairs.h, ports.h, posix.h, print.h, procprop.h, procs.h, ramap.h, read.h, root.h, sequences.h, smob.h, socket.h, srcprop.h, stackchk.h, stime.h, strings.h, strop.h, strorder.h, strports.h, struct.h, symbols.h, tag.h, throw.h, unif.h, variable.h, vectors.h, version.h, vports.h, weaks.h: Find __scm.h in its new location. * __scm.h: Find scmconfig.h and tags.h in their new locations (they're both "inner" files). Tue Sep 3 20:27:35 1996 Jim Blandy * Makefile.in (.c.x): Remove duplicate use of $(ALL_CFLAGS). Tue Sep 3 19:53:00 1996 Jim Blandy * posix.c: Doc fixes. Mon Sep 2 15:22:40 1996 Jim Blandy * socket.c: Don't include a prototype for inet_aton; just use a K&R style declaration, to avoid warnings but minimize the chance of conflicts with the system. On NextStep, doesn't define struct utime, unless we #define _POSIX_SOURCE before #including it. * aclocal.m4 (GUILE_STRUCT_UTIMBUF): New test. * acconfig.h: New comment text for above CPP symbol. * configure.in: Call it. * posix.c: #define _POSIX_SOURCE if it seems necessary. * configure.in (AC_CHECK_HEADERS): Include sys/utime.h and utime.h in the list. * posix.c: Check HAVE_SYS_UTIME_H and HAVE_UTIME_H, instead of testing for __EMX__. * posix.c: #include , if it exists. * posix.c: Cast the return result to GETGROUPS_T, not gid_t; we don't even know if the latter exists. * posix.c (s_sys_setpgid, s_sys_setsid, s_sys_ctermid, s_sys_tcgetpgrp, s_sys_tcsetpgrp): Renamed from s_setpgid, s_setsid, s_ctermid, s_tcgetpgrp, s_tcsetpgrp, for consistency. * posix.c (R_OK, W_OK, X_OK, F_OK): #define these if the system's header files don't. (scm_init_posix): Use them when initializing the Scheme constants of the same name. Fri Aug 30 16:01:30 1996 Jim Blandy * Makefile.in (libdir, includedir, bindir): Use the autoconf-supplied values, instead of deriving them ourselves. (pkgincludedir, datadir, pkgdatadir): New variables. (install, uninstall): Put the header files in a special subdirectory, not in the main search path. * Makefile.in (ALL_CFLAGS): Provide the proper value for LIBRARY_PATH --- use $(pkgdatadir) instead of $(libdir). * Makefile.in (IMPLPATH): Deleted; never used. * Makefile.in (TCL_SRC_DIR, TK_SRC_DIR): Deleted; we don't depend on the Tcl/Tk source any more. (INCLUDE_CFLAGS): Remove references to the above. * Makefile.in (version.o): Corrected dependencies. Thu Aug 29 23:06:19 1996 Thomas Morgan * libguile.h: #include "version.h" * init.c (scm_boot_guile): Call scm_init_version. * gscm.c (gscm_run_scm): Call scm_init_version. * configure.in (GUILE_MAJOR_VERSION, GUILE_MINOR_VERSION, GUILE_VERSION): AC_DEFINE these. (acconfig.h): #undef the above symbols. * Makefile.in (libobjs): Add version.o. (installed_h_files): Add version.h. (c_files): Add version.c. (gen_c_files): Add version.x. (version.o): New rule. (alist.o, append.o, appinit.o, arbiters.o, async.o, boolean.o, chars.o, continuations.o, dynwind.o, eq.o, error.o, eval.o, fdsocket.o, feature.o, files.o, filesys.o, fports.o, gc.o, genio.o, gsubr.o, hash.o, hashtab.o, init.o, kw.o, list.o, load.o, mallocs.o, markers.o, marksweep.o, mbstrings.o, numbers.o, objprop.o, pairs.o, ports.o, posix.o, print.o, procprop.o, procs.o, ramap.o, read.o, root.o, scmsigs.o, sequences.o, simpos.o, smob.o, socket.o, stackchk.o, stime.o, strings.o, strop.o, strorder.o, strports.o, struct.o, symbols.o, tag.o, throw.o, unif.o, variable.o, vectors.o, version.o, vports.o, weaks.o): Add version.h to dependency lists. (markers.o): Remove duplicate rule. * version.h: New file. * version.c: New file. Thu Aug 29 15:21:39 1996 Jim Blandy * symbols.c (scm_strhash): scm_downcase is now a function, not an array; use it appropriately. Since GCC is quite happy to subscript functions, it never warned us about this; we should use -Wpointer-arith in the future. I guess we never tested case-insensitivity. Wed Aug 28 18:52:22 1996 Jim Blandy * socket.c: Doc and copyright fixes. Sat Aug 24 05:29:19 1996 Mikael Djurfeldt * debug.c: Fixed and improved gdb support. Fri Aug 23 18:00:16 1996 Mikael Djurfeldt * socket.c: Added declaration of inet_aton to avoid compiler warning. (Hope this solution is correct.) * stime.c: Added declaration of ftime. (This is missing in Solaris 2 headers.) Fri Aug 23 02:03:32 1996 Gary Houston * configure, scmconfig.h.in: Updated, using autoconf and autoheader. * Makefile.in (c_files): add strerror.c. * strerror.c: new file from Emacs' sysdep.c. maybe configure should also check for sys_errlist. * configure.in (AC_REPLACE_FUNCS): add strerror. Fri Aug 23 03:02:46 1996 Mikael Djurfeldt * debug.c (scm_init_debug): Added initialization for scm_evaluator_traps. * debug.h, debug.c: Various name changes. (Mostly prefixing with SCM_.) Renamed "debug-options" --> "debug-options-interface". See commentary in options.c. * options.h, options.c: Options now have documentation strings. Also added a long explanatory commentary. * eval.c, print.h, print.c, read.h, read.c: Modifications to run-time options. * gscm.c, init.c, root.c, throw.c: Bug fixes: last_debug_info_frame is now updated in all cases. * __scm.h, stackchk.h, stackchk.c: Guile now performs stack checking. Thu Aug 22 17:34:17 1996 Mikael Djurfeldt * __scm.h: SCM_STACK_LIMIT removed (now a run-time option). Added option STACK_CHECKING. Tue Aug 20 18:48:40 1996 Mikael Djurfeldt * Makefile.in: Added {debug,options,srcprop}.{h,c} * __scm.h: Removed symbols for debugging support. * acconfig.h: Added symbols for debugging support. * * configure.in: Added user option for debugging support. --enable-debug will include the debugging code into libguile.a. * continuations.c (scm_make_cont): Enlarged the #if 0 around scm_relocate_chunk_to_heap. * * debug.c: New file: low-level debugging support. It also includes support for debugging with gdb. (The extensions to gdb are written by Per Bothner at Cygnus.) * debug.h: New file: low-level debugging support. * * eval.c: scm_m_set and SCM_IM_SET no longer supports multiple argument pairs. Extensive modifications to the debugging evaluator. Added "SECTION:" commentaries to clarify what happens when, during double compilation. Renamed EVALIMP --> EVALIM. Renamed EVAL --> XEVAL. Removed function evalcar. Defined evalcar to scm_eval_car. Added explanation of "EVAL" symbols to the beginning of the file. New procedure: scm_unmemocopy. Added some global state variables needed by the debugging evaluator: scm_ceval_ptr, last_debug_info_frame, debug_mode, check_entry, check_apply, check_exit, debug_options and evaluator_traps. New acro: undefine. * eval.h: Renamed EVAL --> XEVAL. * gc.c (scm_init_storage): Renamed scm_make_weak_hash_table --> scm_make_weak_key_hash_table. * init.c (scm_restart_stack, scm_boot_guile): Added initialization of SCM_DFRAME. Added calls to scm_init_{debug,options,srcprop}. * libguile.h: Conditionally include debug.h * * objprop.c (scm_object_properties, scm_set_object_properties_x): scm_object_properties shouldn't return handle. `handle' now gets initialized in scm_set_object_properties_x. scm_object_properties doesn't any longer create an entry in scm_object_whash. * * options.c: New file: handling of run time options. * options.h: New file: handling of run time options. * posix.c (scm_getpgrp): Cast pointer to getpgrp. * * print.c: New procedure: scm_print_options * print.h: Defines for print options. * * read.c: New procedure: scm_read_options * read.h: Defines for reader options. * root.h: Added scm_source_whash among scm_sys_protects. * * srcprop.c: New file: source properties. * srcprop.h: New file: source properties. * throw.c (jbsmob): Jump buffers are now correctly allocated. (Bug found by A. Green.) * * weak.c: Renamed scm_weak_hash_table --> scm_weak_key_hash_table. * weak.h: Renamed scm_weak_hash_table --> scm_weak_key_hash_table. Thu Aug 15 02:05:14 1996 Jim Blandy * libguile.h: #include "objprop.h"; I guess this was forgotten. * init.c (scm_boot_guile): Don't call scm_init_rgx; it's a plugin, and should be called by the final client. Wed Aug 14 21:41:37 1996 Jim Blandy * gc.h: Use the PROTO macro when declaring functions. * gc.c: Use the PROTO macro when declaring static functions. Remove the CPP hair around function definitions. * gc.c (scm_init_storage): Initialize scm_asyncs. * libguile.h: #include "__scm.h" before testing the STDC_HEADERS preprocessor symbol; "__scm.h" is where it might get #defined. * __scm.h: Similar: #include before testing HAVE_LIMITS_H. * __scm.h: It's HAVE_LIMITS_H, not HAVE_LIMITSH. Fri Aug 9 11:09:28 1996 Jim Blandy * * init.c (scm_boot_guile): Add init_func argument; call (*init_func) instead of calling scm_appinit; it's ucky to hard-code names for the user's procedures. * init.h (scm_boot_guile): Adjust declaration. * __scm.h (PROTO): New macro, for declaring functions with prototypes. * init.h (scm_start_stack, scm_restart_stack): Use PROTO; eliminate all the __STDC__ conditionals. (scm_boot_guile): Add declaration. * init.c (scm_start_stack, scm_restart_stack, scm_boot_guile): Remove __STDC__ conditionals around function definitions; the declarations in init.h will provide the same information, more usefully. * __scm.h (SCM_SYSMISSING): When we don't have ENOSYS, don't complain about it in the error message; the error message is adequate without that note, and there's nothing the user can do about it. Wed Aug 7 14:14:46 1996 Jim Blandy * Makefile.in (ancillary): Drop def.sed. * posix.c (scm_init_posix): Use numeric values, rather than CPP symbols, when defining the scheme values R_OK, W_OK, X_OK, and F_OK. The symbols aren't available on some systems, and I'm pretty sure their values are fixed by common widespread practice. * ioext.c (scm_init_ioext): Code here defined them too; remove it. More functions unavailable on some systems. * configure.in (AC_CHECK_FUNCS): Add ctermid, setpgid, setsid, tcgetpgrp, tcsetpgrp, and waitpid to the list of functions to check for. * configure, scmconfig.h.in: Updated, using autoconf and autoheader. * posix.c (scm_sys_ctermid, scm_sys_setpgid, scm_sys_setsid, scm_sys_tcgetpgrp, scm_sys_tcsetpgrp, scm_sys_waitpid): Put the bodies of these functions in "#ifdef HAVE_MUMBLE" clauses, with a stub that signals an error as the #else. * Makefile.in (ancillary): Drop acconfig-1.5.h; add acconfig.h. Wed Aug 7 06:28:42 1996 Gary Houston * Fixes motivated by Petr Adamek : * unif.c: include ramap.h. * read.c (endif): case_insensative_p renamed case_insensitive_p. * ramap.h: rename scm_array_copy prototypes to scm_array_copy_x. * ports.c: include sys/ioctl.h. * scmconfig.h.in: add HAVE_SYS_IOCTL_H. * configure.in: check for sys/ioctl.h. * ports.c: include not "malloc.h". * mallocs.c: include not "malloc.h", likewise for unistd.h. * fports.c: remove ttyname and tmpnam declarations. * posix.c: fewer ttyname declarations. * fports.c: include not "string.h". * init.c, ioext.c: include string.h and unistd.h. * gc.c: include not "malloc.h", likewise for unistd.h. * async.c, strings.h, strports.c, struct.c, symbols.c, feature.c, genio.c, simpos.c, vports.c: include string.h. * socket.c, fdsocket.c: include string.h only if HAVE_STRING_H. * fdsocket.c (getsockopt, setsockopt): change type of optlen from scm_sizet to int. (scm_addr_buffer_size): change type from scm_sizet to int. (accept, getsockname, getpeername, recvfrom): change type of tmp_size from scm_sizet to int. * error.c: include unistd.h. * __scm.h: (SCM_SYSMISSING): another version in case ENOSYS isn't defined. * Makefile.in: remove references to .hd, .cd suffix and __scm.hd. * __scm.hd, def.sed: deleted. Tue Aug 6 14:49:08 1996 Jim Blandy Changes for NeXT, suggested by Robert Brown. * configure.in: Call AC_TYPE_MODE_T. (AC_CHECK_HEADERS): Add libc.h, to get more prototypes on the NeXT. Put header file list in alphabetical order. * configure, scmconfig.h.in: Regenerated. * filesys.c [HAVE_LIBC_H]: #include . * filesys.c [HAVE_STRING_H]: #include , to get prototype for strerror. * acconfig.h: New file, providing documentation for the CPP symbols defined in configure.in * acconfig-1.5.h: Removed; superceded by the above. Sat Aug 3 01:27:14 1996 Gary Houston * ioext.c (scm_sys_fdopen): fix the port-table assignment. * * fports.c (scm_open_file): don't return #f, throw error. * * ioext.c (fileno): renamed from %fileno. (soft-fileno): deleted. * ports.c (scm_port_revealed): don't need to check for -1 from scm_revealed_count. (scm_set_port_revealed_x): return unspecified, not #f. * * ioext.c (primitive-move->fdes): return #t or #f, not 1 or 0. * fdsocket.c: getsockopt, setsockopt: use HAVE_STRUCT_LINGER. * scmconfig.h.in: add HAVE_STRUCT_LINGER. * configure.in: check for struct linger, set HAVE_STRUCT_LINGER. Thu Aug 1 02:58:39 1996 Jim Blandy * filesys.c, posix.c: #include before . This is necessary on Ultrix, and doesn't hurt portability. * Makefile.in (dist-dir): New target, implementing a new dist system. (installed_h_files): Put in alphabetical order. Remove duplicate entries for markers.h and unif.h. (c_files): Remove duplicate entries for markers.c. (ancillary): Renamed from anillery; all uses changed. Remove PLUGIN; it's a directory, and needs special treatment in dist-dir. Remove all the ../doc/* files; doc/Makefile.in handles that. * Makefile.in (libobjs): Remove duplicate entry for markers.o. * Makefile.in (.c.x): Compensate for Ultrix's broken Bourne shell: every if must have an else, or else the whole command has a non-zero exit code whenever the if's condition is false. Thu Aug 1 08:22:24 1996 Gary Houston * posix.c: include string.h. Wed Jul 31 23:43:05 1996 Gary Houston * * numbers.c: rename %expt -> $expt, %atan2 -> $atan2, as it must have been once. * * posix.c, ioext.c, socket.c, fdsocket.c, files.c, filesys.c, simpos.c: Remove leading % from scheme names. Do not return error values, call SCM_SYSERROR or similar. * __scm.h (SCM_SYSERROR, SCM_SYSMISSING): new macros. Wed Jun 12 00:28:31 1996 Tom Lord * struct.c (scm_init_struct): new file. Fri Jun 7 14:02:00 1996 Tom Lord * list.c (scm_list_tail): list-cdr-ref is the same as list-tail. (scm_list_head): added list-head for rapidly chopping argument lists off of longer lists (and similar). Tue Jun 4 09:40:33 1996 Tom Lord * objprop.c (scm_object_property): assq the cdr of the whash handle for obj, not the handle itself. Mon Jun 3 17:19:30 1996 Tom Lord * gc.c (scm_mark_weak_vector_spines): Mark the spines (alists) of weak hash tables last of all marking to avoid an obscure gc bug. WARNING: circular lists stored in a weak hash table will hose us. Fri May 24 09:53:39 1996 Tom Lord * vectors.c (scm_vector_move_left_x, scm_vector_move_right_x): new functions similar to scm_substring_move_left_x and scm_substring_move_right_x. Wed May 22 20:07:01 1996 Tom Lord * init.c (scm_boot_guile): prevent gc with scm_block_gc not scm_gc_heap_lock! Wed May 15 16:13:29 1996 Tom Lord * ports.c (scm_unread_char): scm_gen_ungetc as a scheme procedure. Thu May 9 09:33:17 1996 Tom Lord * strports.c (scm_strprint_obj): convenience function. C for (lambda (obj) (call-with-output-string (lambda (p) (write obj p)))) * guile-{tcl,tk}.[ch], events.[ch], keysyms.[ch], tcl-channels.[ch] removed to a separate library * init.c (scm_boot_guile): copied from guile-tcl.c. Initialization specific to tcl interpreters removed. Wed May 8 15:07:37 1996 Tom Lord * ports.c (scm_ports_prehistory): size malloced here doesn't matter so long as it is non-0 (got rid of "* 4"). Tue May 7 11:43:37 1996 Tom Lord * gscm.h: gscm_mkarray eliminated (presumably was not being used since its definition was bogus). Mon May 6 13:02:56 1996 Tom Lord * mallocs.[ch]: back again (for rx at least). Wed Apr 17 08:54:20 1996 Tom Lord * ports.c: removed functions relating to the mapping between ports and descriptors. (That stuff is unix-specific and should be collected in a separate library). * ramap.c (scm_array_copy): return # not #. (Tom Mckay@avanticorp.com) Mon Apr 15 14:16:55 1996 Tom Lord * gc.c (scm_gc_sweep): Immediates in weak vectors were not handled correctly (SCM_FREEP was applied to them) -- test for NIMP. Keys in weak hash tables were spuriously (though harmlessly) being overwritten with #f. (brown@grettir.bibliotech.com) Tue Apr 2 22:25:00 1996 Tom Lord * gc.c (scm_unhash_name): new procedure, unhash-name, flushes glocs for a specific symbol or for all symbols. Mon Apr 1 10:34:55 1996 Tom Lord * gc.c (scm_gc_mark): mark weak hash tables correctly (was getting weak keys and weak values confused). Thu Mar 14 22:20:20 1996 Tom Lord * list.c (scm_last_pair): map '()=>'() Wed Mar 13 16:43:34 1996 Tom Lord * pairs.c, hashtab.c, list.c, alist.c append.c, sequences.c: Generalized assoc and hash-table functions. Factored pairs.c into multiple files. Fri Mar 8 14:44:39 1996 Tom Lord * gscm.c (gscm_run_scm): got rid of objprop. Fri Mar 1 10:39:52 1996 Tom Lord * genio.c (scm_getc): NOTE: fgetc may not be interruptable. * procprop.c (scm_stand_in_scm_proc): NOTE: don't use a alist here. (scm_set_procedure_properties_x): fix type checking throughout this file. * gc.c (scm_gc_sweep): free heap segments with free, not must_free. * ports.c (scm_remove_from_port_table): adjust scm_mallocated after freeing part of the port table. Thu Feb 29 16:21:17 1996 Tom Lord * strports.c (scm_mkstrport): * vports.c (scm_make_soft_port): allocate a port table entry (possibly triggering gc) before setting the tag of the corresponding ports handle. * pairs.c (scm_delq_x): never throw an error. * vectors.c (scm_make_vector): made the default vector fill argument into '() (much more useful than the previous value, "#unspecified") Mon Feb 26 17:19:09 1996 Tom Lord * ports.c (scm_add_to_port_table): Added fields to port table entries: file_name, line_num, col. Update these in open_file, gen_getc and gen_ungetc. Added procedures to access those fields. Sun Feb 25 00:10:36 1996 Tom Lord * procs.c (scm_make_subr_opt): new entry point for making anonymous subrs. Sat Feb 24 17:11:31 1996 Tom Lord * gc.h: SCM_STACK_GROWS_UP is now set by autoconf. Fri Feb 23 10:26:29 1996 Tom Lord * numbers.c (scm_exact_p): This function no longer implements "integer?". Thu Feb 22 20:56:16 1996 Tom Lord * gc.c (scm_gc_end): simulate a signal at the end of each GC. (scm_gc_stats): return an assoc of useful data. Replaces "room" and the stats reporting formerlly built into repl. * repl.[ch]: removed. GC statistics keeping moved to gc.c. Other statistics keeping can be done from Scheme. REPLS are now written in Scheme. Wed Feb 21 10:28:53 1996 Tom Lord * cnsvobj.c (gscm_is_gscm_obj): new file for old functions (icky conservatively marked objects). * throw.c (scm_ithrow): Unwind up to the right catch during a throw! * error.c (scm_init_error): init system_error_sym here, not in repl.c. * feature.c (scm_compiled_library_path): moved here from repl.c. This file is for stuff relating specifically to Scheme libraries like slib. * eval.c (scm_m_define): don't give warning about redefinition, don't check verbosity. NOTE: this should throw a resumable exception with parameters -- the name, the top-level env, the variable, the definition, #t/#f: redefining builtin? * repl.c (scm_gc_begin/end): don't print a message, don't check verbosity. * error.c: scm_warn eliminated. * read.c (scm_lreadr): extra right paren gets an error, not a warning. * repl.c, marksweep.c, gc.c (various): lose exit_report, growth_mon. * gscm.c: got rid of verbosity functions. Tue Feb 20 00:19:10 1996 Tom Lord * throw.c (scm_ithrow): guard against the bad-throw hook changing between the call to procedurep and use. * error.c (scm_everr): * gc.c (fixconfig): * gsubr.c (scm_make_gsubr): use exit, not scm_quit. still wrong, but less so. * strports.c: don't reveal the port's string to the caller because it changes size. (stputc stwrite): check/change the strings length with interrupts blocked. * objprop.c (scm_set_object_property_x &c): use the generic hashing functions and be threadsafe. * eval.c (scm_unmemocar): do this operation in a thread-safe way. (per suggestion jaffer@gnu.ai.mit.edu). * mbstrings.c (scm_multi_byte_string): guard against argument list changing length. * strings.c (scm_make_string): loop cleanup * unif.c (scm_vector_set_length_x): scm_vector_set_length_x no longer a scheme function. * weaks.c (scm_weak_vector): guard against argument list changing length. * variable.c (scm_builtin_variable): check for/make a built-in variable automicly. * vectors.c (scm_vector): while filling the new array, guard against a list of fill elements that grows after the vector is allocated. * hashtab.c -- new file: general hash table functions. hash, hashq, hashv, hashx. * tags.h: made wvect an option bit of vector. Mon Feb 19 09:38:05 1996 Tom Lord * symbols.c: made the basic symbol table operations atomic. * root.c &c.: collected stack-specific global state. linum/colnum etc *should* be port-specific state. * struct.c (scm_init_struct): init the first struct type during initialization to fix a race condition. * continuations.c (scm_dynthrow): pass throwval in the 'regs' object, not in a global. (suggested by green@cygnus, jaffer@gnu.ai.mit.edu) * throw.c (_scm_throw): Pass throwval on the stack, not in a global (suggested by green@cygnus, jaffer@gnu.ai.mit.edu) * *.[ch]: namespace cleanup. Changed all (nearly) exported CPP and C symbols to begin with SCM_ or scm_. Sun Feb 18 15:55:38 1996 Tom Lord * gsubr.c (scm_gsubr_apply): statically allocate the array of arguments (bothner@cygnus.com). Sat Feb 17 20:20:40 1996 Tom Lord * scmsigs.c: Simplified to use async rountines. * async.c: New support for interrupt handlers. Thu Feb 15 11:39:09 1996 Tom Lord * symbols.c (scm_string_to_symbol et al.): number of tweaky changes to set the multi_byte flag correctly in symbols. This is wrong. intern_obbary_soft and msymbolize should take an extra parameter. Also, weird multibyte symbols don't print correctly. The weird symbol syntax is also a bit bogus (emacs doesn't quite cope). Tue Feb 13 11:39:37 1996 Tom Lord * symbols.c (scm_string_to_obarray_symbol): obarray == #f means use the system symhash. == #t means create an uninterned symbol. Wed Feb 7 09:28:02 1996 Tom Lord * strings.c (scm_make_shared_substring): build'em. It might better to keep a table of these and use one less cons-pair per shared-substring. Tue Feb 6 17:45:21 1996 Tom Lord * strings.c (scm_string_shared_substring): create shared substrings. (Doesn't handle mb strings yet). * mbstrings.c (scm_print_mb_string): handle RO strings. * print.c (scm_iprin1): print substrings as their non-substring counterparts (dubious). * marksweep.c (scm_gc_mark scm_gc_sweep): handle RO and MB strings. * hash.c (scm_hasher): hash RO and MB strings as bytestrings. * eval.c (SCM_CEVAL): self-evaluate RO and MB strings. * eq.c (scm_equal_p): handle RO and MB strings. * symbols.c (scm_string_to_symbol): (scm_string_to_obarray_symbol): * strop.c (scm_i_index): (scm_i_rindex): (scm_string_null_p): (scm_string_to_list): * strings.c (scm_string_length): (scm_string_ref): (scm_substring): (scm_string_append): * simpos.c (scm_system): (scm_getenv): * fports.c (scm_open_file): * strorder.c (scm_string_equal_p): (scm_string_ci_equal_p): (scm_string_less_p): (scm_string_ci_less_p): * pairs.c (scm_obj_length): * mbstrings.c (scm_multi_byte_string_length): Use RO string macros for RO strings. Tue Jan 30 09:19:08 1996 Tom Lord * Makefile.in (CFLAGS ALL_CFLAGS): be more standard. * strop.c (scm_i_rindex, scm_i_index): Don't use the BSD functions index/rindex. Do handle embedded \000 characters. Sun Jan 28 13:16:18 1996 Tom Lord * error.c (def_err_response): (int)scm_err_pos => (long)scm_err_pos Eliminate a (presumed) warning on some systems. * gscm.c (gscm_run_scm): SCM_INIT_PATH => GUILE_INIT_PATH (Mikael Djurfeldt ) Sat Jan 27 12:36:55 1996 Tom Lord * eval.c (scm_map): added argument type checking. (kawai@sail.t.u-tokyo.ac.jp) * gscm.c (gscm_set_procedure_properties_x): parameter "new" => "new_val" for C++. (Seth Alves ) (gscm_cstr): uses an uninitialized local variable causing segv. (kawai@sail.t.u-tokyo.ac.jp) * lvectors.c (scm_get_lvector_hook): In guile-ii, the lvector code was broken. It was fixed in guile-iii. It seems to me like if it is broken again in guile-iv...Here is a patch. "! || (LENGTH (keyvec) == 0))" (From: Mikael Djurfeldt ) * gscm.c (gscm_sys_default_verbosity): incorrectly declared for non-__STDC__ (Tom_Mckay@avanticorp.com) * ports.c (scm_setfileno): Tweak the macro a bit to make it easier to port to systems that use more than a single structure field to hold a descriptor. * debug.c (change_mode): Avoid GNUCism "int foo[n];" Give a warning, not an error, for unrecognized modes. * eval.c (SCM_CEVAL): static char scm_s_for_each[]; static char scm_s_map[]; not needed. * strings.c (scm_string_p): static char s_string[]; (see next entry) * struct.c (scm_sys_struct_set_x): static char s_sys_make_struct[]; static char s_sys_struct_ref[]; static char s_sys_struct_set_x[]; Rearrange code to eliminate those forward decls for the sake of broken compilers. * variable.c (make_vcell_variable): static char s_make_variable[]; isn't needed. * fports.c (scm_port_mode): chars modes[3] = ""; to chars modes[3]; modes[0] = '\0'; (Tom_Mckay@avanticorp.com) * pairs.c (scm_set_cdr_x): non-__STDC__ declaration of scm_cons2(), scm_acons(), and scm_set_cdr_x() missing semicolon (Tom_Mckay@avanticorp.com) * numbers.c (scm_num_eq_p): Non-__STDC__ declaration of scm_num_eq_p() was scm_equal_p(). (Tom_Mckay@avanticorp.com) * symbols.c (msymbolize): "CHARS(X) = " => "SETCHARS..." (Tom_Mckay@avanticorp.com) Fri Jan 26 14:03:01 1996 Tom Lord * weaks.c (scm_make_weak_vector): "VELTS(X) =" => "SETVELTS..." (Tom_Mckay@avanticorp.com) * strop.c (scm_substring_fill_x): Non-__STDC__ declaration of scm_substring_fill_x() missing semicolon (Tom_Mckay@avanticorp.com) * eval.c (SCM_APPLY): variables "debug_info" -> dbg_info. Works around a compiler bug on some machines. (Tom_Mckay@avanticorp.com) * _scm.h (CxR functions): #define CxR SCM_CxR => #define CxR(X) SCM_CxR(X) Works around a compiler bug on some machines. (Tom_Mckay@avanticorp.com) * lvectors.c (scm_lvector_set_x): avoid VELTS (VELTS (...)[..]) which can turn into an obscure gc bug. * chars.c (scm_char_p): fixed PROC call. * gscm.h (gscm_vset): use scm_vector_set_x not (the missing) scm_vector_set. Tue Jan 23 13:29:40 1996 Tom Lord * elisp.c (new file): dynamic scoping and other bits for elisp. Don't use this yet unless you specificly want to hack on elisp emulation. * dynwind.c (scm_dowinds): When entering or leaving a dynamic scope created by scm_with_dynamic_bindings_operation_x, swap the bindings of that scope with the corresponding globals. * continuations.c (scm_make_cont): when a continuation is captured, relocate the continuation stack chunks registered on the wind chain to the heap. Sun Jan 21 19:31:17 1996 Tom Lord * eval.c (SCM_CEVAL): if the function position evaluates to a macro, process it accordingly. (Previously, macros were handled only if the function position was a symbol naming a variable bound to a macro). Sat Jan 20 23:21:37 1996 Tom Lord * eval.c (scm_m_set): allow multi-variable set! like (set! x 1 y 2 z 3). Wed Dec 6 02:40:49 1995 Tom Lord * ports.h fports.c vports.c marksweep.c gc.c strports.c: moved the STREAM of ports into the port table and replaced it with a port-table index. * repl.c (iprin1): added tc7_mb_string -- same as tc7_string. * marksweep.c (scm_gc_mark): added tc7_mb_string -- same as tc7_string. * mbstrings.c (new file): functions on multi-byte strings. * tags.h (scm_typ7_string, scm_typ7_mb_string): added a tag for multi-byte strings. Moved the string tag. * chars.h chars.c repl.c (many functions): made scm_upcase and scm_downcase functions that are safe for extended character sets. Changed the range of integer->char. Changed the type of SCM_ICHR. Tue May 16 17:49:58 1995 Mikael Djurfeldt * guile.c: Changed init file name from "SCM_INIT_PATH" to "GUILE_INIT_PATH" Sun Aug 6 15:14:46 1995 Andrew McCallum * guile.c (gscm_is_gscm_type): New function. (Without this how will we know that it's safe to pass an object to gscm_get_type?) (gscm_get_type): Fix tyop in error message. * variable.c (scm_variable_ref): fixed assertion test. (Robert STRANDH ) * gscm.h: fixed several prototypes, notably gscm_vref. Add gscm_is_eq and temporarily commented out gscm_eq (see the note in gscm.h near gscm_eq if this change effects your code). (Reported by Mark Galassi ) * pairs.c (scm_obj_length): see next entry. * gscm.h (gscm_obj_length): A way to get an integer length for lists, strings, symbols (treated as strings), and vectors. Returns -1 on error. * eq.c (scm_equal_p): fixed smob case. (William Gribble ) * Makefile.in (X_CFLAGS): defined. (William Gribble ) * gscm.h (gscm_2_double): provided now (reported by Mark Galassi ) Tue Jun 13 01:04:09 1995 gnu * Vrooom!