(defun find-a-pty ()
(dolist (char '(#\p #\q))
(dotimes (digit 16)
- (let* ((master-name (format nil "/dev/pty~C~X" char digit))
+ (let* ((master-name (coerce (format nil "/dev/pty~C~X" char digit) 'base-string))
(master-fd (sb-unix:unix-open master-name
sb-unix:o_rdwr
#o666)))
(when master-fd
- (let* ((slave-name (format nil "/dev/tty~C~X" char digit))
+ (let* ((slave-name (coerce (format nil "/dev/tty~C~X" char digit) 'base-string))
(slave-fd (sb-unix:unix-open slave-name
sb-unix:o_rdwr
#o666)))
(read-line object nil nil)
(unless line
(return))
- (sb-unix:unix-write fd line 0 (length line))
+ (sb-unix:unix-write
+ fd
+ ;; FIXME: this really should be
+ ;; (STRING-TO-OCTETS :EXTERNAL-FORMAT ...).
+ ;; RUN-PROGRAM should take an
+ ;; external-format argument, which should
+ ;; be passed down to here. Something
+ ;; similar should happen on :OUTPUT, too.
+ (map '(vector (unsigned-byte 8)) #'char-code line)
+ 0 (length line))
(if no-cr
(return)
(sb-unix:unix-write fd newline 0 1)))))