Don't load option files more than once.
authorChris Hanson <org/chris-hanson/cph>
Wed, 6 Mar 1991 18:39:26 +0000 (18:39 +0000)
committerChris Hanson <org/chris-hanson/cph>
Wed, 6 Mar 1991 18:39:26 +0000 (18:39 +0000)
v7/src/runtime/option.scm

index 2d0685900135d0023fa67f69ea73eb043d5df338..8f52d5b43686f1cab132b5fc2c16eb73c65d6299 100644 (file)
@@ -1,6 +1,6 @@
 #| -*-Scheme-*-
 
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/runtime/option.scm,v 14.10 1991/02/19 22:45:25 cph Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/runtime/option.scm,v 14.11 1991/03/06 18:39:26 cph Exp $
 
 Copyright (c) 1988-91 Massachusetts Institute of Technology
 
@@ -43,23 +43,29 @@ MIT in each case. |#
         (system-library-directory-pathname (string->pathname "options"))))
     (if (not entry)
        (error "Unknown option name" name))
-    (for-each
-     (lambda (descriptor)
-       (let ((environment
-             (package/environment (find-package (car descriptor)))))
-        (for-each (lambda (filename)
-                    (load (merge-pathnames (string->pathname filename)
-                                           directory)
-                          environment
-                          syntax-table/system-internal
-                          true))
-                  (cddr descriptor))
-        (eval (cadr descriptor) environment)))
-     (cdr entry))
+    (if (not (memq name loaded-options))
+       (begin
+         (for-each
+          (lambda (descriptor)
+            (let ((environment
+                   (package/environment (find-package (car descriptor)))))
+              (for-each (lambda (filename)
+                          (load (merge-pathnames (string->pathname filename)
+                                                 directory)
+                                environment
+                                syntax-table/system-internal
+                                true))
+                        (cddr descriptor))
+              (eval (cadr descriptor) environment)))
+          (cdr entry))
+         (set! loaded-options (cons name loaded-options))))
     name))
 
 (define options
   '((ARITHMETIC-INTERFACE ((RUNTIME NUMBER INTERFACE) #F "numint"))
     (FORMAT ((RUNTIME FORMAT) (INITIALIZE-PACKAGE!) "format"))
     (HASH-TABLE ((RUNTIME HASH-TABLE) (INITIALIZE-PACKAGE!) "hashtb"))
-    (SUBPROCESS ((RUNTIME SUBPROCESS) (INITIALIZE-PACKAGE!) "process"))))
\ No newline at end of file
+    (SUBPROCESS ((RUNTIME SUBPROCESS) (INITIALIZE-PACKAGE!) "process"))))
+
+(define loaded-options
+  '())
\ No newline at end of file