diff --git a/src/mailman.scm b/src/mailman.scm index cbb5c62..6854afb 100644 --- a/src/mailman.scm +++ b/src/mailman.scm @@ -111,7 +111,8 @@ (define (find-mailman-list lsts name) (assoc name lsts)) - (define-mailman-proc add-email-to-mailman-list add-email-to-mailman2-list) + (define-mailman-proc add-email-to-mailman-list + add-email-to-mailman2-list add-email-to-mailman3-list) (define-mailman-proc remove-email-from-mailman-list remove-email-from-mailman2-list) ;; Ensures given email is in given ML diff --git a/src/mailman3.scm b/src/mailman3.scm index 23986ee..7c0ffe3 100644 --- a/src/mailman3.scm +++ b/src/mailman3.scm @@ -30,6 +30,8 @@ ( list-mailman3-lists list-mailman3-list-members + + add-email-to-mailman3-list ) (import scheme @@ -41,17 +43,30 @@ util-io util-list) + ;; Just a convenient converter + (define (mailman3:cmd+args0) + (let ((cmd+args0 (string-split (*mailman3-bin*) " "))) + (values (car cmd+args0) + (cdr cmd+args0)))) + ;; Runs the mailman3 binary with any arguments and returns the lines ;; produced on stdout (define (get-mailman3-output-lines . args1) - (let* ((cmd+args0 (string-split (*mailman3-bin*) " ")) - (cmd (car cmd+args0)) - (args0 (cdr cmd+args0))) + (let-values (((cmd args0) (mailman3:cmd+args0))) (apply get-process-output-lines cmd (append args0 args1)))) + ;; Sends all lines to the process + (define (mailman3-send/recv args1 . lines) + (let-values (((cmd args0) (mailman3:cmd+args0))) + (apply + process-send/recv + cmd + (append args0 args1) + lines))) + ;; Returns the list of available lists (define (list-mailman3-lists) (filter @@ -71,4 +86,16 @@ "-e") string-ci