From: Henry M. Wu Date: Thu, 28 May 1992 23:21:48 +0000 (+0000) Subject: Added reset-environment-variables! X-Git-Tag: 20090517-FFI~9316 X-Git-Url: https://birchwood-abbey.net/git?a=commitdiff_plain;h=d591e4aec87565d495c6a612cd6b99a35e301eb8;p=mit-scheme.git Added reset-environment-variables! --- diff --git a/v7/src/runtime/dosprm.scm b/v7/src/runtime/dosprm.scm index aa85418cb..e0cde5b23 100644 --- a/v7/src/runtime/dosprm.scm +++ b/v7/src/runtime/dosprm.scm @@ -1,6 +1,6 @@ #| -*-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 @@ -143,21 +143,20 @@ MIT in each case. |# (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) @@ -175,6 +174,8 @@ MIT in each case. |# (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) @@ -202,4 +203,8 @@ MIT in each case. |# (define (make-directory name) ((ucode-primitive directory-make) (->namestring (pathname-as-directory (merge-pathnames name))))) - \ No newline at end of file + + +;;; Queues after-restart daemon to clean up environment space + +(add-event-receiver! event:after-restart reset-environment-variables!) diff --git a/v7/src/runtime/site.scm.dos b/v7/src/runtime/site.scm.dos index f7fb94f5b..ded94ef9d 100644 --- a/v7/src/runtime/site.scm.dos +++ b/v7/src/runtime/site.scm.dos @@ -1,6 +1,6 @@ #| -*-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 @@ -52,6 +52,14 @@ MIT in each case. |# (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 @@ -65,4 +73,4 @@ MIT in each case. |# (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