X-Git-Url: http://dolda2000.com/gitweb/?a=blobdiff_plain;f=lib%2Fguile%2Fautodl;h=af98f9ef879a5433b965dc4c75029e2ced3a79ce;hb=a8e6bb8183d91e91e4244d55cc24829db4ce307d;hp=632e7efc818cb54f6a9bfd8f6a6366ef67447986;hpb=53acfa815f80dfb087324da165546e60a4d27f8c;p=doldaconnect.git diff --git a/lib/guile/autodl b/lib/guile/autodl index 632e7ef..af98f9e 100755 --- a/lib/guile/autodl +++ b/lib/guile/autodl @@ -380,8 +380,8 @@ ) (define (autodl-main args) - (let ((dc-server #f) (done #f) (retval 0)) - (let ((getopt (make-getopt (cdr args) "whs:S:e:p:t:a:I:")) (arg #f)) + (let ((dc-server #f) (done #f) (retval 0) (filterexit "")) + (let ((getopt (make-getopt (cdr args) "whs:S:e:p:t:a:I:E:")) (arg #f)) (do ((arg (getopt) (getopt))) ((not (and (pair? arg) (char? (car arg)))) (set! args arg)) (cond ((eq? (car arg) #\h) (begin (display "usage: autodl [-s server] -S sessfile\n" (current-error-port)) @@ -409,6 +409,10 @@ (let ((c (assoc 'info-file session))) (if c (set-cdr! c (cdr arg)) (set! session (cons (cons 'info-file (cdr arg)) session))))) + ((eq? (car arg) #\E) + (let ((c (assoc 'estat-file session))) + (if c (set-cdr! c (cdr arg)) + (set! session (cons (cons 'estat-file (cdr arg)) session))))) ((eq? (car arg) #\e) (set! session (cons (cons 'sexpr (dc-lexsexpr (cdr arg))) session))) ((eq? (car arg) #\w) @@ -432,7 +436,7 @@ (lambda (key . args) (logf (string-append "could not connect to server: " (apply format #f (cadr args) (caddr args)))) (exit 2))) - (dc-ecmd-assert 200 "notify" "all" "on") + (dc-ecmd-assert 200 "notify" "trans:act" "on" "trans:prog" "on" "srch:act" "on") (for-each (lambda (sig) (sigaction sig (lambda (sig) (throw 'sig sig)))) (list SIGINT SIGTERM SIGHUP)) (catch 'sig (lambda () @@ -497,9 +501,10 @@ (let* ((ires (dc-intresp resp)) (tr (and ires (assoc (car ires) trans)))) (if tr (begin (if (eq? (cdr (assoc 'state (cdr tr))) 'done) - (begin (logf (string-append "transfer " (number->string (car ires)) " done")) + (begin (logf (string-append "transfer " (number->string (car ires)) " done (" (cadr ires) ")")) (set! trans (assq-remove! trans (car ires))) (set! done #t) + (set! filterexit (cadr ires)) (throw 'sig 0)) (begin (logf (string-append "transfer " (number->string (car ires)) " disappeared")) (set! trans (assq-remove! trans (car ires))))))))) @@ -558,6 +563,11 @@ ))) (lambda (key sig) (logf "forcing quit"))) + (if (assoc 'estat-file session) + (let ((op (open-output-file (cdr (assoc 'estat-file session))))) + (write filterexit op) + (newline op) + (close-port op))) (exit retval) ) )