anchor.diff:    (logior sb-posix:o-rdonly))
   (defmethod open-args-for-redirect ((r great))
     (declare (ignore r))
  -  (logior sb-posix:o-creat sb-posix:o-trunc sb-posix:o-wronly))
  +  (logior sb-posix:o-wronly sb-posix:o-creat sb-posix:o-trunc))
   (defmethod open-args-for-redirect ((r dgreat))
     (declare (ignore r))
  -  (logior sb-posix:o-creat sb-posix:o-append sb-posix:o-wronly))
  +  (logior sb-posix:o-wronly sb-posix:o-creat sb-posix:o-append))
   (defmethod open-args-for-redirect ((r lessgreat))
     (declare (ignore r))
  -  (logior sb-posix:o-creat))
  +  (logior sb-posix:o-rdwr sb-posix:o-creat))
   
   (defgeneric fd-from-description (description))
   (defmethod fd-from-description ((fd integer))
  
positive.code: (in-package :shcl.evaluate)
  
  (optimization-settings)
  
  (define-condition not-implemented ()
    ((message
  
negative.code: (defmethod fd-from-description ((io-file io-file))
    (with-slots (redirect filename) io-file
      (let ((fd (sb-posix:open (coerce (token-value filename) 'simple-string)
                               (open-args-for-redirect redirect)
                               *umask*)))
        (format *error-output* "OPEN ~A = ~A~%" fd filename)
        (values fd t))))
  
  