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;
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) {
* 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);
}
}