anchor.diff:      (exit :code (process-exit-code child)))
     (format *error-output* "~&feed: unknown status-hook: ~s" child))
   
  -(defmacro strcase (string &rest args)
  +(defmacro recase (string &rest args)
     `(cond ,@(loop for pair in args collect
  -                 `((string= ,string ,(first pair)) ,@(rest pair)))))
  +                 `((match ,string ,(first pair)) ,@(rest pair)))))
   
   (defun external-cmd (input command args)
     "Replay to and interact with some external command."
  
positive.code:     ; TODO really needs to be from a config.lisp
      ; a low timeout isn't too terrible unless the REPL is picky about
      ; timing or the user dislikes the REPL replay looking like trash
      (strcase command
               ("ecl" (psetf expect "> " lisp t))
               ("lol" (psetf expect "SBCL> " lisp t))
               ("sbcl" (psetf expect "* " lisp t))
               ("expect" (psetf readfn #'redo-readline expect "expect"))
               ("gdb" (psetf expect "gdb"))
               ("egdb" (psetf expect "gdb"))
               ("gforth" (psetf expect #.(format nil "ok~c" #\newline)
                                seconds 0.01 nixline "^\\s*\\\\\\s+"))
               ; ... but would need regex to match the whole Stack<...
               ; line so meanwhile probably use this with -q
               ("pforth" (psetf expect #.(format nil "ok~c" #\newline)
                                seconds 0.01 nixline "^\\s*\\\\\\s+"))
               ("sh" (psetf readfn #'redo-readline))
               ("jsh" (psetf readfn #'redo-readline)) ; Heirloom Bourne Shell
               ("ksh" (psetf readfn #'redo-readline))
               ("mksh" (psetf readfn #'redo-readline))
               ("zsh" (psetf readfn #'redo-readline))
               ("sqlite" (psetf readfn #'redo-readline expect "sqlite>"))
               ("tclsh" (psetf readfn #'redo-readline expect "tclsh>"))
               )
      (if lisp
        (external-interact-lisp command pty stream expect seconds)
        (external-interact command pty stream readfn expect nixline seconds))))
  
negative.code: ;
  ; EXTERNAL COMMAND
  
  (defmacro match (string regex)
    `(cl-ppcre:do-matches (s e ,regex ,string) (return t)))
  
  (defparameter *buf*
    (make-array 4096 :adjustable t :element-type 'extended-char
                :fill-pointer 0)
  