This is the mail archive of the guile@cygnus.com mailing list for the guile project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Reload of a module


below is stuff i use from thud (munge to taste).

thi


--------------------
(define (make-dic)	(make-array '() 431))

;; Timestamps for files.
;;
(or (defined? 'file-timestamps)		; for now
    (define file-timestamps (make-dic))
    )					; for now

;; File changed since last check?  As a side effect, the timestamp is updated.
;;
(define (file-changed? file)
  (define cur-ts   (stat:mtime (stat file)))
  (define last-ts  (hashq-ref file-timestamps file))
  (d-set! file-timestamps file cur-ts)
  (or (not last-ts) (not (= cur-ts last-ts))))

(define (include-th-file filename)
  (log-event-verbosely 'including filename)
  (and (file-changed? filename)
       (begin
	 (call-with-input-file filename
	   (lambda (p)
	     (call-with-current-continuation
	      (lambda (return)
		(let loop ((form (read p)))
		  (and (eof-object? form)
		       (return #f))
		  (scan-dispatch form)
		  (loop (read p)))))))))
  (log-event 'done 'including))