X-Git-Url: http://dolda2000.com/gitweb/?a=blobdiff_plain;f=lib%2Fguile%2Fautodl;h=62ccbf778ce9b5d2eae2af09871f80bb14417773;hb=00ea20394f7910ae77782aab32d9bb975e6233fe;hp=c8ce115e00ae8b3b039ea6434d63dbae59e8cc3d;hpb=aa82fda048bf105293e2bb39afc6bf337bb433de;p=doldaconnect.git diff --git a/lib/guile/autodl b/lib/guile/autodl index c8ce115..62ccbf7 100755 --- a/lib/guile/autodl +++ b/lib/guile/autodl @@ -122,6 +122,10 @@ (if tag (set! args (append args (list "tag" (cdr tag)))))) (let ((uarg (assoc 'uarg session))) (if uarg (set! args (append args (list "user" (cdr uarg)))))) + (let ((xargs (assoc 'xargs session))) + (if xargs (for-each (lambda (o) + (set! args (append args (list (car o) (cdr o))))) + (cdr xargs)))) (set! resp (apply dc-ecmd-assert 200 args))) (let ((id (car (dc-intresp resp)))) (set! trans @@ -205,16 +209,15 @@ (define (write-info-file) (if (assoc 'info-file session) (let ((op (open-output-file (cdr (assoc 'info-file session))))) - (write (list (cons 'numdl (length trans)) - (cons 'lastdl lastdl) - (cons 'availsr info-numavail) - (cons 'realsr info-numreal) - (cons 'totalsr info-numtotal) - (cons 'lastsrch lastsearch) - (cons 'srcheta info-searcheta) - (cons 'srchmode (cdr (assoc 'search-mode session)))) - op) - (newline op) + (pretty-print (list (cons 'numdl (length trans)) + (cons 'lastdl lastdl) + (cons 'availsr info-numavail) + (cons 'realsr info-numreal) + (cons 'totalsr info-numtotal) + (cons 'lastsrch lastsearch) + (cons 'srcheta info-searcheta) + (cons 'srchmode (cdr (assoc 'search-mode session)))) + op) (close-port op)))) (define (parseresults) @@ -381,7 +384,7 @@ (define (autodl-main args) (let ((dc-server #f) (done #f) (retval 0) (filterexit "")) - (let ((getopt (make-getopt (cdr args) "whs:S:e:p:t:a:I:")) (arg #f)) + (let ((getopt (make-getopt (cdr args) "whs:S:e:p:t:a:I:E:x:")) (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)) @@ -417,6 +420,11 @@ (set! session (cons (cons 'sexpr (dc-lexsexpr (cdr arg))) session))) ((eq? (car arg) #\w) (set! session (cons '(search-mode . wait) session))) + ((eq? (car arg) #\x) + (let* ((c (assoc 'xargs session)) (p (string-index (cdr arg) #\=)) + (recons (cons (substring (cdr arg) 0 p) (substring (cdr arg) (1+ p))))) + (if c (set-cdr! c (cons recons (cdr c))) + (set! session (cons (cons 'xargs (list recons)) session))))) ) ) ) @@ -501,10 +509,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 tr)) + (set! filterexit (cadr ires)) (throw 'sig 0)) (begin (logf (string-append "transfer " (number->string (car ires)) " disappeared")) (set! trans (assq-remove! trans (car ires))))))))) @@ -565,7 +573,7 @@ (logf "forcing quit"))) (if (assoc 'estat-file session) (let ((op (open-output-file (cdr (assoc 'estat-file session))))) - (write filterexit op) + (display filterexit op) (newline op) (close-port op))) (exit retval)