0.6.7.22: removed CVS dollar-Header-dollar tags from sources
[sbcl.git] / src / code / run-program.lisp
index 0d1f594..7658e80 100644 (file)
@@ -11,9 +11,6 @@
 ;;;; files for more information.
 
 (in-package "SB-EXT")
-
-(file-comment
-  "$Header$")
 \f
 ;;;; Import wait3(2) from Unix.
 
@@ -22,7 +19,7 @@
   (options sb-c-call:int)
   (rusage sb-c-call:int))
 
-(eval-when (load eval compile)
+(eval-when (:compile-toplevel :load-toplevel :execute)
   (defconstant wait-wnohang #-svr4 1 #+svr4 #o100)
   (defconstant wait-wuntraced #-svr4 2 #+svr4 4)
   (defconstant wait-wstopped #-svr4 #o177 #+svr4 wait-wuntraced))
 
 #+FreeBSD
 (def-alien-type nil
-    (struct sgttyb
-           (sg-ispeed sb-c-call:char)  ; input speed
-           (sg-ospeed sb-c-call:char)  ; output speed
-           (sg-erase sb-c-call:char)   ; erase character
-           (sg-kill sb-c-call:char)    ; kill character
-           (sg-flags sb-c-call:short)  ; mode flags
-           ))
+  (struct sgttyb
+         (sg-ispeed sb-c-call:char)    ; input speed
+         (sg-ospeed sb-c-call:char)    ; output speed
+         (sg-erase sb-c-call:char)     ; erase character
+         (sg-kill sb-c-call:char)      ; kill character
+         (sg-flags sb-c-call:short)))  ; mode flags
+#+OpenBSD
+(def-alien-type nil
+  (struct sgttyb
+         (sg-four sb-c-call:int)
+         (sg-chars (array sb-c-call:char 4))
+         (sg-flags sb-c-call:int)))
 
 ;;; Find a pty that is not in use. Return three values: the file
 ;;; descriptor for the master side of the pty, the file descriptor for
                                              sb-unix:o_rdwr
                                              #o666)))
            (when slave-fd
-                                       ; Maybe put a vhangup here?
-              #-linux
+             ;; comment from classic CMU CL:
+             ;;   Maybe put a vhangup here?
+             ;;
+             ;; FIXME: It seems as though this logic should be in
+             ;; OPEN-PTY, not FIND-A-PTY (both from the comments
+             ;; documenting DEFUN FIND-A-PTY, and from the
+             ;; connotations of the function names).
+             ;;
+             ;; FIXME: It would be nice to have a note, and/or a pointer
+             ;; to some reference material somewhere, explaining
+             ;; why we need this on *BSD and not on Linux.
+              #+bsd
              (sb-alien:with-alien ((stuff (sb-alien:struct sgttyb)))
                (let ((sap (sb-alien:alien-sap stuff)))
                  (sb-unix:unix-ioctl slave-fd sb-unix:TIOCGETP sap)
                  (setf (sb-alien:slot stuff 'sg-flags)
-                       #o300)          ; EVENP|ODDP
+                       ;; This is EVENP|ODDP, the same numeric code
+                       ;; both on FreeBSD and on OpenBSD. -- WHN 20000929
+                       #o300) ; EVENP|ODDP
                  (sb-unix:unix-ioctl slave-fd sb-unix:TIOCSETP sap)
                  (sb-unix:unix-ioctl master-fd sb-unix:TIOCGETP sap)
                  (setf (sb-alien:slot stuff 'sg-flags)
                        (logand (sb-alien:slot stuff 'sg-flags)
+                               ;; This is ~ECHO, the same numeric
+                               ;; code both on FreeBSD and on OpenBSD.
+                               ;; -- WHN 20000929
                                (lognot 8))) ; ~ECHO
                  (sb-unix:unix-ioctl master-fd sb-unix:TIOCSETP sap)))
              (return-from find-a-pty