diff options
author | David Thompson <dthompson2@worcester.edu> | 2014-11-30 21:34:26 -0500 |
---|---|---|
committer | David Thompson <dthompson2@worcester.edu> | 2014-11-30 21:34:26 -0500 |
commit | 91f825fec2594c9ce9f0e4cbaecd1ad1315ae462 (patch) | |
tree | 77498f934f6bb3bc8fbf568e49a9b21c9ee17a96 | |
parent | 7c60995c826a50844a961d648bca45d6f2e34233 (diff) |
live-reload: Protect against deleted files and also check ctime.
* sly/live-reload.scm (live-reload): Check if file exists before making
stat call. Check ctime in addition to mtime.
-rw-r--r-- | sly/live-reload.scm | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/sly/live-reload.scm b/sly/live-reload.scm index 78c4cf7..ed4d94a 100644 --- a/sly/live-reload.scm +++ b/sly/live-reload.scm @@ -41,13 +41,16 @@ filename string." (apply proc filename args)) (define (current-mtime) - (stat:mtime (stat filename))) + (let ((info (stat filename))) + (max (stat:mtime info) (stat:ctime info)))) (let ((asset (make-signal (load-asset)))) (coroutine (let loop ((last-mtime (current-mtime))) (wait live-reload-interval) - (let ((mtime (current-mtime))) + (let ((mtime (if (file-exists? filename) + (current-mtime) + last-mtime))) (when (> mtime last-mtime) (signal-set! asset (load-asset))) (loop mtime)))) |