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;
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) {
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], '@');
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]);
/* 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",
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) {
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:
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:
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);
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:
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);
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],
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) {
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:
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:
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);
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:
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);
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],
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) {
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);
}