From: Fredrik Tolf Date: Fri, 29 Feb 2008 23:10:26 +0000 (+0100) Subject: Fixed hubmgr so that it rereads the hublist when changed. X-Git-Tag: 1.2~10 X-Git-Url: http://git.dolda2000.com/gitweb/?p=doldaconnect.git;a=commitdiff_plain;h=f9661e7e8994604df256282ac9b8cfe2c41266e9 Fixed hubmgr so that it rereads the hublist when changed. --- diff --git a/lib/guile/hubmgr b/lib/guile/hubmgr index 8da04f5..e323992 100755 --- a/lib/guile/hubmgr +++ b/lib/guile/hubmgr @@ -28,6 +28,7 @@ (define connlist '()) (define statelist '()) (define logdest #t) +(define hl-mtime 0) (define (logf . args) (let ((fmt (car args)) (args (cdr args))) @@ -70,6 +71,27 @@ (set! nl (cons o nl)))) statelist) nl)) + (catch 'system-error + (lambda () + (let ((mtime (stat:mtime (stat hl-file)))) + (if (> mtime hl-mtime) + (let* ((delta (list-delta hublist (read-hl))) + (same (car delta)) + (del (cadr delta)) + (new (caddr delta))) + (display same) (newline) + (display del) (newline) + (display new) (newline) + (for-each (lambda (o) + (let ((el (assq o connlist))) + (if el + (begin (if (not (eq? (cdr el) 'pend)) + (dc-qcmd (list "dcnct" (cdr el)))) + (set! connlist (delq el connlist)))))) + del) + (set! hublist (append (map (lambda (o) (car o)) same) new)) + (set! hl-mtime mtime))))) + (lambda (key . args) '())) (for-each (lambda (o) (if (and (not (assq o connlist)) (not (assq o statelist))) @@ -93,6 +115,7 @@ (quiet (single-char #\q) (value #f)))))) (if (option-ref opts 'quiet #f) (set! logdest #f)) (set! hublist (read-hl)) + (set! hl-mtime (stat:mtime (stat hl-file))) (logf "read ~a hubs" (length hublist)) (dc-c&l (not (option-ref opts 'quiet #f)) (option-ref opts 'server #f) #t) (dc-ecmd-assert 200 "notify" "fn:act" "on" "msg" "on")