diff --git a/lib/ikarus/include.ss b/lib/ikarus/include.ss index 51d1207..ad87651 100644 --- a/lib/ikarus/include.ss +++ b/lib/ikarus/include.ss @@ -17,37 +17,48 @@ (library (ikarus include) (export include include/lexical-context) - (import (except (ikarus) include)) + (import (ikarus)) (define-syntax include/lexical-context/form (lambda (x) (syntax-case x () [(_ filename id form who) - (let* ([filename^ + (let* ([filename (let ([x (syntax->datum #'filename)]) - (if (string? x) - x - (syntax-violation #f "file name is not a string" + (if (and (string? x) (not (string=? x ""))) + (if (char=? (string-ref x 0) #\/) + x + (let f ([ls (library-path)]) + (if (null? ls) + (syntax-violation #f + "file does not exist in library path" + #'form #'filename) + (let ([x (string-append (car ls) "/" x)]) + (if (file-exists? x) + (file-real-path x) + (f (cdr ls))))))) + (syntax-violation #f + "file name must be a nonempty string" #'form #'filename)))] [content (with-exception-handler (lambda (x) (raise-continuable (condition - (make-who-condition #'who) + (make-who-condition (syntax->datum #'who)) x))) (lambda () - (with-input-from-file filename^ + (with-input-from-file filename (lambda () (let loop () - (let ([x (read)]) + (let ([x (read-annotated)]) (if (eof-object? x) '() (cons (datum->syntax #'id x) (loop)))))))))]) #`(stale-when - (or (not (file-exists? filename)) - (> (file-mtime filename) #,(file-mtime filename^))) + (or (not (file-exists? #,filename)) + (> (file-mtime #,filename) #,(file-mtime filename))) #,@content))]))) (define-syntax include/lexical-context diff --git a/scheme/Makefile.am b/scheme/Makefile.am index 6228170..5719f77 100644 --- a/scheme/Makefile.am +++ b/scheme/Makefile.am @@ -119,6 +119,7 @@ MAINTAINERCLEANFILES=last-revision ikarus.boot: $(EXTRA_DIST) ikarus.config.ss IKARUS_SRC_DIR=$(srcdir) \ IKARUS_BUILD_DIR=$(builddir) \ + IKARUS_FASL_DIRECTORY='' \ IKARUS_LIBRARY_PATH=$(srcdir):$(srcdir)/../lib \ ../src/ikarus -b $(srcdir)/ikarus.boot.$(sizeofvoidp).prebuilt \ --r6rs-script $(srcdir)/makefile.ss diff --git a/scheme/Makefile.in b/scheme/Makefile.in index 4843224..c5b3129 100644 --- a/scheme/Makefile.in +++ b/scheme/Makefile.in @@ -454,6 +454,7 @@ ikarus.config.ss: Makefile last-revision ../config.h ikarus.boot: $(EXTRA_DIST) ikarus.config.ss IKARUS_SRC_DIR=$(srcdir) \ IKARUS_BUILD_DIR=$(builddir) \ + IKARUS_FASL_DIRECTORY='' \ IKARUS_LIBRARY_PATH=$(srcdir):$(srcdir)/../lib \ ../src/ikarus -b $(srcdir)/ikarus.boot.$(sizeofvoidp).prebuilt \ --r6rs-script $(srcdir)/makefile.ss diff --git a/scheme/last-revision b/scheme/last-revision index a562b57..bb08106 100644 --- a/scheme/last-revision +++ b/scheme/last-revision @@ -1 +1 @@ -1799 +1800