From: Baptiste Daroussin Date: Thu, 28 Oct 2021 12:25:53 +0000 (+0200) Subject: mlmmj-*sub: eliminate most concatstr in favor of standard C function X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2dd4cb93b1bd9c7dfd70562b2c5781f8b6e2e629;p=thirdparty%2Fmlmmj.git mlmmj-*sub: eliminate most concatstr in favor of standard C function --- diff --git a/src/mlmmj-sub.c b/src/mlmmj-sub.c index 2d083319..828b8a25 100644 --- a/src/mlmmj-sub.c +++ b/src/mlmmj-sub.c @@ -59,6 +59,7 @@ static void moderate_sub(struct mlmmj_list *list, const char *subaddr, char *a = NULL, *queuefilename, *from, *str; char *modfilename, *mods, *to, *replyto, *moderators = NULL; char *cookie, *obstruct; + const char *modetype; struct strlist *submods; pid_t childpid, pid; @@ -66,23 +67,24 @@ static void moderate_sub(struct mlmmj_list *list, const char *subaddr, switch(typesub) { default: case SUB_NORMAL: - str = concatstr(4, subaddr, "\n", "SUB_NORMAL", "\n"); + modetype = "SUB_NORMAL"; break; case SUB_DIGEST: - str = concatstr(4, subaddr, "\n", "SUB_DIGEST", "\n"); + modetype = "SUB_DIGEST"; break; case SUB_NOMAIL: - str = concatstr(4, subaddr, "\n", "SUB_NOMAIL", "\n"); + modetype = "SUB_NOMAIL"; break; case SUB_BOTH: - str = concatstr(4, subaddr, "\n", "SUB_BOTH", "\n"); + modetype = "SUB_BOTH"; break; } + myasprintf(&str, "%s\n%s\n", subaddr, modetype); for (;;) { cookie = random_str(); - modfilename = concatstr(3, list->dir, "/moderation/subscribe", - cookie); + myasprintf(&modfilename, "%s/moderation/subscribe/%s", + list->dir, cookie); fd = open(modfilename, O_RDWR|O_CREAT|O_EXCL, S_IRUSR|S_IWUSR); if (fd < 0) { if (errno == EEXIST) { @@ -108,7 +110,8 @@ static void moderate_sub(struct mlmmj_list *list, const char *subaddr, myfree(str); submods = ctrlvalues(list->dir, "submod"); - mods = concatstr(2, list->dir, "/control/submod"); + myasprintf(&mods, "%s/control/submod", list->dir); + /* check to see if there's adresses in the submod control file */ for(i = 0; i < submods->count; i++) a = strchr(submods->strs[i], '@'); @@ -122,15 +125,15 @@ static void moderate_sub(struct mlmmj_list *list, const char *subaddr, myfree(submods); submods = ctrlvalues(list->dir, "owner"); myfree(mods); - mods = concatstr(2, list->dir, "/control/owner"); + myasprintf(&mods, "%s/control/owner", list->dir); } - from = concatstr(4, list->name, list->delim, "owner@", list->fqdn); - to = concatstr(3, list->name, "-moderators@", list->fqdn); - replyto = concatstr(6, list->name, list->delim, "permit-", cookie, - "@", list->fqdn); - obstruct = concatstr(6, list->name, list->delim, "obstruct-", cookie, - "@", list->fqdn); + myasprintf(&from, "%s%sowner@%s", list->name, list->delim, list->fqdn); + myasprintf(&to, "%s-moderators@%s", list->name, list->fqdn); + myasprintf(&replyto, "%s%spermit-%s@%s", list->name, list->delim, + cookie, list->fqdn); + myasprintf(&obstruct, "%s%sobstruct-%s@%s", list->name, list->delim, + cookie, list->fqdn); myfree(cookie); for(i = 0; i < submods->count; i++) { printf("%s", submods->strs[i]); @@ -193,7 +196,8 @@ static void moderate_sub(struct mlmmj_list *list, const char *subaddr, /* send mail to requester that the list is submod'ed */ - from = concatstr(4, list->name, list->delim, "bounces-help@", list->fqdn); + myasprintf(&from, "%s%sbounces-help@%s", list->name, list->delim, + list->fqdn); txt = open_text(list->dir, "wait", "sub", @@ -228,7 +232,7 @@ static void getaddrandtype(const char *listdir, const char *modstr, if (strncmp(modstr, "subscribe", 9) == 0) modstr += 9; - modfilename = concatstr(3, listdir, "/moderation/subscribe", modstr); + myasprintf(&modfilename, "%s/moderation/subscribe/%s", listdir, modstr); fd = open(modfilename, O_RDONLY); if(fd < 0) { @@ -284,7 +288,8 @@ static void confirm_sub(struct mlmmj_list *list, const char *subaddr, text *txt; char *queuefilename, *fromaddr, *listtext; - fromaddr = concatstr(4, list->name, list->delim, "bounces-help@", list->fqdn); + myasprintf(&fromaddr, "%s%sbounces-help@%s", list->name, list->delim, + list->fqdn); switch(typesub) { default: @@ -330,10 +335,10 @@ static void notify_sub(struct mlmmj_list *list, const char *subaddr, text *txt; char *queuefilename = NULL, *listtext = NULL; - fromaddr = concatstr(4, list->name, list->delim, - "bounces-help@", list->fqdn); - tostr = concatstr(4, list->name, list->delim, "owner@", - list->fqdn); + myasprintf(&fromaddr, "%s%sbounces-help@%s", list->name, list->delim, + list->fqdn); + myasprintf(&tostr, "%s%sowner@%s", list->name, list->delim, + list->fqdn); switch(typesub) { default: @@ -387,8 +392,8 @@ static void generate_subconfirm(struct mlmmj_list *list, const char *subaddr, myfree(confirmfilename); myfree(randomstr); randomstr = random_plus_addr(subaddr); - confirmfilename = concatstr(3, list->dir, "/subconf/", - randomstr); + myasprintf(&confirmfilename, "%s/subconf/%s", list->dir, + randomstr); subconffd = open(confirmfilename, O_RDWR|O_CREAT|O_EXCL, S_IRUSR|S_IWUSR); @@ -413,8 +418,8 @@ static void generate_subconfirm(struct mlmmj_list *list, const char *subaddr, close(subconffd); - fromaddr = concatstr(6, list->name, list->delim, "bounces-confsub-", - randomstr, "@", list->fqdn); + myasprintf(&fromaddr, "%s%sbounces-confsub-%s@%s", list->name, + list->delim, randomstr, list->fqdn); switch(typesub) { default: @@ -437,8 +442,8 @@ static void generate_subconfirm(struct mlmmj_list *list, const char *subaddr, break; } - confirmaddr = concatstr(6, list->name, list->delim, tmpstr, randomstr, "@", - list->fqdn); + myasprintf(&confirmaddr, "%s%s%s%s@%s", list->name, list->delim, tmpstr, + randomstr, list->fqdn); myfree(randomstr); myfree(tmpstr); @@ -494,8 +499,8 @@ static void generate_subscribed(struct mlmmj_list *list, const char *subaddr, text *txt; char *queuefilename, *fromaddr; - fromaddr = concatstr(4, list->name, list->delim, - "bounces-help@", list->fqdn); + myasprintf(&fromaddr, "%s%sbounces-help@%s", list->name, list->delim, + list->fqdn); txt = open_text(list->dir, "deny", "sub", "subbed", subtype_strs[typesub], @@ -592,8 +597,8 @@ int main(int argc, char **argv) log_set_name(argv[0]); bindir = mydirname(argv[0]); - mlmmjsend = concatstr(2, bindir, "/mlmmj-send"); - mlmmjunsub = concatstr(2, bindir, "/mlmmj-unsub"); + myasprintf(&mlmmjsend, "%s/mlmmj-send", bindir); + myasprintf(&mlmmjunsub, "%s/mlmmj-unsub", bindir); myfree(bindir); while ((opt = getopt(argc, argv, "hbcCdfm:nsVUL:a:qrR")) != -1) { diff --git a/src/mlmmj-unsub.c b/src/mlmmj-unsub.c index 8f35f7d7..cbc6e1b0 100644 --- a/src/mlmmj-unsub.c +++ b/src/mlmmj-unsub.c @@ -54,7 +54,7 @@ static void confirm_unsub(struct mlmmj_list *list, const char *subaddr, text *txt; char *queuefilename, *fromaddr, *listtext; - fromaddr = concatstr(4, list->name, list->delim, "bounces-help@", list->fqdn); + myasprintf(&fromaddr, "%s%sbounces-help@%s", list->name, list->delim, list->fqdn); switch(typesub) { default: @@ -98,9 +98,9 @@ static void notify_unsub(struct mlmmj_list *list, const char *subaddr, text *txt; char *queuefilename = NULL, *listtext; - fromaddr = concatstr(4, list->name, list->delim, - "bounces-help@", list->fqdn); - tostr = concatstr(4, list->name, list->delim, "owner@", list->fqdn); + myasprintf(&fromaddr, "%s%sbounces-help@%s", list->name, list->delim, + list->fqdn); + myasprintf(&tostr, "%s%sowner@%s", list->name, list->delim, list->fqdn); switch(typesub) { default: @@ -152,9 +152,7 @@ static void generate_unsubconfirm(struct mlmmj_list *list, const char *subaddr, myfree(confirmfilename); myfree(randomstr); randomstr = random_plus_addr(subaddr); - confirmfilename = concatstr(3, list->dir, "/unsubconf/", - randomstr); - + myasprintf(&confirmfilename, "%s/ubsubconf/%s", list->dir, randomstr); subconffd = open(confirmfilename, O_RDWR|O_CREAT|O_EXLOCK, S_IRUSR|S_IWUSR); @@ -178,8 +176,8 @@ static void generate_unsubconfirm(struct mlmmj_list *list, const char *subaddr, close(subconffd); - fromaddr = concatstr(6, list->name, list->delim, "bounces-confunsub-", - randomstr, "@", list->fqdn); + myasprintf(&fromaddr, "%s%sbounces-confunsub-%s@%s", list->name, + list->delim, randomstr, list->fqdn); switch(typesub) { default: @@ -197,8 +195,8 @@ static void generate_unsubconfirm(struct mlmmj_list *list, const char *subaddr, break; } - confirmaddr = concatstr(6, list->name, list->delim, tmpstr, randomstr, "@", - list->fqdn); + myasprintf(&confirmaddr, "%s%s%s%s@%s", list->name, list->delim, tmpstr, + randomstr, list->fqdn); myfree(randomstr); myfree(tmpstr); @@ -295,7 +293,7 @@ static void generate_notsubscribed(struct mlmmj_list *list, const char *subaddr, text *txt; char *queuefilename, *fromaddr; - fromaddr = concatstr(4, list->name, list->delim, "bounces-help@", list->fqdn); + myasprintf(&fromaddr, "%s%sbounes-help@%s", list->name, list->delim, list->fqdn); txt = open_text(list->dir, "deny", "unsub", "unsubbed", subtype_strs[typesub], @@ -447,7 +445,7 @@ int main(int argc, char **argv) log_set_name(argv[0]); bindir = mydirname(argv[0]); - mlmmjsend = concatstr(2, bindir, "/mlmmj-send"); + myasprintf(&mlmmjsend, "%s/mlmmj-send", bindir); myfree(bindir); while ((opt = getopt(argc, argv, "hcCdenNVUL:a:sbqrR")) != -1) { @@ -573,7 +571,7 @@ int main(int argc, char **argv) subdir = "/nomailsubs.d/"; break; } - subddirname = concatstr(2, list.dir, subdir); + myasprintf(&subddirname, "%s%s", list.dir, subdir); subbed = is_subbed_in(subddirname, address); myfree(subddirname); }