Ticket #216: run-program-sharing.diff

File run-program-sharing.diff, 2.8 KB (added by danieldickison, 7 years ago)

Patch to add a single :sharing argument to run-program

  • level-1/linux-files.lisp

     
    684684 
    685685(defun get-descriptor-for (object proc close-in-parent close-on-error 
    686686                                  &rest keys &key direction (element-type 'character) 
     687                                  (sharing :private) 
    687688                                  &allow-other-keys) 
    688689  (etypecase object 
    689690    ((eql t) 
     
    704705                  (make-fd-stream write-pipe 
    705706                                  :direction :output 
    706707                                  :element-type element-type 
     708                                  :sharing sharing 
    707709                                  :interactive nil 
    708710                                  :basic t) 
    709711                  (cons read-pipe close-in-parent) 
     
    713715                  (make-fd-stream read-pipe 
    714716                                  :direction :input 
    715717                                  :element-type element-type 
     718                                  :sharing sharing 
    716719                                  :interactive nil 
    717720                                  :basic t) 
    718721                  (cons write-pipe close-in-parent) 
     
    877880                            output (if-output-exists :error) 
    878881                            (error :output) (if-error-exists :error) 
    879882                            status-hook (element-type 'character) 
     883                            (sharing :private) 
    880884                            env) 
    881885  "Invoke an external program as an OS subprocess of lisp." 
    882886  (declare (ignore pty)) 
     
    907911           (multiple-value-setq (in-fd in-stream close-in-parent close-on-error) 
    908912             (get-descriptor-for input proc  nil nil :direction :input 
    909913                                 :if-does-not-exist if-input-does-not-exist 
    910                                  :element-type element-type)) 
     914                                 :element-type element-type 
     915                                 :sharing sharing)) 
    911916           (multiple-value-setq (out-fd out-stream close-in-parent close-on-error) 
    912917             (get-descriptor-for output proc close-in-parent close-on-error 
    913918                                 :direction :output 
    914919                                 :if-exists if-output-exists 
    915                                  :element-type element-type)) 
     920                                 :element-type element-type 
     921                                 :sharing sharing)) 
    916922           (multiple-value-setq (error-fd error-stream close-in-parent close-on-error) 
    917923             (if (eq error :output) 
    918924               (values out-fd out-stream close-in-parent close-on-error) 
    919925               (get-descriptor-for error proc close-in-parent close-on-error 
    920926                                   :direction :output 
    921927                                   :if-exists if-error-exists 
    922                                    :element-type element-type))) 
     928                                   :element-type element-type 
     929                                   :sharing sharing))) 
    923930           (setf (external-process-input proc) in-stream 
    924931                 (external-process-output proc) out-stream 
    925932                 (external-process-error proc) error-stream)