diff -uNr a/tinyscheme/dynload.c b/tinyscheme/dynload.c --- a/tinyscheme/dynload.c 09cfeff5190d4fa74dc28cf4cafcef50f2625df207c8a360b48204e0b7b587f4084f80372d371d6d0feb6bf464fba4478db3c42361676fd64ecc9530b0a097aa +++ b/tinyscheme/dynload.c cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e @@ -1,146 +0,0 @@ -/* dynload.c Dynamic Loader for TinyScheme */ -/* Original Copyright (c) 1999 Alexander Shendi */ -/* Modifications for NT and dl_* interface, scm_load_ext: D. Souflis */ -/* Refurbished by Stephen Gildea */ - -#define _SCHEME_SOURCE -#include "dynload.h" -#include -#include -#include - -#ifndef MAXPATHLEN -# define MAXPATHLEN 1024 -#endif - -static void make_filename(const char *name, char *filename); -static void make_init_fn(const char *name, char *init_fn); - -#ifdef _WIN32 -# include -#else -typedef void *HMODULE; -typedef void (*FARPROC)(); -#define SUN_DL -#include -#endif - -#ifdef _WIN32 - -#define PREFIX "" -#define SUFFIX ".dll" - - static void display_w32_error_msg(const char *additional_message) - { - LPVOID msg_buf; - - FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_ALLOCATE_BUFFER, - NULL, GetLastError(), 0, - (LPTSTR)&msg_buf, 0, NULL); - fprintf(stderr, "scheme load-extension: %s: %s", additional_message, msg_buf); - LocalFree(msg_buf); - } - -static HMODULE dl_attach(const char *module) { - HMODULE dll = LoadLibrary(module); - if (!dll) display_w32_error_msg(module); - return dll; -} - -static FARPROC dl_proc(HMODULE mo, const char *proc) { - FARPROC procedure = GetProcAddress(mo,proc); - if (!procedure) display_w32_error_msg(proc); - return procedure; -} - -static void dl_detach(HMODULE mo) { - (void)FreeLibrary(mo); -} - -#elif defined(SUN_DL) - -#include - -#define PREFIX "lib" -#define SUFFIX ".so" - -static HMODULE dl_attach(const char *module) { - HMODULE so=dlopen(module,RTLD_LAZY); - if(!so) { - fprintf(stderr, "Error loading scheme extension \"%s\": %s\n", module, dlerror()); - } - return so; -} - -static FARPROC dl_proc(HMODULE mo, const char *proc) { - const char *errmsg; - FARPROC fp=(FARPROC)dlsym(mo,proc); - if ((errmsg = dlerror()) == 0) { - return fp; - } - fprintf(stderr, "Error initializing scheme module \"%s\": %s\n", proc, errmsg); - return 0; -} - -static void dl_detach(HMODULE mo) { - (void)dlclose(mo); -} -#endif - -pointer scm_load_ext(scheme *sc, pointer args) -{ - pointer first_arg; - pointer retval; - char filename[MAXPATHLEN], init_fn[MAXPATHLEN+6]; - char *name; - HMODULE dll_handle; - void (*module_init)(scheme *sc); - - if ((args != sc->NIL) && is_string((first_arg = pair_car(args)))) { - name = string_value(first_arg); - make_filename(name,filename); - make_init_fn(name,init_fn); - dll_handle = dl_attach(filename); - if (dll_handle == 0) { - retval = sc -> F; - } - else { - module_init = (void(*)(scheme *))dl_proc(dll_handle, init_fn); - if (module_init != 0) { - (*module_init)(sc); - retval = sc -> T; - } - else { - retval = sc->F; - } - } - } - else { - retval = sc -> F; - } - - return(retval); -} - -static void make_filename(const char *name, char *filename) { - strcpy(filename,name); - strcat(filename,SUFFIX); -} - -static void make_init_fn(const char *name, char *init_fn) { - const char *p=strrchr(name,'/'); - if(p==0) { - p=name; - } else { - p++; - } - strcpy(init_fn,"init_"); - strcat(init_fn,p); -} - - -/* -Local variables: -c-file-style: "k&r" -End: -*/ diff -uNr a/tinyscheme/dynload.h b/tinyscheme/dynload.h --- a/tinyscheme/dynload.h 7ef337502c279674a3670dd8cb64c844879bba7835ef9e9da2a443b009cc33aac9ca091a16ccdc8d2a82d2828085ba30afdeb612fe5363e6d5f5fe970735aab8 +++ b/tinyscheme/dynload.h cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e @@ -1,12 +0,0 @@ -/* dynload.h */ -/* Original Copyright (c) 1999 Alexander Shendi */ -/* Modifications for NT and dl_* interface: D. Souflis */ - -#ifndef DYNLOAD_H -#define DYNLOAD_H - -#include "scheme-private.h" - -SCHEME_EXPORT pointer scm_load_ext(scheme *sc, pointer arglist); - -#endif diff -uNr a/tinyscheme/makefile b/tinyscheme/makefile --- a/tinyscheme/makefile 4fdbb560ffad230f967ea20050f505e86f9b0e4837e23ea4a4cf7191fb9a9baf2063f7832b790adb30ee408b510d4f4092f52325ad45a620a95ed2f6748e5dcd +++ b/tinyscheme/makefile cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e @@ -1,98 +0,0 @@ -# Makefile for TinyScheme -# Time-stamp: <2002-06-24 14:13:27 gildea> - -# Windows/2000 -#CC = cl -nologo -#DEBUG= -W3 -Z7 -MD -#DL_FLAGS= -#SYS_LIBS= -#Osuf=obj -#SOsuf=dll -#LIBsuf=.lib -#EXE_EXT=.exe -#LD = link -nologo -#LDFLAGS = -debug -map -dll -incremental:no -#LIBPREFIX = -#OUT = -out:$@ -#RM= -del -#AR= echo - -# Unix, generally -CC = gcc -fpic -pedantic -DEBUG=-g -Wall -Wno-char-subscripts -O -Osuf=o -SOsuf=so -LIBsuf=a -EXE_EXT= -LIBPREFIX=lib -OUT = -o $@ -RM= -rm -f -AR= ar crs - -# Linux -LD = gcc -LDFLAGS = -shared -DEBUG=-g -Wno-char-subscripts -O -SYS_LIBS= -ldl -lm -PLATFORM_FEATURES= -DSUN_DL=1 - -# Cygwin -#PLATFORM_FEATURES = -DUSE_STRLWR=0 - -# MinGW/MSYS -#SOsuf=dll -#PLATFORM_FEATURES = -DUSE_STRLWR=0 - -# Mac OS X -#LD = gcc -#LDFLAGS = --dynamiclib -#DEBUG=-g -Wno-char-subscripts -O -#SYS_LIBS= -ldl -#PLATFORM_FEATURES= -DUSE_STRLWR=1 -D__APPLE__=1 -DOSX=1 - - -# Solaris -#SYS_LIBS= -ldl -lc -#Osuf=o -#SOsuf=so -#EXE_EXT= -#LD = ld -#LDFLAGS = -G -Bsymbolic -z text -#LIBPREFIX = lib -#OUT = -o $@ - -FEATURES = $(PLATFORM_FEATURES) -DUSE_DL=1 -DUSE_MATH=1 -DUSE_ASCII_NAMES=0 - -OBJS = scheme.$(Osuf) dynload.$(Osuf) - -LIBTARGET = $(LIBPREFIX)tinyscheme.$(SOsuf) -STATICLIBTARGET = $(LIBPREFIX)tinyscheme.$(LIBsuf) - -all: $(LIBTARGET) $(STATICLIBTARGET) scheme$(EXE_EXT) - -%.$(Osuf): %.c - $(CC) -I. -c $(DEBUG) $(FEATURES) $(DL_FLAGS) $< - -$(LIBTARGET): $(OBJS) - $(LD) $(LDFLAGS) $(OUT) $(OBJS) $(SYS_LIBS) - -scheme$(EXE_EXT): $(OBJS) - $(CC) -o $@ $(DEBUG) $(OBJS) $(SYS_LIBS) - -$(STATICLIBTARGET): $(OBJS) - $(AR) $@ $(OBJS) - -$(OBJS): scheme.h scheme-private.h opdefines.h -dynload.$(Osuf): dynload.h - -clean: - $(RM) $(OBJS) $(LIBTARGET) $(STATICLIBTARGET) scheme$(EXE_EXT) - $(RM) tinyscheme.ilk tinyscheme.map tinyscheme.pdb tinyscheme.exp - $(RM) scheme.ilk scheme.map scheme.pdb scheme.lib scheme.exp - $(RM) *~ - -TAGS_SRCS = scheme.h scheme.c dynload.h dynload.c - -tags: TAGS -TAGS: $(TAGS_SRCS) - etags $(TAGS_SRCS) diff -uNr a/tinyscheme/scheme.c b/tinyscheme/scheme.c --- a/tinyscheme/scheme.c 5be4b621d85f9cf8c659ebe622983ac737b8953c664c8b0eae805155e90374ab63ff49d1731584e447a73aeb6a9dfa83b6f294e1330e8e8a16352bb1dd952345 +++ b/tinyscheme/scheme.c ef5203068d238dba559384accc5655416fc64845ba7960c1cf65965148ebead9064596006322dffd0db24fefb7c0e9273d10aacfdc52fba42156ecebfaf85077 @@ -20,9 +20,6 @@ #ifdef WIN32 #define snprintf _snprintf #endif -#if USE_DL -# include "dynload.h" -#endif #if USE_MATH # include #endif @@ -4982,9 +4979,6 @@ } scheme_set_input_port_file(&sc, stdin); scheme_set_output_port_file(&sc, stdout); -#if USE_DL - scheme_define(&sc,sc.global_env,mk_symbol(&sc,"load-extension"),mk_foreign_func(&sc, scm_load_ext)); -#endif argv++; if(access(file_name,0)!=0) { char *p=getenv("TINYSCHEMEINIT"); diff -uNr a/tinyscheme/scheme.h b/tinyscheme/scheme.h --- a/tinyscheme/scheme.h 282012705842dd4c1341549f5e82bf092274697d51f5dd6b557e9f0d6e25ab16dea0a1825c19329ce72a5f85511d25bcf636d015cb6926f381348ef9a372dc8c +++ b/tinyscheme/scheme.h b0b63ff8b7ccf6a181c6e5ac8941801661ac03f57ddf743b11afb3f9f53108428cb3c85e5d8876508d4d412a671f49e3518b1d7847a03592516f23b679d61fd3 @@ -40,7 +40,6 @@ # define USE_ERROR_HOOK 0 # define USE_TRACING 0 # define USE_COLON_HOOK 0 -# define USE_DL 0 # define USE_PLIST 0 #endif @@ -50,11 +49,6 @@ */ #define USE_SCHEME_STACK -#if USE_DL -# define USE_INTERFACE 1 -#endif - - #ifndef USE_MATH /* If math support is needed */ # define USE_MATH 1 #endif