X-Git-Url: http://git.kpe.io/?p=kmrcl.git;a=blobdiff_plain;f=io.lisp;h=7fbf186753e9f2ba731357bf66bdf60e0cd448c1;hp=c444e0f903b92531170d06ecf93990af090ea0df;hb=d11d6cc43fd9227a8aeed28dc2cfecdbc587ec4a;hpb=0866fba9e22be18d536c8c94ae1f17e6f0f55f86 diff --git a/io.lisp b/io.lisp index c444e0f..7fbf186 100644 --- a/io.lisp +++ b/io.lisp @@ -7,7 +7,7 @@ ;;;; Programmer: Kevin M. Rosenberg ;;;; Date Started: Apr 2000 ;;;; -;;;; $Id: io.lisp,v 1.10 2003/06/20 08:50:38 kevin Exp $ +;;;; $Id$ ;;;; ;;;; This file, part of KMRCL, is Copyright (c) 2002 by Kevin M. Rosenberg ;;;; @@ -169,3 +169,24 @@ #-allegro (write-string (write-to-string n) s)) + +#+openmcl +(defun open-device-stream (path direction) + (let* ((mode (ecase direction + (:input #.(read-from-string "#$O_RDONLY")) + (:output #.(read-from-string "#$O_WRONLY")) + (:io #.(read-from-string "#$O_RDWR")))) + (fd (ccl::fd-open (ccl::native-translated-namestring path) mode))) + (if (< fd 0) + (ccl::signal-file-error fd path) + (ccl::make-fd-stream fd :direction direction)))) + + +(defun null-output-stream () + #-openmcl + (when (probe-file #p"/dev/null") + (open #p"/dev/null" :direction :output :if-exists :overwrite)) + #+openmcl + (when (probe-file #p"/dev/null") + (open-device-stream #p"/dev/null" :output)) + )