r10917: 2006-04-17 Kevin Rosenberg (kevin@rosenberg.net)
[uffi.git] / src / os.lisp
index a95bb6122ae1fe1dbce3359d5541cc01a2d05106..9c316e4a23401cf8b1ac10e8f894bbe8bf8b95d1 100644 (file)
@@ -5,21 +5,32 @@
 ;;;; Name:          os.lisp
 ;;;; Purpose:       Operating system interface for UFFI
 ;;;; Programmer:    Kevin M. Rosenberg
-;;;; Date Started:  Sep 2002 
+;;;; Date Started:  Sep 2002
 ;;;;
 ;;;; $Id$
 ;;;;
-;;;; This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg.
-;;;; Much of this code was taken from other open source project and copyright
-;;;; for that code is noted below where appropriate.
+;;;; This file, part of UFFI, is Copyright (c) 2002-2005 by Kevin M. Rosenberg.
 ;;;;
-;;;; UFFI users are granted the rights to distribute and use this software
-;;;; as governed by the terms of the Lisp Lesser GNU Public License
-;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL.
 ;;;; *************************************************************************
 
 (in-package #:uffi)
 
+
+(defun getenv (var)
+  "Return the value of the environment variable."
+  #+allegro (sys::getenv (string var))
+  #+clisp (sys::getenv (string var))
+  #+cmu (cdr (assoc (string var) ext:*environment-list* :test #'equalp
+                    :key #'string))
+  #+gcl (si:getenv (string var))
+  #+lispworks (lw:environment-variable (string var))
+  #+lucid (lcl:environment-variable (string var))
+  #+(or openmcl digitool) (ccl::getenv var)
+  #+sbcl (sb-ext:posix-getenv var)
+  #-(or allegro clisp cmu gcl lispworks lucid openmcl digitool sbcl)
+  (error 'not-implemented :proc (list 'getenv var)))
+
+
 ;; modified from function ASDF -- Copyright Dan Barlow and Contributors
 
 (defun run-shell-command (control-string  &rest args &key output)
@@ -32,27 +43,27 @@ output to *trace-output*.  Returns the shell's exit code."
   (let ((command (apply #'format nil control-string args)))
     #+sbcl
     (sb-impl::process-exit-code
-     (sb-ext:run-program  
+     (sb-ext:run-program
       "/bin/sh"
       (list "-c" command)
       :input nil :output output))
-    
+
     #+(or cmu scl)
     (ext:process-exit-code
-     (ext:run-program  
+     (ext:run-program
       "/bin/sh"
       (list "-c" command)
       :input nil :output output))
 
     #+allegro
     (excl:run-shell-command command :input nil :output output)
-    
+
     #+lispworks
     (system:call-system-showing-output
      command
      :shell-type "/bin/sh"
      :output-stream output)
-    
+
     #+clisp                            ;XXX not exactly *trace-output*, I know
     (ext:run-shell-command  command :output :terminal :wait t)
 
@@ -64,5 +75,5 @@ output to *trace-output*.  Returns the shell's exit code."
                                 :wait t)))
 
     #-(or openmcl clisp lispworks allegro scl cmu sbcl)
-    (error "RUN-SHELL-PROGRAM not implemented for this Lisp")
+    (error "RUN-SHELL-PROGRAM not implemented for this Lisp.")
     ))