summaryrefslogtreecommitdiff
path: root/libguile/dynl.c
AgeCommit message (Collapse)AuthorFilesLines
2000-03-12Docstring clarification for scm_registered_modules.Marius Vollmer1-3/+3
2000-03-09*.[ch]: make a distinction between SCM as a genericGreg J. Badros1-2/+2
name for a Scheme object (now a void*), and SCM as 32 bit word for storing tags and immediates (now a long int). Introduced SCM_ASWORD and SCM_ASSCM for conversion. Fixed various dubious code in the process: arbiter.c (use macros), unif.c (scm_array_p),
2000-03-03* error.h, error.c: Added `scm_wrong_type_arg_msg' to supportGreg J. Badros1-1/+1
displaying the expected type. Use SCM_LISTn in a couple places instead of scm_cons-ing by hand. * __scm.h: Added SCM_ASSERT_TYPE macro. * validate.h, scm_validate.h: Added the former, as a renamed version of the latter with SCM_ASSERT_TYPE used in SCM_MAKE_VALIDATE (instead of just SCM_ASSERT) * Makefile.am: Rename scm_validate.h to validate.h. * *.c, *.h: Include validate.h, not scm_validate.h (old name's prefix was superfluous).
2000-01-18* alist.c, chars.c, debug.c, dynl.c, dynwind.c, error.c, eval.c,Mikael Djurfeldt1-83/+73
evalext.c, filesys.c, gc.c, hash.c, hashtab.c, ioext.c, keywords.c, list.c, load.c, macros.c, net_db.c, numbers.c, objprop.c, ports.c, posix.c, print.c, procprop.c, procs.c, ramap.c, regex-posix.c, root.c, scmsigs.c, simpos.c, socket.c, stacks.c, stime.c, strings.c, strop.c, strports.c, struct.c, symbols.c, throw.c, unif.c, vectors.c, version.c, vports.c, weaks.c: Converted docstrings to ANSI C format.
2000-01-12* scm_validate.h: Added SCM_NUM2LONG_DEF macro. MakeGreg J. Badros1-2/+2
SCM_OUT_OF_RANGE use SCM_MAKINUM, not scm_long2num. Added SCM_COERCE_ROSTRING macro. Added SCM_VALIDATE_NONEMPTYLIST macro. Fix SCM_VALIDATE_STRINGORSUBSTR macro to not use SLOPPY variants. * ports.c (scm_port_closed_p): Validate that the arg is a PORT, then return whether it's an open port (was validating that it was an open port -- this was a bug I introduced back in December, but my careful reading of diffs caught it). * numbers.c: Recombine the two conditional-compilation paths for all the log* primitives -- they were split based on #ifndef scm_long2num; factored out a SCM_LOGOP_RETURN macro, and fixed some bugs and inconsistencies in the two sets of implementations. (scm_lognot) Fixed *atrocious* re-use of a SCM as an integer! * ioext.c: Use SCM_ASSERT_RANGE in a couple places, and SCM_VALIDATE_INUM_COPY once where it should've been used. * fluids.c (scm_internal_with_fluids): Use SCM_VALIDATE_LIST_COPYLEN. * filesys.c: Use SCM_NUM2LONG instead of SCM_VALIDATE_INUM_COPY; this is questionable as it relaxes type safety, but other changes were useful and all SCM_NUM2LONG's should probably be revisited. Use SCM_OUT_OF_RANGE, SCM_WRONG_TYPE_ARG. * evalext.c: line-break change on 1 line. * eval.c (nconc2last): Takes a non-empty list as its first argument, not just a list. * dynl.c: Use new SCM_COERCE_ROSTRING macro.
2000-01-11* dynl.c, feature.c, filesys.c, fports.c, list.c, load.c,Greg J. Badros1-2/+2
net_db.c, sort.c, stacks.c, unif.c: Use SCM_WTA, SCM_MISC_ERROR where possible. * symbols.c (scm_sysintern0): Fixed the function name in a scm_misc_error invocation. * print.c (scm_simple_format): Do not need SCM_COERCE_SUBSTR, and use scm_return_first to ward off latent GC bug that Mikael caught. * async.c: Use SCM_VALIDATE_ASYNC_COPY one place where it wasn't used before but should've been.
2000-01-11* dynl.c, error.c, eval.c, feature.c, filesys.c, fports.c, list.c, load.c,Greg J. Badros1-1/+1
net_db.c, read.c, socket.c: Update error messages to use ~A for %s, ~S for %S to work with new `simple-format' format and be standardized better. * print.h, print.c (scm_simple_format): Added `simple-format' primitive. It's the old scm_display_error, with ARGS now a rest parameter, and the destination first instead of last (and a couple new capabilities inspired by `format' -- #t as destination means current-output-port, #f means return the formatted text as a string. * gh.h, gh_data.c, ports.h, ports.c: Added some missing const specifications. * backtrace.c (scm_display_error_message): Rewrote to use scm_simple_format() procedure. * __scm.h: Added commented-out #define of GUILE_DEBUG_FREELIST
2000-01-10* dynl.c: Use ANSI prototypes.Marius Vollmer1-10/+46
(sysdep_dynl_link): Use lt_dlopenext instead of lt_dlopen. * dynl.c: use libltdl if DYNAMIC_LINKING is enabled,
2000-01-05*.[ch]: Replace GUILE_PROC w/ SCM_DEFINE.Greg J. Badros1-8/+8
1999-12-18* dynl.c: Added #include "scm_validate.h"Greg J. Badros1-0/+2
1999-12-18* alist.c, chars.c, dynl.c, net_db.c, numbers.c, unif.c: UseGreg J. Badros1-3/+2
SCM_NUM2ULONG instead of scm_num2ulong; SCM_NUM2LONG instead of scm_num2long; SCM_WTA instead of scm_wta. Only done for when FUNC_NAME was used as an argument of the macro and the formal argument name was the explicit argument in the old function call. These were just missed in my first pass of changes.
1999-12-16* coop-threads.c: Remove K&R function headers.Greg J. Badros1-6/+6
* scm_validate.h: Added SCM_VALIDATE_THREAD. * *.c: Remove SCM_NIMP(X) when it is an extraneous pre-test given that SCM_FOOP macros all now include SCM_NIMP in their expansion. This simplifies lots of code, making it far more readable.
1999-12-13* Makefile.am: Fix ETAGS_ARGS to recognize GUILE_PROC,Greg J. Badros1-8/+83
GUILE_PROC1. Build guile-procedures.txt, and add that file to pkgdata_DATA. * load.c: Added `pkgdata-dir', `site-dir', `library-dir' primitives. * guile-doc-snarf.awk: Drop trailing space when no arguments: e.g., "(foo )" is now "(foo)". * *.c: moved all the documentation for primitives from guile-doc/ref/{appendices,posix,scheme}.texi into the source code. This leaves about half of the primitives undocumented. Also, all the markup is currently still texinfo. I don't have a problem with texinfo per se, but the markup is not very descriptive or accurate.
1999-12-12* *.c: Finish replacing K&R style prototypes with ANSI CGreg J. Badros1-3/+1
prototypes. * eval.c: Make scm_m_mody's 3rd argument be a const char *, not a char *. ANSI prototypes caught this. * strorder.c: Use GUILE_PROC1 for the couple SCM_PROC1 expansions that I missed. * scm_validate.h: Use SCM_BOOLP for validating bools. Do not expand macros if SCM_DOCSTRING_SNARF.
1999-12-12* *.c, srcprop.h: Use SCM_BOOL(f) instead of (f? SCM_BOOL_T:Greg J. Badros1-2/+1
SCM_BOOL_F) and use SCM_NEGATE_BOOL(f) instead of (f? SCM_BOOL_F: SCM_BOOL_T).
1999-12-12* *.c: Pervasive software-engineering-motivated rewrite ofGreg J. Badros1-91/+65
function headers and argument checking. Switched SCM_PROC, SCM_PROC1 macros to be GUILE_PROC, GUILE_PROC1 (may change names later, but was useful to keep old versions around while migrate) that has docstrings and argument lists embedded in the GUILE_PROC macro invocations that expand into a function header. Use lots of new SCM_VALIDATE_* macros to simplify error checking and reduce tons of redundancy. This is very similar to what I did for Scwm. Note that none of the extraction of the docstrings, nor software engineering checks of Scwm is yet added to Guile. I'll work on that tomorrow, I expect. * Makefile.am: Added scm_validate.h to modinclude_HEADERS. * chars.c: Added docstrings for the primitives defined in here. * snarf.h: Added GUILE_PROC, GUILE_PROC1. Added SCM_REGISTER_PROC to be like old SCM_PROC, though old SCM_PROC still remains for now. Changed naming convention for the s_foo string name of the primitive to be s_scm_foo for ease of use with the macro. * scm_validate.h: Lots of new SCM_VALIDATE macros to simplify argument checking through guile. Maybe some of these should be folded into the header file for the types they check, but for now it was easiest to just stick them all in one place.
1999-07-07Greg's smob patchMikael Djurfeldt1-7/+3
1999-06-21Resolved harmless conflict.Marius Vollmer1-6/+41
1999-06-21* dynl.c (no_dynl_error, sysdep_dynl_link, sysdep_dynl_unlink,Jim Blandy1-13/+9
sysdep_dynl_func): Use ANSI declarations, and const char * pointers. (Thanks to Mark Elbrecht.)
1999-02-06* chars.c (scm_lowers, scm_uppers, scm_charnames, scm_charnums),Jim Blandy1-11/+12
eval.c (s_expression, s_test, s_body, s_bindings, s_variable, s_clauses, s_formals): Variables now const. * eval.c (promsmob): Now const. * macros.c (macrosmob): Now const. * smob.c (scm_newsmob): Smobfuns argument now points to const. (freecell, flob, bigob): Now const. * dynl.c (scm_make_argv_from_stringlist, scm_coerce_rostring), error.c (scm_error, scm_syserror, scm_syserror_msg, scm_num_overflow, scm_out_of_range, scm_wrong_type_arg, scm_memory_error, scm_misc_error, scm_wta), macros.c (scm_make_synt), feature.c (scm_add_feature), filesys.c (scm_input_waiting_p), gc.c (scm_gc_start, scm_igc, scm_must_malloc, scm_must_realloc), gsubr.c (scm_make_gsubr), numbers.c (scm_num2dbl, scm_two_doubles, scm_num2long, scm_num2long_long, scm_num2ulong), options.c (scm_options), posix.c (scm_convert_exec_args, environ_list_to_c), procs.c (scm_make_subr_opt, scm_make_subr), ramap.c (scm_ramapc), read.c (scm_flush_ws), socket.c (scm_sock_fd_to_port, scm_fill_sockaddr, scm_addr_vector), stime.c (setzone, restorezone, bdtime2c), strop.c (scm_i_index), strports.c (scm_mkstrport), symbols.c (scm_intern_obarray_soft, scm_intern_obarray, scm_intern, scm_intern0, scm_sysintern0_no_module_lookup, scm_sysintern, scm_sysintern0, scm_symbol_value0), unif.c (scm_aind, scm_shap2ra): Argument indicating calling subr, error message text, reason for error, symbol name or feature name are now pointer to const. * snarf.h (SCM_PROC, SCM_PROC1): String variables are now const. * procs.c (scm_init_iprocs): iproc argument now points to const. * pairs.c (cxrs): Now const. * chars.h, error.h, feature.h, filesys.h, gc.h, gsubr.h, macros.h, numbers.h, options.h, procs.h, ramap.h, read.h, smob.h, strports.h, symbols.h, unif.h: Update variable declarations and function prototypes for above changes. * dynl.c, dynl-dld.c, dynl-dl.c, dynl-shl.c (sysdep_dynl_link, sysdep_dynl_unlink, sysdep_dynl_func): Arguments FNAME, SUBR, and SYMB now point to const.
1998-10-19* __scm.h, alist.c, async.c, async.h, backtrace.h, chars.c,Jim Blandy1-1/+1
continuations.c, debug.c, debug.h, dynl-dl.c, dynl.c, dynl.h, dynwind.c, dynwind.h, eq.c, error.c, error.h, eval.c, eval.h, feature.c, filesys.c, filesys.h, fports.c, fports.h, gc.c, gc.h, genio.c, genio.h, gh.h, gh_data.c, gsubr.c, gsubr.h, hash.c, hashtab.c, init.c, init.h, ioext.c, ioext.h, kw.c, libguile.h, list.c, list.h, load.c, load.h, mallocs.c, markers.c, mit-pthreads.c, net_db.c, numbers.c, numbers.h, options.c, ports.c, ports.h, posix.c, posix.h, print.c, print.h, procprop.c, procprop.h, procs.c, procs.h, ramap.c, ramap.h, regex-posix.c, regex-posix.h, root.c, root.h, scmsigs.c, scmsigs.h, script.c, script.h, simpos.c, simpos.h, smob.c, smob.h, snarf.h, socket.c, srcprop.c, stackchk.c, stackchk.h, stacks.c, stime.c, stime.h, strings.c, strings.h, strports.c, struct.c, struct.h, symbols.c, symbols.h, tags.h, threads.c, throw.h, unif.c, variable.c, vectors.c, vectors.h, version.h, vports.c, weaks.c: Update copyright years.
1998-07-23Simplify smob and port marking; set the mark bit in the genericJim Blandy1-1/+0
marking code, and make marker routines only responsible for turning up outgoing pointers. * gc.c (scm_gc_mark): Set the mark bit on ports and smobs here, before calling the marking function. Don't call the marking function if it's zero. * markers.c (scm_mark0): Just return #f. This function isn't necessary at all now, but it's harmless to call it. We'll leave it in so other folks' code doesn't croak at link time. (scm_markcdr): Don't call SCM_SETGC8MARK. * async.c (mark_async): Don't call SCM_SETGC8MARK. * dynl.c (mark_dynl_obj): Same. * root.c (mark_root): Same. * srcprop.c (marksrcprops): Same. * unif.c (markra): Same. * variable.c (scm_markvar): Same. * ports.c (scm_markstream): Same. (void_port_ptob): Specify zero for our marking function. * debug.c (debugobjsmob): Same. * dynwind.c (guardsmob): Same. * filesys.c (dir_smob): Same. * fluids.c (fluid_smob): Same. * fports.c (scm_fptob, scm_pipob): Same. * mallocs.c (mallocsmob): Same. * regex-posix.c (regex_t_smob): Same. * smob.c (freecell, flob, bigob): Same. * threads.c (thread_smob, mutex_smob, condvar_smob): Same. * throw.c (jbsmob, lazy_catch_funs): Same.
1998-05-02* fluids.c: Removed use of assert.h (in order to avoidMikael Djurfeldt1-0/+2
__eprintf). * Makefile.am (libguile_la_LDFLAGS): Added -export-dynamic. * dynl.c (maybe_drag_in_eprintf): Disabled through #ifdef 0.
1998-04-19* dynl.c (scm_must_free_argv): Fixed memory leak due to negatedMikael Djurfeldt1-2/+2
condition. (Thanks to John Tobey.) * dynl.c: Only check that HAVE_DLOPEN is defined before loading dynl-dl.c; Test on HAVE_LIBDLD instead of HAVE_DLD.
1998-04-19* dynl.c: Only check that HAVE_DLOPEN is defined before loadingMikael Djurfeldt1-2/+2
dynl-dl.c; Test on HAVE_LIBDLD instead of HAVE_DLD. * configure.in: Define HAVE_DLOPEN also when HAVE_LIBDL is defined.
1997-10-15 * Makefile.in: Rebuilt.Tom Tromey1-3/+3
* Makefile.am (libguile_la_SOURCES): Removed extchrs.c, mbstrings.c. (modinclude_HEADERS): Removed extchrs.h, mbstrings.h. * unif.c (scm_vector_set_length_x): Don't handle multibyte strings. * tag.c (scm_utag_mb_string, scm_utag_mb_substring): Removed. (scm_tag): Don't handle multibyte strings. * read.c: Don't include mbstrings.h. (scm_lreadr): Don't handle multibyte ports. * kw.c: Don't include mbstrings.h. * init.c: Don't include mbstrings.h. (scm_boot_guile_1): Don't init mbstrings module. * hash.c (scm_hasher): Don't handle mbstrings. * gscm.c (gscm_run_scm): Don't init mbstrings module. * gc.c (scm_gc_mark): Don't handle mbstrings. (scm_gc_sweep): Likewise. * eval.c (SCM_CEVAL): Don't handle mbstrings. * eq.c (scm_equal_p): Use SCM_TYP7S, not SCM_TYP7SD. * tags.h (SCM_TYP7SD): Removed. (SCM_TYP7D): Removed. (scm_tc7_mb_string): Removed. (scm_tc7_mb_substring): Removed. * print.c (scm_iprin1): Handle char printing directly. Don't handle mbstrings. Don't include "mbstrings.h". * symbols.c (scm_intern_obarray_soft, scm_string_to_symbol, scm_string_to_obarray_symbol, msymbolize): Don't set symbol's multi-byte flag. Don't include "mbstrings.h". * symbols.h (SCM_SYMBOL_MULTI_BYTE_STRINGP): Removed. (SCM_SYMBOL_SLOTS): Define as 4. (SCM_ROSTRINGP): Use SCM_TYP7S, not SCM_TYP7SD. * arbiters.c, backtrace.c, debug.c, dynl.c, eval.c, fluids.c, gc.c, gsubr.c, ioext.c, kw.c, mallocs.c, numbers.c, ports.c, print.c, read.c, regex-posix.c, root.c, srcprop.c, stackchk.c, struct.c, threads.c, throw.c, unif.c, variable.c: Use new ("gen"-less) I/O function names. * ports.c (scm_add_to_port_table): Don't set port's representation. * ports.h (scm_port_representation_type): Removed. (scm_string_representation_type): Removed. (struct scm_port_table ): Removed representation field. (SCM_PORT_REPRESENTATION): Removed. (SCM_SET_PORT_REPRESENTATION): Removed. * genio.h: Use new function names. * genio.c: Don't include "extchrs.h". (scm_gen_putc, scm_gen_puts, scm_gen_write, scm_get_getc): Removed. (scm_putc, scm_puts, scm_lfwrite): No longer static. (scm_getc): No longer static; handle line and column changes. (scm_ungetc): Renamed from scm_gen_ungetc. (scm_do_read_line): Renamed from scm_gen_read_line. * libguile.h: Don't include "extchrs.h" or "mbstrings.h" * extchrs.h, extchrs.c, mbstrings.h, mbstrings.c: Removed.
1997-10-02Make dynamic linking work on Dec Unix. (Thanks to Clark McGrew)Marius Vollmer1-1/+1
* dynl.c: Include "dynl-dl.c" also when HAVE_DLOPEN is defined.
1997-07-18* dynl.c (free_dynl_obj): New function to free the dynamic objectMarius Vollmer1-3/+16
data. (dynl_smob): Use it. * dynl.c (scm_dynamic_link): Moved allocating of the memory for the dynamic object data below the linking of the object to avoid memory leak when the linking code throws an error. Now the code leaks a whole dynamically linked library when must_malloc throws, but that should be much less likely.
1997-06-21Make things compile neatly under Sun's C compiler.Jim Blandy1-2/+2
* dynl.c (scm_dynamic_func): Cast return value from sysdep_dynl_func. * extchrs.c (xmbtowc): Make the second arg a normal char, not unsigned, because that's what the ANSI function takes. * extchrs.h (xmbtowc): Corresponding change to prototype. * genio.c (scm_gen_getc): Make buf plain chars. Nobody wants uchars here. * mbstrings.c (scm_mb_ilength): Use ANSI arg syntax. Make DATA argument plain char *. * strings.c (scm_string): Use SCM_ROCHARS, since c is a plain char. * tag.c (scm_tag): Remove unreachable statement. * unif.c (scm_array_to_list): If we want to shift a 1 bit to the top of the word, it should be unsigned.
1997-06-16* dynl.c (scm_dynamic_call, scm_dynamic_args_call): Wrap dynamicMarius Vollmer1-6/+20
function call in SCM_DEFER_INTS/SCM_ALLOW_INTS. (scm_dynamic_link, scm_dynamic_unlink, scm_dynamic_func): Always call the sysdep functions with deferred ints. * dynl.c, dynl-dl.c, dynl-dld.c, dynl-shl.c (sysdep_dynl_link, sysdep_dynl_unlink, sysdep_dynl_func): Expect to be called with deferred interrupts and insert SCM_ALLOW_INTS before throwing an error. * dynl.c (scm_dynamic_unlink, scm_dynamic_call): Return SCM_UNSPECIFIED.
1997-05-26* Lots of files: New address for FSF.Jim Blandy1-3/+3
1997-04-29* dynl.c (print_dynl_obj): Indicate whether the dynamic object hasMarius Vollmer1-0/+2
been unlinked.
1997-01-20* dynl.c: The dynamic linking and module registration functionsMarius Vollmer1-18/+52
are now defined even when dynamic linking is not available for the host system. Some of their functionality can be done without dynamic linking; when it's really needed, they throw errors.
1997-01-18* dynl.c (scm_dynamic_func): New function to get the address of aMarius Vollmer1-6/+266
function in a dynamic object. (scm_dynamic_call, scm_dynamic_args_call): Accept the values produced by scm_dynamic_func as the thing to call. * dynl.c, dynl-dl.c, dynl-dld.c, dynl-shl.c: Restructured. (scm_register_module_xxx, scm_registered_modules, scm_clear_registered_modules): New functions.
1996-12-08Initial revisionMarius Vollmer1-0/+147