zone.lisp, frontend.lisp: New configuration-variable machinery.
[zone] / frontend.lisp
index 5a3bb7a..613fb21 100644 (file)
@@ -23,7 +23,7 @@
 
 (defpackage #:zone.frontend
   (:use #:common-lisp #:mdw.sys-base #:optparse #:net #:zone
-       #+cmu #:mop
+       #+(or cmu clisp) #:mop
        #+sbcl #:sb-mop)
   (:export #:main))
 (in-package #:zone.frontend)
                           (keyword opt-format
                                    (delete-duplicates
                                     (loop for method in
-                                          (generic-function-methods
-                                           #'zone:zone-write)
+                                          (append
+                                           (generic-function-methods
+                                            #'zone:zone-write)
+                                           (generic-function-methods
+                                            #'zone:zone-write-header))
                                           for specs =
                                           (method-specializers method)
                                           if (typep (car specs)
               (let ((*package* (make-package "ZONE.SCRATCH"
                                              :use '(#:common-lisp
                                                     #:net #:zone))))
-                (load f :verbose nil :print nil :if-does-not-exist :error)
-                (delete-package *package*)))
+                (progv *zone-config* (mapcar #'symbol-value *zone-config*)
+                  (load f :verbose nil :print nil :if-does-not-exist :error)
+                  (delete-package *package*))))
             (zone-save opt-zones :format opt-format)))
       (with-unix-error-reporting ()
        (unless (option-parse-try