X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fcode%2Frun-program.lisp;h=fc02f3ef625dd86af36836b17a57319fa948a3c6;hb=bcbbce86c47a1c530d488c7876a453100fcd933e;hp=9bd487d1dc4873cf77ef687bb6a2378e85bdea0b;hpb=6139c89c89f45c03509e4f3156293ff656716a8c;p=sbcl.git diff --git a/src/code/run-program.lisp b/src/code/run-program.lisp index 9bd487d..fc02f3e 100644 --- a/src/code/run-program.lisp +++ b/src/code/run-program.lisp @@ -45,28 +45,12 @@ ;;;; which (at least in sbcl-0.6.10 on Red Hat Linux 6.2) is not ;;;; visible at GENESIS time. -(define-alien-variable "environ" (* c-string)) -(push (lambda () - ;; We redo this here to protect ourselves from this scenario: - ;; * Build under one version of shared lib, save a core. - ;; * Load core under another version of shared lib. ("Now - ;; where was environ again?" SIGSEGV, etc.) - ;; Obviously it's a KLUDGE to do this hack for every alien - ;; variable, but as it happens, as of sbcl-0.7.0 this is the - ;; only alien variable used to implement SBCL, so it's not - ;; worth coming up with a general solution. (A general - ;; solution would be nice for users who want to have their - ;; alien code be preserved across a save/load cycle, but this - ;; problem with alien variables is only one of several - ;; problems which'd need to be solved before that can happen.) - (define-alien-variable "environ" (* c-string))) - *after-save-initializations*) - +(define-alien-routine wrapped-environ (* c-string)) (defun posix-environ () "Return the Unix environment (\"man environ\") as a list of SIMPLE-STRINGs." - (c-strings->string-list environ)) + (c-strings->string-list (wrapped-environ))) -;;; Convert as best we can from a SBCL representation of a Unix +;;; Convert as best we can from an SBCL representation of a Unix ;;; environment to a CMU CL representation. ;;; ;;; * (UNIX-ENVIRONMENT-CMUCL-FROM-SBCL '("Bletch=fub" "Noggin" "YES=No!")) @@ -108,7 +92,7 @@ ;;;; Import wait3(2) from Unix. -(sb-alien:define-alien-routine ("wait3" c-wait3) sb-alien:int +(define-alien-routine ("wait3" c-wait3) sb-alien:int (status sb-alien:int :out) (options sb-alien:int) (rusage sb-alien:int)) @@ -202,12 +186,12 @@ #-hpux ;;; Find the current foreground process group id. (defun find-current-foreground-process (proc) - (sb-alien:with-alien ((result sb-alien:int)) + (with-alien ((result sb-alien:int)) (multiple-value-bind (wonp error) (sb-unix:unix-ioctl (sb-sys:fd-stream-fd (process-pty proc)) sb-unix:TIOCGPGRP - (sb-alien:alien-sap (sb-alien:addr result))) + (alien-sap (sb-alien:addr result))) (unless wonp (error "TIOCPGRP ioctl failed: ~S" (strerror error))) result))