From: Baptiste Daroussin Date: Wed, 8 Dec 2021 09:31:59 +0000 (+0100) Subject: mlmmj-sub: stop forking mlmmj-unsub to unsubscribe people X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=52cc048002ac8aa9518b9aeb7d594215caf87bd5;p=thirdparty%2Fmlmmj.git mlmmj-sub: stop forking mlmmj-unsub to unsubscribe people --- diff --git a/src/mlmmj-sub.c b/src/mlmmj-sub.c index bebd6e16..d6b7ded8 100644 --- a/src/mlmmj-sub.c +++ b/src/mlmmj-sub.c @@ -572,9 +572,8 @@ static void subscribe_type(struct mlmmj_list *list, int main(int argc, char **argv) { struct mlmmj_list list; - char *mlmmjsend, *mlmmjunsub, *bindir; + char *mlmmjsend, *bindir; char *address = NULL, *modstr = NULL; - const char *flag = NULL; int opt, subconfirm = 0, confirmsub = 0, notifysub; int changeuid = 1, status, digest = 0, nomail = 0, both = 0; int nogensubscribed = 0; @@ -591,7 +590,6 @@ int main(int argc, char **argv) bindir = mydirname(argv[0]); myasprintf(&mlmmjsend, "%s/mlmmj-send", bindir); - myasprintf(&mlmmjunsub, "%s/mlmmj-unsub", bindir); myfree(bindir); while ((opt = getopt(argc, argv, "hbcCdfm:nsVUL:a:qrR")) != -1) { @@ -713,24 +711,7 @@ int main(int argc, char **argv) * missing version, so don't unsub. */ if (!(typesub == SUB_BOTH && subbed != SUB_NOMAIL)) { - childpid = fork(); - if(childpid < 0) { - log_error(LOG_ARGS, "Could not fork; " - "not unsubscribed from current version"); - } - if (childpid == 0) { - if (subbed == SUB_BOTH) { - if (typesub == SUB_NORMAL) flag = "-d"; - if (typesub == SUB_DIGEST) flag = "-N"; - } - execlp(mlmmjunsub, mlmmjunsub, - "-L", list.dir, "-q", - "-a", address, flag, - (char *)NULL); - log_error(LOG_ARGS, "execlp() of '%s' failed", - mlmmjunsub); - exit(EXIT_FAILURE); - } + unsubscribe(&list, address, subbed == SUB_BOTH ? typesub : SUB_ALL, SUB_ADMIN); } }