aboutsummaryrefslogtreecommitdiffstats
path: root/requires.scm
diff options
context:
space:
mode:
Diffstat (limited to 'requires.scm')
-rw-r--r--requires.scm22
1 files changed, 22 insertions, 0 deletions
diff --git a/requires.scm b/requires.scm
new file mode 100644
index 0000000..bd4b8bf
--- /dev/null
+++ b/requires.scm
@@ -0,0 +1,22 @@
+;;; "require.scm" Trampoline to slib/require.scm
+
+(set! library-vicinity
+ (let* ((vl (case (software-type)
+ ((AMIGA) '(#\: #\/))
+ ((MS-DOS WINDOWS ATARIST OS/2) '(#\\ #\/))
+ ((MACOS THINKC) '(#\:))
+ ((NOSVE) '(#\: #\.))
+ ((UNIX COHERENT) '(#\/))
+ ((VMS) '(#\: #\]))))
+ (iv (implementation-vicinity))
+ (vc (and (positive? (string-length iv))
+ (string-ref iv (+ -1 (string-length iv)))))
+ (vs (if (memv vc vl) (string vc) "/"))
+ (lv (let loop ((pos (+ -2 (string-length iv))))
+ (cond ((or (< pos 0) (not vs))
+ (string-append iv ".." vs "slib" vs))
+ ((memv (string-ref iv pos) vl)
+ (string-append (substring iv 0 (+ 1 pos)) "slib" vs))
+ (else (loop (- pos 1)))))))
+ (lambda () lv)))
+(load (in-vicinity (library-vicinity) "require"))