From b037b1b671d7069355fd146b9af110fc30c66afe Mon Sep 17 00:00:00 2001 From: Abdulaziz Ghuloum Date: Fri, 5 Dec 2008 02:19:26 -0500 Subject: [PATCH] getenv now returns #f for unset environment variables. --- scheme/ikarus.posix.ss | 13 ++++++++----- scheme/last-revision | 2 +- src/ikarus-runtime.c | 7 +------ 3 files changed, 10 insertions(+), 12 deletions(-) diff --git a/scheme/ikarus.posix.ss b/scheme/ikarus.posix.ss index 991a9cd..b86d4a7 100644 --- a/scheme/ikarus.posix.ss +++ b/scheme/ikarus.posix.ss @@ -309,15 +309,18 @@ ($file-time x 'file-mtime (lambda (u) (foreign-call "ikrt_file_mtime2" u)))) - (define ($getenv-bv key) - (foreign-call "ikrt_getenv" key)) - (define ($getenv-str key) - (utf8->string ($getenv-bv (string->utf8 key)))) + (define (getenv key) + (define who 'getenv) + (define ($getenv-str key) + (define ($getenv-bv key) + (foreign-call "ikrt_getenv" key)) + (let ([rv ($getenv-bv (string->utf8 key))]) + (and rv (utf8->string rv)))) (if (string? key) ($getenv-str key) - (die 'getenv "the key is not a string" key))) + (die who "key is not a string" key))) (define env (let () diff --git a/scheme/last-revision b/scheme/last-revision index 7c024ac..4e43fed 100644 --- a/scheme/last-revision +++ b/scheme/last-revision @@ -1 +1 @@ -1697 +1698 diff --git a/src/ikarus-runtime.c b/src/ikarus-runtime.c index 0e3456f..95e50a2 100644 --- a/src/ikarus-runtime.c +++ b/src/ikarus-runtime.c @@ -908,12 +908,7 @@ ikrt_getenv(ikptr bv, ikpcb* pcb){ return s; } else { - /* empty bv */ - ikptr s = ik_safe_alloc(pcb, align(disp_bytevector_data+1)) - + bytevector_tag; - ref(s, -bytevector_tag) = fix(0); - ref(s, off_bytevector_data) = 0; - return s; + return false_object; } }