;; file i/o
;; XXX needs to catch errors
(include "lib/core.scm")
(include "lib/pair.scm")
(include "lib/string.scm")
(include "lib/io.scm")
;; copy file to stdout
(let ((f (file/open-read "gc.c")))
(let loop ((buffer (file/read-buffer f)))
(cond ((> (string-length buffer) 0)
(write 1 buffer)
(loop (file/read-buffer f)))))
(file/close f))
;; read a few characters...
(let ((f (file/open-read "gc.c")))
(let loop ((n 10))
(cond ((= n 0) #t)
(else
(printn (file/read-char f))
(loop (- n 1)))))
(file/close f))
;; write a file by chars...
(let ((f (file/open-write "thing.txt" #t #o644)))
;;(print-string "fd=") (printn f.fd)
(file/write-char f #\H)
(file/write-char f #\o)
(file/write-char f #\w)
(file/write-char f #\d)
(file/write-char f #\y)
(file/write-char f #\newline)
(file/flush f)
(file/close f)
)