106 |
(= pt-fileno error-fdes))) |
(= pt-fileno error-fdes))) |
107 |
(close-fdes pt-fileno)))))) |
(close-fdes pt-fileno)))))) |
108 |
|
|
109 |
;; copy the three selected descriptors to the standard |
;; Copy the three selected descriptors to the standard |
110 |
;; descriptors 0, 1, 2. note that it's possible that |
;; descriptors 0, 1, 2, if not already there |
|
;; output-fdes or input-fdes is equal to error-fdes. |
|
111 |
|
|
112 |
(cond ((not (= input-fdes 0)) |
(cond ((not (= input-fdes 0)) |
113 |
(if (= output-fdes 0) |
(if (= output-fdes 0) |
114 |
(set! output-fdes (dup->fdes 0))) |
(set! output-fdes (dup->fdes 0))) |
115 |
(if (= error-fdes 0) |
(if (= error-fdes 0) |
116 |
(set! error-fdes (dup->fdes 0))) |
(set! error-fdes (dup->fdes 0))) |
117 |
(dup2 input-fdes 0))) |
(dup2 input-fdes 0) |
118 |
|
;; it's possible input-fdes is error-fdes |
119 |
|
(if (not (= input-fdes error-fdes)) |
120 |
|
(close-fdes input-fdes)))) |
121 |
|
|
122 |
(cond ((not (= output-fdes 1)) |
(cond ((not (= output-fdes 1)) |
123 |
(if (= error-fdes 1) |
(if (= error-fdes 1) |
124 |
(set! error-fdes (dup->fdes 1))) |
(set! error-fdes (dup->fdes 1))) |
125 |
(dup2 output-fdes 1))) |
(dup2 output-fdes 1) |
126 |
|
;; it's possible output-fdes is error-fdes |
127 |
|
(if (not (= output-fdes error-fdes)) |
128 |
|
(close-fdes output-fdes)))) |
129 |
|
|
130 |
(dup2 error-fdes 2) |
(cond ((not (= error-fdes 2)) |
131 |
|
(dup2 error-fdes 2) |
132 |
|
(close-fdes error-fdes))) |
133 |
|
|
134 |
(apply execlp prog prog args))) |
(apply execlp prog prog args))) |
135 |
|
|