59 lines
1.6 KiB
Scheme
59 lines
1.6 KiB
Scheme
; listhome.scm
|
|
; Sample usage of TinyScheme Extension
|
|
; This simple program lists the directory entries on the
|
|
; user's home directory.
|
|
|
|
; It uses the following TinyScheme Extension functions:
|
|
; getenv
|
|
; Used to get HOME environment variable.
|
|
; open-dir-stream
|
|
; Used to open directory stream.
|
|
; read-dir-entry
|
|
; Used to read directory entries.
|
|
; close-dir-entry
|
|
; Used at the end, to close directory stream when done.
|
|
|
|
; check that extensions are enabled
|
|
(if (not (defined? 'load-extension))
|
|
(begin
|
|
(display "TinyScheme has extensions disabled. Enable them!!")
|
|
(newline)
|
|
(quit)))
|
|
|
|
; load TinyScheme extension
|
|
(load-extension "tsx-1.1/tsx")
|
|
|
|
; check that the necessary functions are available (the user
|
|
; might have removed some functionality...)
|
|
(if (or
|
|
(not (defined? 'getenv))
|
|
(not (defined? 'dir-open-stream))
|
|
(not (defined? 'dir-read-entry))
|
|
(not (defined? 'dir-close-stream)))
|
|
(begin
|
|
(display "Some necessary functions are not available. Exiting!")
|
|
(newline)
|
|
(quit)))
|
|
|
|
; get user's home dir from HOME environment var
|
|
(define homedir (getenv "HOME"))
|
|
(display "Listing contents of ") (display homedir) (newline)
|
|
|
|
; create directory stream to read dir entries
|
|
(define dirstream (dir-open-stream homedir))
|
|
(if (not dirstream)
|
|
(begin
|
|
(display "Unable to open home directory!! Check value of HOME environment var.")
|
|
(quit)))
|
|
|
|
(let listentry ((entry (dir-read-entry dirstream)))
|
|
(if (eof-object? entry)
|
|
#t
|
|
(begin
|
|
(display entry)
|
|
(newline)
|
|
(listentry (dir-read-entry dirstream)))))
|
|
|
|
(dir-close-stream dirstream)
|
|
|