]> git.ipfire.org Git - thirdparty/mlmmj.git/commitdiff
mlmmj-sub: stop forking mlmmj-unsub to unsubscribe people
authorBaptiste Daroussin <bapt@FreeBSD.org>
Wed, 8 Dec 2021 09:31:59 +0000 (10:31 +0100)
committerBaptiste Daroussin <bapt@FreeBSD.org>
Wed, 8 Dec 2021 09:32:56 +0000 (10:32 +0100)
src/mlmmj-sub.c

index bebd6e160ade8bdb17609a1068140dc77b14cf0d..d6b7ded8519fa730c84cafd4445c09402895a474 100644 (file)
@@ -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);
                }
        }