Remove egregious lack of support for reading directory contents in filesystem driver

This commit is contained in:
Tony Garnock-Jones 2016-12-04 17:33:12 +13:00
parent 73e0ba315a
commit 4ee234f118
2 changed files with 10 additions and 3 deletions

View File

@ -21,7 +21,7 @@
(track-file name reader-proc))))
(define (read-file name reader-proc)
(and (file-exists? name)
(and (or (file-exists? name) (directory-exists? name))
(reader-proc name)))
(define (track-file name reader-proc)
@ -44,7 +44,7 @@
;; (log-info "track-file-changes ~v: ~v" name msg)
(match msg
['quit (void)])))
(if (file-exists? name) ;; TODO: TOCTTOU :-(
(if (or (file-exists? name) (directory-exists? name)) ;; TODO: TOCTTOU :-(
(handle-evt (filesystem-change-evt name)
(lambda (_dummy)
;; (log-info "track-file-changes ~v: changed" name)

View File

@ -18,4 +18,11 @@
(actor #:name (list 'monitor name)
(stop-when (message (list "close" name)))
(on (asserted (file-content name file->bytes $bs))
(log-info "~a: ~v" name bs)))))
(log-info "~a: ~v" name bs))))
;; The driver can track directory "contents" just as well as files.
(on (message (list "opendir" $name))
(actor #:name (list 'monitor name)
(stop-when (message (list "close" name)))
(on (asserted (file-content name directory-list $files))
(log-info "~a: ~v" name files)))))