Tue Oct 15 05:34:10 1996 Mikael Djurfeldt * print.c (make_print_state, grow_print_state), print.h: Modified the print state representation: Don't use a tail array for recording of circular references. Resizing of the print state structure invalidates the print state pointer. To avoid passing around an indirect print state reference to all printing functions, we instead let the print state reference a resizable vector. Mon Oct 14 19:25:00 1996 Jim Blandy * alist.c (scm_sloppy_assq, scm_sloppy_assv, scm_sloppy_assoc): Don't crash when passed an improper list terminated by a non-immediate value. Mon Oct 14 19:08:33 1996 Jim Blandy Allocate data for structures on an eight-byte boundary, as required by the tagging system. * struct.c (alloc_struct): New function. (scm_make_struct, scm_make_vtable_vtable): Call it. * struct.h (scm_struct_n_extra_words): Bump to 3. (scm_struct_i_ptr): New "field". * gc.c (scm_gc_sweep): When we need to free the data, use the information stored by alloc_struct to find the beginning of the block allocated to the structure, so we can free it. Mon Oct 14 17:07:55 1996 Mikael Djurfeldt * init.c (scm_boot_guile_1): Moved scm_init_struct in front of scm_init_stacks. * debug.h (SCM_VOIDFRAME, SCM_VOIDFRAMEP): New macros. (scm_debug_info): New member: id. * stacks.c: Stacks are now represented as structs; Stacks have an id given to them by `start-stack'. (scm_last_stack_frame): Added predicates `stack?' and `frame?'. * stacks.h: Added declarations of scm_stack_p and scm_frame_p; Changed stack representation. * debug.c (scm_procedure_name): Try procedure property `name' for compiled closures aswell. * gc.c (scm_init_storage): Initialize scm_stand_in_procs to SCM_EOL. * eval.c: scm_i_name moved to gsubr.c (scm_m_define): Record names of all kinds of procedure objects. (Earlier, only closures were recorded.) * procprop.h: Added declaration of scm_i_name. * gsubr.c: Added global scm_i_name. Added #include "procprop.h". (scm_make_gsubr): Record names of compiled closures. Mon Oct 14 04:21:51 1996 Mikael Djurfeldt * debug.c, debug.h: Removed obsolete code. * continuations.c, continuations.h, debug.c, gc.c, init.c, root.c, stacks.c: Renamed regs --> scm_contregs. * print.c (scm_free_print_state): Cleanup print state before returning it to pool. It is better to do it here than in scm_prin1 since scm_prin1 is called often. * srcprop.c (scm_source_properties, scm_set_source_properties_x, s_set_source_property_x): Check that first argument is a pair or a memoized object. * srcprop.c, srcprop.h: Made scm_i_filename, scm_i_copy, scm_i_line, scm_i_column and scm_i_breakpoint global. * init.c: Added #include "backtrace.h" and #include "stacks.h". (scm_boot_guile_1): Added calls to scm_init_backtrace and scm_init_stacks. * debug.h: Added debug object smob declaration and macro definitions. * configure.in: Build with backtrace.o and stacks.o if debug support enabled. * Makefile.in: Added entries for new files: backtrace.c, backtrace.h, stacks.c and stacks.h. * symbols.c (scm_sym2ovcell): Fixed documentation. * _scm.h (min, max): Added. * async.c: Moved `min' macro to _scm.h. * debug.h: New debug options SCM_BACKTRACE_MAXDEPTH and SCM_BACKTRACE_INDENT. * eval.c: Added new debug options `maxdepth' and `indent'. * print.c (make_print_state): Bugfix: Initialize pstate->ceiling. * print.h: Added selector SCM_PRINT_STATE. * print.c: New functions: scm_make_print_state, scm_free_print_state. * print.h: Added declarations for scm_make_print_state, scm_free_print_state. * * debug.c (scm_m_start_stack): New acro. * debug.h: Small cleanup. * init.c (scm_boot_guile_1): Moved scm_init_debug below scm_init_eval. Sun Oct 13 20:14:53 1996 Jim Blandy * __scm.h, alist.c, alist.h, append.c, append.h, appinit.c, arbiters.c, arbiters.h, async.c, async.h, boolean.c, boolean.h, chars.c, chars.h, continuations.c, continuations.h, debug.c, debug.h, dynwind.c, dynwind.h, eq.c, eq.h, error.c, eval.c, eval.h, extchrs.c, extchrs.h, fdsocket.c, fdsocket.h, filesys.c, filesys.h, fports.c, fports.h, gc.c, gdb_interface.h, gdbint.c, gdbint.h, genio.c, genio.h, gscm.c, gscm.h, gsubr.c, gsubr.h, hash.c, hash.h, hashtab.c, hashtab.h, init.c, ioext.c, ioext.h, kw.c, kw.h, libguile.h, mallocs.c, mallocs.h, markers.c, markers.h, mbstrings.c, mbstrings.h, numbers.c, numbers.h, objprop.c, objprop.h, options.c, options.h, pairs.c, pairs.h, ports.c, ports.h, posix.c, posix.h, print.c, print.h, procprop.c, procprop.h, procs.c, procs.h, ramap.c, ramap.h, read.c, read.h, root.c, scmsigs.c, scmsigs.h, sequences.c, sequences.h, simpos.c, simpos.h, smob.c, socket.c, socket.h, srcprop.c, srcprop.h, stackchk.c, stackchk.h, stime.c, stime.h, strings.c, strings.h, strop.c, strop.h, strorder.c, strorder.h, strports.c, strports.h, struct.c, struct.h, symbols.c, symbols.h, tag.c, tag.h, unif.c, unif.h, variable.c, variable.h, vectors.c, vectors.h, version.c, version.h, vports.c, vports.h, weaks.c, weaks.h: Use SCM_P to declare functions with prototypes. (Patch thanks to Marius Vollmer.) More prototype-related changes from Marius Vollmer: * gdb_interface.h: Wrapped header file in #ifdef/#endif * gscm.h (gscm_run_scm): Added prototype for `initfn' paramter. * ports.h (ptobfuns): Added prototypes. This means some casting in fports.c. * fports.c: Added casts for initializations, since the functions are defined to take FILE * as their stream argument, not SCM. * fdsocket.c, fdsocket.h: Made `init_addr_buffer' static. * genio.c (scm_gen_puts): Changed `unsigned char *str_data' parameter to `char *str_data' to conform to prototype. Sat Oct 12 21:49:29 1996 Gary Houston * error.c, eval.c, load.c, stackchk.c: use scm_error not lgh_error. * __scm.h (lgh_error): removed, lgh shouldn't be in libguile. * stime.c, stime.h: use SCM_P method. Sat Oct 12 16:16:25 1996 Jim Blandy * eval.c (scm_nconc2last): Don't accept an empty list; apply must be given at least two arguments. Insist that lst's last element be a list, but don't make any requirements of its predecessors. Fri Oct 11 03:58:25 1996 Jim Blandy * eval.c (scm_nconc2last): Revert last change; there seems to be other stuff going on here. Fri Oct 11 02:43:59 1996 Jim Blandy * eval.c (scm_nconc2last): Make sure that each element of lst (which is a list of argument lists, except for the tail) is a proper list, i.e., finite and terminated by '(). Thu Oct 10 21:09:13 1996 Jim Blandy * unif.c (scm_ra_set_contp): Localize `inc' declaration. Clarifies flow. * struct.c (scm_make_struct, scm_make_vtable_vtable): Use the symbolic name for the tag, scm_tc3_cons_gloc, instead of just saying "1". * vectors.c (scm_make_vector): Fill vectors with the undefined value, to help make Guile Scheme code more portable to other Schemes. * symbols.c (scm_intern_obarray_soft, scm_sysintern): Doc fixes. * symbols.h, tags.h: Doc fixes. Wed Oct 9 19:39:29 1996 Jim Blandy * async.c (scm_take_signal): Doc fixes. Mon Oct 7 22:30:34 1996 Jim Blandy * numbers.c (scm_divbigint): When the remainder is zero, we don't want to subtract it from the modulus; we just want to leave it alone. Mon Oct 7 00:14:17 1996 Mikael Djurfeldt * init.c (scm_boot_guile_1): Bugfix: i --> base in argument to `scm_init_threads'. * throw.h (scm_catch_apply): Removed the `lazyp' argument. * throw.c (scm_catch_apply): Finished implementation of `lazy-catch'. Sun Oct 6 05:26:05 1996 Gary Houston * filesys.c (scm_sys_select): move SCM_ALLOW_INTS past the sreturn check. (scm_init_filesys): set "i/o-extensions" feature. include feature.h. Sat Oct 5 12:22:00 1996 Jim Blandy * Makefile.in (root.o): Correct dependencies. Sat Oct 5 18:40:42 1996 Mikael Djurfeldt * Makefile.in: Added dependency entry for root.o. * continuations.c, debug.[ch], eval.c, gscm.c init.c, root.c, throw.c: Renamed last_debug_info_frame -> scm_last_debug_frame. * init.c (scm_start_stack): Set initial root continuation number to 0. * procs.c: New function: scm_thunk_p. * procs.h: Added declarations of scm_thunk_p. * root.c: Renamed `call-with-new-root' --> `call-with-dynamic-root'. (cwdr): Removed allocation of new root state. This should be done separately by use of scm_make_root. (scm_apply_with_dynamic_root): New function: Does what it sounds like. Needed when spawning threads. * root.h: Added member last_debug_frame to root state. Added #include "libguile/debug.h" * throw.c: Renamed scm_catch --> scm_catch_apply and added more arguments. The motivation is that code in root.c needs catch functionality, and we want to avoid code duplication. New functions: scm_catch, scm_lazy_catch. These are wrappers for scm_catch_apply. scm_lazy_catch is intended to introduce catch handlers that run without popping the stack into the dynwind chain. * throw.h: Added prototypes for scm_catch_apply and scm_lazy_catch. Thu Oct 3 11:12:33 1996 Mikael Djurfeldt * root.h (scm_root, scm_set_root): Decouple thread support details by introducing the selector SCM_THREAD_LOCAL_DATA and the mutator SCM_SET_THREAD_LOCAL_DATA. * print.c (scm_iprlist): Bugfix: Added SCM_ECONSP tests in hare and tortoise scanning loop. Thu Oct 3 00:04:53 1996 Jim Blandy * Makefile.in: Rebuild dependencies. * libguile.h: #include "libguile/print.h" before "smob.h", since the latter uses the print_state structure. * throw.c (scm_ithrow): Use the correct variable when checking to see if a given element of scm_dynwinds is a valid catch. * throw.c (scm_ithrow): If scm_dynwinds has invalid list structure, abort; don't just silently ignore the garbage. * _scm.h: #include "print.h" here, since it seems to be used just about everywhere. * eval.c, gdbint.c, genio.h, numbers.h, smob.h, srcprop.c, strports.c, unif.h: Don't #include "print.h". Tue Oct 1 05:15:10 1996 Mikael Djurfeldt * feature.h (scm_loc_features): Removed external declaration. (Bug fix suggested by Petr Adamek .) Tue Oct 1 00:00:10 1996 Mikael Djurfeldt * feature.c (scm_init_feature): Added threads feature (needs to be initialized here, since features doesn't exist when scm_init_threads is called). * libguile.h: Added #include "libguile/../threads/threads.h". (This is a kludge to get thread support working. This should be fixed.) * configure.in, acconfig.h: Added flags for thread support. * scmsigs.c: Define `signal' to be `pthread_signal' if using mit-pthreads. * gc.c (scm_igc): Added SCM_THREAD_CRITICAL_SECTION_START and SCM_THREAD_CRITICAL_SECTION_END. Moved marking of root data to root.c:mark_root. * _scm.h: Added conditional #include "threads.h" * __scm.h (SCM_ASYNC_TICK): Added call to macro SCM_THREADS_SWITCHING_CODE. * init.c (scm_start_stack): Call `scm_make_root' to dynamically allocate the basic dynamic root object. (scm_boot_guile): Added call to scm_init_root. * * root.c, root.h: Added root smob. (cwdr, scm_call_with_new_root, scm_dynamic_root, scm_app_wdr): New functions: Implements dynamic roots mostly according to spec in SCM manual. Main difference is that the second argument is a throw handler rather than an error "thunk". * root.h: Added declaration of scm_init_root. * root.c: Added #include "genio.h", #include "smob.h", #include "pairs.h", #include "throw.h", #include "dynwind.h", #include "eval.h" (scm_init_root): Added #include "root.x". * throw.c: Added #include "stackchk.h" (scm_catch): Changed SCM_DEFER_INTS --> SCM_REDEFER_INTS and SCM_ALLOW_INTS --> SCM_REALLOW_INTS. This is so that scm_catch can be used in scm_call_with_new_root; Added reenabling of stack checking when catching a throw. Mon Sep 30 21:48:11 1996 Jim Blandy * list.c, list.h: Use SCM_P instead of CPP hair. Doc fixes. * list.c (scm_member, scm_memv, scm_memq): Return #f if a matching element is not found, as per R4RS. Sat Sep 28 18:13:01 1996 Jim Blandy * list.c: Doc fixes throughout. Sat Sep 28 02:07:43 1996 Gary Houston * strings.c, strings.h: (scm_makfrom0str, scm_makefrom0str_opt: declare the char * to be const. Avoids a warning in rgx.c. * ports.h: spelling fix. * filesys.c (scm_sys_stat, scm_sys,lstat): include file name in error messages. * load.c (scm_sys_try_load_path): throw an error if file not found (like it says it in NEWS). Fri Sep 27 18:27:01 1996 Jim Blandy * symbols.c (scm_intern_obarray_soft): Initialize the new symbol's PROPS slot to '(), not #f; it's an empty alist. * throw.h, throw.c: Use SCM_P instead of #if hair. Remove special support for uncaught throws; see throw.c for rationale. * throw.c (uncaught_throw): New function. (scm_ithrow): Call uncaught_throw if we don't find a throw target; don't mess with scm_bad_throw_vcell. (scm_bad_throw_vcell): Variable deleted. (scm_init_throw): Don't initialize it. * throw.c (scm_ithrow): Don't let outer key matches shadow inner #t catches. Wed Sep 25 04:35:50 1996 Jim Blandy * numbers.c (scm_istr2int): If the number is short (as most numbers are), just call scm_small_istr2int to deal with it. (scm_small_istr2int): New function, created by un-#ifdefing the non-bignum version of scm_istr2int and renaming it. Tue Sep 24 06:48:38 1996 Gary Houston * load.c (scm_sys_try_load): don't check whether value returned by scm_open_file is #f, it won't be. Always return SCM_UNSPECIFIED. Change the Scheme name from %try-load to primitive-load. * error.c (scm_error): convert a NULL message to SCM_BOOL_F. Can avoid passing a message, allowing it to be derived in the error handler (e.g., if we want to throw to the key both from Scheme and C). Mon Sep 23 00:42:15 1996 Mikael Djurfeldt * * print.c (scm_iprin1, scm_prin1, scm_iprlist): Circular references now have a new appearance which is more compact and also gives a clue about what the target of the reference is. By setting parameters in the print state, more fancy printing can be achieved. This is used by the (not yet commited) backtrace code. Sun Sep 22 17:10:06 1996 Mikael Djurfeldt * eval.c, numbers.h, unif.h, smob.h, srcprop.c: Added #include "print.h" * print.c: Added #include "struct.h". Removed function scm_prlist. * print.h: Modified prototypes for scm_iprlist, scm_prin1 and scm_iprin1. Removed prototype for scm_prlist. * arbiters.c (prinarb), async.c (print_async), debug.c (prindebugobj, prinmemoized), eval.c (prinprom, prinmacro), filesys.c (scm_fd_print, scm_dir_print), kw.c (print_kw), mallocs.c (prinmalloc), numbers.c, numbers.h (scm_floprint, scm_bigprint), smob.h (scm_smobfuns), srcprop.c (prinsrcprops), throw.c (prinjb), unif.c, unif.h (scm_raprin1, rapr1), variable.c (prin_var): Changed argument `int writing' to `scm_print_state *pstate'. * init.c (scm_boot_guile): Moved scm_init_struct upwards so that it will be called before scm_init_print. * print.c (scm_prin1): Print states are now allocated when calling scm_prin1 and then passed around to all printing functions as an argument. A cache `print_state_pool' enables reuse of print states. (scm_make_print_state): New function. (scm_iprin1): Adaption to print states. (scm_iprlist): An initial "hare and tortoise" scan brings down time complexity to O (depth * N). (Better time complexity will be achieved when the printing code is completely rewritten.) Fri Sep 20 22:01:36 1996 Jim Blandy * aclocal.m4 (GUILE_STRUCT_UTIMBUF): Use AC_CACHE_CHECK instead of AC_CACHE_VAL; #define UTIMBUF_NEEDS_POSIX outside AC_CACHE_VAL, so it gets done whether or not the cache variable has a value. Thu Sep 19 17:06:39 1996 Jim Blandy Distinguish #f and (). * __scm.h: #undef SICP. * pairs.h (SCM_EOL): Delete this definition, equating it with SCM_BOOL_F. * tags.h (SCM_EOL): Give it a new definition here; I think I found the value it used to have. Doc fixes, too. Thu Sep 19 15:33:51 1996 Mikael Djurfeldt * struct.c (scm_make_struct_layout, init_struct, scm_struct_ref, scm_struct_set_x), struct.h, gc.c (scm_gc_mark): Completed Tom Lord's implementation of structs, allowing for tail arrays as described in the manual. Also fixed some bugs. (Both the interface and the implementation should be improved.) * read.c (scm_init_read): Removed #ifdef READER_EXTENSIONS * print.c, print.h: Closures now print like #. People who whish to see the source can do `(print-enable 'source)'. Removed #ifdef DEBUG_EXTENSIONS. Thu Sep 19 00:00:29 1996 Gary Houston * filesys.c (scsm_sys_stat): don't SIGSEGV if argument is an integer (assuming for now accepting an integer is a good thing). * error.c, fports.c: replace use of %S in lgh_error args with %s. %S will be used instead for write'ing arguments. * unif.c (scm_transpose_array): change arguments in the SCM_WNA asserts. fix a few other asserts. (scm_aind, scm_enclose_array, scm_array_in_bounds_p, scm_uniform_vector_ref, scm_array_set_x, scm_dimensions_to_unform_array): change args in SCM_WNA SCM_ASSERTS and change scm_wta's to scm_wrong_num_args. strop.c (scm_substring_move_left_x, scm_substring_move_right_x, scm_substring_fill_x): likewise. gsubr.c (scm_gsubr_apply): likewise. eval.c (SCM_APPLY): likewise. * eval.c (4 places): replace scm_everr with lgh_error or scm_wrong_num_args. * error.c, error.h (scm_wrong_num_args, scm_wrong_type_arg, scm_memory_error): new procedures. * scm_everr: deleted. can use scm_wta, dropping first two args. scm_error: convert NULL subr to SCM_BOOL_F. * __scm.h: don't define SCM_STACK_OVFLOW, SCM_EXIT, SCM_ARG6, SCM_ARG7, SCM_ARGERR. * stackchk.c (scm_report_stack_overflow): use lgh_error instead of scm_wta. * error.c, error.h: new error keys: scm_arg_type_key, scm_args_number_key, scm_memory_alloc_key, scm_stack_overflow_key, scm_misc_error_key. scm_wta: reimplement using lgh_error instead of scm_everr. Wed Sep 18 17:13:35 1996 Mikael Djurfeldt * gdbint.c: scm_lread now has one more argument. * ports.c, ports.h: Name change: scm_\(line\|column\)_number --> scm_port_\1; Added mutator scm_set_port_filename_x (used when loading source from non-file ports, which, e. g., happens when using the Emacs interface). * fports.c (scm_open_file): Don't call scm_makfrom0str on a scheme object. * read.c: Added code for recording of positions of source code expressions; New functions: recsexpr, scm_lreadrecparen; _scm_make_srcprops --> scm_make_srcprops (scm_flush_ws): Removed updating of positions counters. This work is already done by scm_gen_getc * read.h: Added prototype for scm_lreadrecparen * print.c: Added #include "alist.h" * eval.c: Added #include "hash.h" * eq.c: Added #include "ramap.h" * options.c: Documentation fixes. * srcprop.c (scm_finish_srcprop): Bugfix: update ptr. (scm_init_srcprop): Adjusted size of initial source-whash. Name changes: tc16_srcprops --> scm_tc16_srcprops, _scm_make_srcprops --> scm_make_srcprops * srcprop.h: Name changes: tc16_srcprops --> scm_tc16_srcprops, _scm_make_srcprops --> scm_make_srcprops; Remove one layer of function calls in the definition of the whash access macros. Tue Sep 17 11:33:16 1996 Lee Iverson * init.c (scm_boot_guile): Add level of indirection to scm_boot_guile_1() to ensure that stack base pointer is properly initialized. There was no guarantee that variable i was the highest/lowest variable on stack (i.e. the call frame of scm_boot_guile was not completely protected from gc). Tue Sep 17 01:40:56 1996 Gary Houston * ports.h (scm_port_table): put back file_name, it will be used to support debugging. Undo related changes in fports.c, ioext.c, ports.c, gc.c. Sun Sep 15 03:58:29 1996 Gary Houston * ports.h (scm_port_table): remove file_name member for now, it seems undesirable. * fports.c (scm_open_file): don't set file_name in PTAB. (prinfport): don't use file_name in PTAB. * ioext.c (scm_sys_duplicate_port): don't set file_name in PTAB. * ports.c (scm_add_to_port_table): don't intialize file_name. (scm_port_file_name): remove for now. * gc.c (scm_gc_mark): don't mark PTAB file_name. * fports.h (scm_mkfile): prototype deleted. * fports.c (scm_mkfile): merged into scm_open_file to simplify. * debug.c, unif.c: use scm_out_of_range instead of wta for range errors (ASSERT still needs work). * error.c, error.h (scm_out_of_range): new procedure. * error.c, error.h (scm_out_of_range_key): new key. * posix.c (scm_sync): #else was missing. * error.c, error.h: append _key to names scm_num_overflow and scm_system_error. * __scm.h (SCM_SYSMISSING, SCM_NUM_OVERFLOW): use SCM_BOOL_F instead of consing an empty list. (SCM_SYSERROR etc.): move into error.c, make them procedures instead of macros, saves code and string space. error.c, fports.c, numbers.c, posix.c, ioext.c, filesys.c, socket.c, fdsocket.c, simpos.c: change names of SCM_SYSERROR etc., to lower case. Rename scm_syserror_m to scm_syserror_msg. error.h: prototypes for new procedures. Sat Sep 14 03:35:41 1996 Gary Houston * numbers.c: use SCM_NUM_OVERFLOW instead of scm_wta or ASSERT. * error.c, error.h: setup scm_num_overflow key. * __scm.h: SCM_NUM_OVERFLOW: macro for reporting numerical overflow. Remove definition of SCM_OVSCM_FLOW. * fports.c (scm_open_file): use SCM_SYSERROR_M. * __scm.h: SCM_SYSERROR_M: new macro for system errors with an explicit message and args. * error.c, error.h, __scm.h: change system_error_sym to scm_system_error. * error.c (system_error_sym): remove leading %% from the Scheme name "%%system-error". * __scm.h (SCM_SYSMISSING): Redefine using lgh_error. Fri Sep 13 12:58:08 1996 Mikael Djurfeldt * __scm.h, chars.c, debug.c, eval.c, eval.h, extchrs.c, extchrs.h, fdsocket.c, feature.c, mbstrings.c, mbstrings.h, numbers.c, numbers.h, print.c, scmhob.h, simpos.h, symbols.c, symbols.h, tags.h, throw.c, variable.h: Name cleanup. Lots of xxxSCM_yyy renamed. (These were introduced by unsupervised name substitution.) Fri Sep 13 01:19:08 1996 Mikael Djurfeldt * * print.c: Added code for detection of circular references during printing. (init_ref_stack, grow_ref_stack): New functions. Added a hook for printing of closures (accessible via print options). This leads to a split of calls to scm_iprin1 into two classes: elementary print operations (e. g. the code which prints a smob) still use scm_iprin1 while top level calls (like scm_display) use scm_prin1. scm_prin1 begins by clearing the data structure used to record reference information. * print.h: Added declarations of scm_prin1 and scm_prlist. * strports.c (scm_strprint_obj): scm_iprin1 --> scm_prin1 * gscm.c (gscm_portprint_obj): scm_iprin1 --> scm_prin1 * gscm.h (gscm_print_obj): scm_iprin1 --> scm_prin1 * error.c (err_head): scm_iprin1 --> scm_prin1 * debug.c: Adjusted header comment. * tags.h: Typo. Wed Sep 11 17:55:59 1996 Jim Blandy * strerror.c: Doc fix. Thu Sep 12 00:00:32 1996 Mikael Djurfeldt * gdbint.c (gdb_read): Now possible to run during GC. (unmark_port, remark_port): New functions. * symbols.h (SCM_SETLENGTH): Use SCM_SETCAR. * read.c (scm_grow_tok_buf): Use scm_vector_set_length_x instead of allocating a new string object. Also, increase size by the factor 2 instead of 1.5. Wed Sep 11 15:10:38 1996 Petr Adamek * __scm.h (SCM_P): Corrected to run under traditional C. * _scm.h (SCM_PROC): Extraneous semicolon (outside functions) removed. * async.c: Calls to scm_sysintern corrected. * async.h (scm_async_clock): Redundant declaration removed. * continuations.c (scm_dynthrow): Redundant declaration removed. * debug.c (scm_single_step, scm_memoized, scm_lookup_soft): Definition typos corrected. * debug.h: Missing declarations of functions in debug.c added (lots). * eval.h (scm_eval_args, scm_deval_args, scm_m_undefine): Missing declarations to functions in eval.c added. * filesys.c: Possibly uninitialized variable rv. * gc.h (scm_object_addr, scm_unhash_name): Missing declarations of functions defined in gc.c added. * genio.c: Possible typos str_data -> wstr_data. ??? * genio.c: Possibly unintended shadowing of local variable `int c' (gotos out of scope of inner `c'). ??? * init.c: Uninitialized `SCM last' may be used. * ioext.h: (scm_sys_isatty_p): Typo. * list.h (scm_list_head): Missing prototype for function in list.c added. * numbers.c (scm_two_doubles): Changed from extern to static (is used only within numbers.c). * numbers.h: Repeated declarations removed. * ports.h (scm_close_all_ports_except): Declaration for the function defined in ports.c added. * posix.h: Missing declarations added. * procs.h (scm_make_subr_opt): Missing declaration added. * socket.h (scm_sys_gethost): Missing declaration added. * socket.h: Redundant declarations removed (they are in fdsocket.h). * srcprop.h (scm_set_source_property_x, scm_finish_srcprop): Missing declarations added. * stime.h (scm_get_internal_real_time): Repeated declarations removed. * struct.c: Uninitialized variable `SCM answer' may be used. * unif.c (l2ra): Declaration prototype. * unif.c (scm_array_equal_p): Dummy definition removed (it is defined in ramap.c). * unif.h (scm_raprin1, scm_istr2bve, scm_array_equal_p): Redundant declarations removed (they are in ramap.h). * variable.h (scm_make_udvariable, scm_make_undefined_variable): Declaration corrected to correspond variable.c. * vectors.h (scm_vector_move_left_x, scm_vector_move_right_x): Missing declarations added. Wed Sep 11 14:38:50 1996 Jim Blandy * Makefile.in (distclean): Don't forget to delete fd.h. Tue Sep 10 14:01:46 1996 Jim Blandy * fd.h.in, tags.h: Trivial cleanups. * marksweep.c, marksweep.h: Deleted; marksweep.c was empty, and marksweep.h just declared functions from gc.c. * gc.h, libguile.h: Don't #include "marksweep.h". * Makefile.in (libobjs, inner_h_files, c_files, gen_c_files): Omit marksweep.o, marksweep.h, marksweep.c, and marksweep.x. Other dependencies updated. * libguile.h: Don't #include "files.h"; it's been deleted. * files.c (scm_sys_delete_file): Moved to filesys.c. File is now empty; deleted. * files.h: Deleted. * filesys.c: scm_sys_delete_file is now here. Remove #if's; they seem to rely on remnants of an old portability regimen. If the problems come up again, solve them properly, using autoconf. Specifically: Don't test M_SYSV, and #define remove to be unlink if it's #defined; don't use remove just because HAVE_STDC_HEADERS is #defined. * filesys.h: Add declarations for scm_sys_delete_file. * Makefile.in (libobjs, inner_h_files, c_files, gen_c_files): Omit files.o, files.h, files.c, and files.x. * init.c: Don't #include "files.h", and don't call scm_init_files. Use SCM_P instead of PROTO; the latter intrudes on the user's namespace. * params.h: Deleted; definition of SCM_P moved to... * __scm.h: ... here, where it replaces PROTO macro. * libguile.h, smob.h: Don't #include "params.h". * continuations.c, error.h, feature.h, gc.c, gc.h, init.h, load.h, smob.h: Fix prototypes accordingly. * Makefile.in: Update dependencies. (inner_h_files): Remove params.h. * gc.c: #include "gc.h"; every module should include its header, to let the compiler cross-check the declarations against the definitions. * eq.h, files.h, hashtab.h, load.h, mallocs.h, scmsigs.h, simpos.h: #include "libguile/__scm.h". Mon Sep 9 20:00:15 1996 Jim Blandy * init.c: Don't forget to #include smob.h and init.h. * Makefile.in: Dependencies updated. * 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!