X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Frun-program.lisp;h=4dbcc554a526232a9de09f9b10708cf3180bfe3f;hb=9a241987c408980164f71237f7d840265302bbc1;hp=1dad7f90faf569f0551fbef5ff4cee95ce70176a;hpb=e48026257ea92807b2a5ee799476be198fc64dd6;p=sbcl.git diff --git a/src/code/run-program.lisp b/src/code/run-program.lisp index 1dad7f9..4dbcc55 100644 --- a/src/code/run-program.lisp +++ b/src/code/run-program.lisp @@ -45,7 +45,7 @@ ;;;; which (at least in sbcl-0.6.10 on Red Hat Linux 6.2) is not ;;;; visible at GENESIS time. -(def-alien-variable "environ" (* c-string)) +(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. @@ -59,7 +59,7 @@ ;; 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.) - (def-alien-variable "environ" (* c-string))) + (define-alien-variable "environ" (* c-string))) *after-save-initializations*) (defun posix-environ () @@ -108,7 +108,7 @@ ;;;; Import wait3(2) from Unix. -(sb-alien:def-alien-routine ("wait3" c-wait3) sb-c-call:int +(sb-alien:define-alien-routine ("wait3" c-wait3) sb-c-call:int (status sb-c-call:int :out) (options sb-c-call:int) (rusage sb-c-call:int)) @@ -174,7 +174,7 @@ (defmethod print-object ((process process) stream) (print-unreadable-object (process stream :type t) (format stream - "~D ~S" + "~W ~S" (process-pid process) (process-status process))) process) @@ -305,7 +305,7 @@ (defvar *handlers-installed* nil) #+FreeBSD -(def-alien-type nil +(define-alien-type nil (struct sgttyb (sg-ispeed sb-c-call:char) ; input speed (sg-ospeed sb-c-call:char) ; output speed @@ -313,7 +313,7 @@ (sg-kill sb-c-call:char) ; kill character (sg-flags sb-c-call:short))) ; mode flags #+OpenBSD -(def-alien-type nil +(define-alien-type nil (struct sgttyb (sg-four sb-c-call:int) (sg-chars (array sb-c-call:char 4)) @@ -380,7 +380,7 @@ (when (streamp pty) (multiple-value-bind (new-fd errno) (sb-unix:unix-dup master) (unless new-fd - (error "couldn't SB-UNIX:UNIX-DUP ~D: ~A" master (strerror errno))) + (error "couldn't SB-UNIX:UNIX-DUP ~W: ~A" master (strerror errno))) (push new-fd *close-on-error*) (copy-descriptor-to-stream new-fd pty cookie))) (values name @@ -413,9 +413,9 @@ ;; Blast the string into place. (sb-kernel:copy-to-system-area (the simple-string s) (* sb-vm:vector-data-offset - sb-vm:word-bits) + sb-vm:n-word-bits) string-sap 0 - (* (1+ n) sb-vm:byte-bits)) + (* (1+ n) sb-vm:n-byte-bits)) ;; Blast the pointer to the string into place. (setf (sap-ref-sap vec-sap i) string-sap) (setf string-sap (sap+ string-sap (round-bytes-to-words (1+ n)))) @@ -435,7 +435,7 @@ ,@body) (sb-sys:deallocate-system-memory ,sap ,size))))) -(sb-alien:def-alien-routine spawn sb-c-call:int +(sb-alien:define-alien-routine spawn sb-c-call:int (program sb-c-call:c-string) (argv (* sb-c-call:c-string)) (envp (* sb-c-call:c-string)) @@ -601,9 +601,9 @@ ;; "path:" defined in sbcl-0.6.10. It would probably be ;; reasonable to restore Unix PATH searching in SBCL, e.g. ;; with a function FIND-EXECUTABLE-FILE-IN-POSIX-PATH. - ;; (I don't want to do it with search lists the way - ;; that CMU CL did, because those are a non-ANSI - ;; extension which I'd like to get rid of. -- WHN) + ;; CMU CL did it with a "PATH:" search list, but CMU CL + ;; search lists are a non-ANSI extension that SBCL + ;; doesn't support. -- WHN) (pfile (unix-namestring program t)) (cookie (list 0))) (unless pfile @@ -669,54 +669,54 @@ (setf handler (sb-sys:add-fd-handler descriptor - :input #'(lambda (fd) - (declare (ignore fd)) - (loop - (unless handler - (return)) - (multiple-value-bind - (result readable/errno) - (sb-unix:unix-select (1+ descriptor) - (ash 1 descriptor) - 0 0 0) - (cond ((null result) - (error "~@" - (strerror readable/errno))) - ((zerop result) - (return)))) - (sb-alien:with-alien ((buf (sb-alien:array - sb-c-call:char - 256))) - (multiple-value-bind - (count errno) - (sb-unix:unix-read descriptor - (alien-sap buf) - 256) - (cond ((or (and (null count) - (eql errno sb-unix:eio)) - (eql count 0)) - (sb-sys:remove-fd-handler handler) - (setf handler nil) - (decf (car cookie)) - (sb-unix:unix-close descriptor) - (return)) - ((null count) - (sb-sys:remove-fd-handler handler) - (setf handler nil) - (decf (car cookie)) - (error - "~@" - (strerror errno))) - (t - (sb-kernel:copy-from-system-area - (alien-sap buf) 0 - string (* sb-vm:vector-data-offset - sb-vm:word-bits) - (* count sb-vm:byte-bits)) - (write-string string stream - :end count))))))))))) + (strerror errno))) + (t + (sb-kernel:copy-from-system-area + (alien-sap buf) 0 + string (* sb-vm:vector-data-offset + sb-vm:n-word-bits) + (* count sb-vm:n-byte-bits)) + (write-string string stream + :end count))))))))))) ;;; Find a file descriptor to use for object given the direction. ;;; Returns the descriptor. If object is :STREAM, returns the created