#| -*-Scheme-*-
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/runtime/dosprm.scm,v 1.4 1992/05/28 18:12:14 mhwu Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/runtime/dosprm.scm,v 1.5 1992/05/28 23:18:18 mhwu Exp $
Copyright (c) 1992 Massachusetts Institute of Technology
(define get-environment-variable)
(define set-environment-variable!)
(define delete-environment-variable!)
+(define reset-environment-variables!)
-(let ((environment-variables '())
- (*variable-deleted* "This var deleted"))
+(let ((environment-variables '()))
+ ;; Kludge: since getenv returns false for unbound,
+ ;; that can also be the marker for a deleted variable
+ (define-integrable *variable-deleted* false)
(set! get-environment-variable
(lambda (variable)
- (if (string? variable)
- (let ((scheme-value (assoc variable environment-variables)))
- (cond ((not scheme-value)
- ((ucode-primitive get-environment-variable) variable))
- ((eq? (cdr scheme-value) *variable-deleted*)
- false)
- (else
- (cdr scheme-value))))
- (error "GET-ENVIRONMENT-VARIABLE: Variable must be a string"
- variable))))
+ (cond ((not (string? variable))
+ (error "GET-ENVIRONMENT-VARIABLE: Variable must be a string"
+ variable))
+ ((assoc variable environment-variables) => cdr)
+ (else
+ ((ucode-primitive get-environment-variable) variable)))))
(set! set-environment-variable!
(lambda (variable value)
(if (string? variable)
(set! delete-environment-variable!
(lambda (variable)
(set-environment-variable! variable *variable-deleted*)))
+ (set! reset-environment-variables!
+ (lambda () (set! environment-variables '())))
) ; End LET
(define (dos/user-home-directory user-name)
(define (make-directory name)
((ucode-primitive directory-make)
(->namestring (pathname-as-directory (merge-pathnames name)))))
-
\ No newline at end of file
+
+\f
+;;; Queues after-restart daemon to clean up environment space
+
+(add-event-receiver! event:after-restart reset-environment-variables!)
#| -*-Scheme-*-
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/runtime/site.scm.dos,v 1.5 1992/05/28 22:43:20 mhwu Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/runtime/site.scm.dos,v 1.6 1992/05/28 23:21:48 mhwu Exp $
Copyright (c) 1988-1992 Massachusetts Institute of Technology
(add-directory-rewriting-rule! path "$mitscheme_inf_directory"))
'("/scheme")))
+(let ((set-default-inf-directory!
+ (lambda ()
+ (if (not (get-environment-variable "mitscheme_inf_directory"))
+ (set-environment-variable! "mitscheme_inf_directory"
+ "c:/scheme")))))
+ (set-default-inf-directory!)
+ (add-event-receiver! event:after-restart set-default-inf-directory!))
+
;;; Dos specific:
;;; Timer hook to get interrupt keys
(get-fixed-objects-vector)
(fixed-objects-vector-slot 'SYSTEM-INTERRUPT-VECTOR))))
(vector-set! sv timer-slot typeahead-timer-interrupt))
-) ; End IN-PACKAGE
\ No newline at end of file
+) ; End IN-PACKAGE