]> git.ipfire.org Git - thirdparty/mlmmj.git/commitdiff
mlmmj-*sub: eliminate most concatstr in favor of standard C function
authorBaptiste Daroussin <bapt@FreeBSD.org>
Thu, 28 Oct 2021 12:25:53 +0000 (14:25 +0200)
committerBaptiste Daroussin <bapt@FreeBSD.org>
Thu, 28 Oct 2021 12:25:53 +0000 (14:25 +0200)
src/mlmmj-sub.c
src/mlmmj-unsub.c

index 2d083319a626ba0f5b684eca22c69804472ad306..828b8a25de62b963a5138527381f89cba6f760af 100644 (file)
@@ -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) {
index 8f35f7d7f2357e7d85d8ddfb32769e31034e6c8c..cbc6e1b016aba74ec1873c947db6998c74379320 100644 (file)
@@ -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);
        }