Where s is known to be non-NULL.
groupflag = mn->m_ingrp;
if (mn->m_gname) {
- cp = add(mn->m_gname, NULL);
+ cp = mh_xstrdup(mn->m_gname);
}
if (reformat) {
if (suffix == NULL) {
if ((tmpfil = m_mktemp2(NULL, pfx_in, fd_ret, fp_ret))) {
- return add(tmpfil, NULL);
+ return mh_xstrdup(tmpfil);
}
return NULL;
}
/* skip over leading whitespace */
while (isspace ((unsigned char) *sp)) ++sp;
- dp = add (sp, NULL);
+ dp = mh_xstrdup(sp);
/* start at the end and zap trailing whitespace */
for (cp = dp + strlen (dp) - 1;
}
/* get copies of the buffers */
- np = add (name, NULL);
- vp = add (buf, NULL);
+ np = mh_xstrdup(name);
+ vp = mh_xstrdup(buf);
/* if necessary, get rest of field */
while (state == FLDPLUS) {
}
/* use a temp file to collect the plain text lines */
- ce->ce_file = add (cp, NULL);
+ ce->ce_file = mh_xstrdup(cp);
ce->ce_unlink = 1;
if (do_direct() && (buf[0] == '#' && buf[1] == '<')) {
continue;
if (!*cp)
adios (NULL, "empty pipe command for #%s directive", ci->ci_type);
- cp = add (cp, NULL);
+ cp = mh_xstrdup(cp);
free (ci->ci_magic);
ci->ci_magic = cp;
} else {
content_error (NULL, ct, "don't know how to compose content");
done (1);
}
- ci->ci_magic = add (cp, NULL);
+ ci->ci_magic = mh_xstrdup(cp);
return OK;
}
p->c_subtype = MESSAGE_RFC822;
snprintf (buffer, sizeof(buffer), "%s/%d", mp->foldpath, msgnum);
- pe->ce_file = add (buffer, NULL);
+ pe->ce_file = mh_xstrdup(buffer);
if (listsw && stat (pe->ce_file, &st) != NOTOK)
p->c_end = (long) st.st_size;
msgnum = mp->lowsel;
snprintf (buffer, sizeof(buffer), "%s/%d", mp->foldpath, msgnum);
- ce->ce_file = add (buffer, NULL);
+ ce->ce_file = mh_xstrdup(buffer);
if (listsw && stat (ce->ce_file, &st) != NOTOK)
ct->c_end = (long) st.st_size;
}
CT p = part->mp_part;
sprintf (pp, "%d", partnum);
- p->c_partno = add (partnam, NULL);
+ p->c_partno = mh_xstrdup(partnam);
if (compose_content (p, verbose) == NOTOK)
return NOTOK;
}
adios("mhbuildsbr", "unable to create temporary file in %s",
get_temp_dir());
}
- ce->ce_file = add (tfile, NULL);
+ ce->ce_file = mh_xstrdup(tfile);
ce->ce_unlink = 1;
xstdout = 0;
if (state != FLDPLUS)
cp = buf;
else {
- cp = add (buf, NULL);
+ cp = mh_xstrdup(buf);
while (state == FLDPLUS) {
bufsz = sizeof buf;
state = m_getfld (&gstate, name, buf, &bufsz, fp);
case INFILESW:
if (! (cp = *argp++) || (*cp == '-' && cp[1]))
adios (NULL, "missing argument to %s", argp[-2]);
- infile = *cp == '-' ? add (cp, NULL) : path (cp, TFILE);
+ infile = *cp == '-' ? mh_xstrdup(cp) : path (cp, TFILE);
continue;
case OUTFILESW:
if (! (cp = *argp++) || (*cp == '-' && cp[1]))
adios (NULL, "missing argument to %s", argp[-2]);
- outfile = *cp == '-' ? add (cp, NULL) : path (cp, TFILE);
+ outfile = *cp == '-' ? mh_xstrdup(cp) : path (cp, TFILE);
continue;
case CONTENTTYPESW:
get_temp_dir());
return NULL;
}
- file = add (tfile, NULL);
+ file = mh_xstrdup(tfile);
while ((n = fread(buffer, 1, sizeof(buffer), stdin)) > 0) {
if (fwrite(buffer, 1, n, fp) != n) {
compnum++;
/* get copies of the buffers */
- np = add (name, NULL);
- vp = add (buf, NULL);
+ np = mh_xstrdup(name);
+ vp = mh_xstrdup(buf);
/* if necessary, get rest of field */
while (state == FLDPLUS) {
for (dp = cp; istoken (*dp); dp++)
continue;
c = *dp, *dp = '\0';
- ci->ci_type = add (cp, NULL); /* store content type */
+ ci->ci_type = mh_xstrdup(cp); /* store content type */
*dp = c, cp = dp;
if (!*ci->ci_type) {
if (*cp != '/') {
if (!magic)
- ci->ci_subtype = add ("", NULL);
+ ci->ci_subtype = mh_xstrdup("");
goto magic_skip;
}
for (dp = cp; istoken (*dp); dp++)
continue;
c = *dp, *dp = '\0';
- ci->ci_subtype = add (cp, NULL); /* store the content subtype */
+ ci->ci_subtype = mh_xstrdup(cp); /* store the content subtype */
*dp = c, cp = dp;
if (!*ci->ci_subtype) {
*/
if (*cp) {
if (magic) {
- ci->ci_magic = add (cp, NULL);
+ ci->ci_magic = mh_xstrdup(cp);
/* If there is a Content-Disposition header and it doesn't
have a *filename=, extract it from the magic contents.
for (dp = cp; istoken (*dp); dp++)
continue;
c = *dp, *dp = '\0';
- ct->c_dispo_type = add (cp, NULL); /* store disposition type */
+ ct->c_dispo_type = mh_xstrdup(cp); /* store disposition type */
*dp = c, cp = dp;
if (*cp == '(' && get_comment (ct->c_file, DISPO_FIELD, &cp, NULL) == NOTOK)
*commentp = concat (dp, " ", buffer, NULL);
free (dp);
} else {
- *commentp = add (buffer, NULL);
+ *commentp = mh_xstrdup(buffer);
}
}
ct->c_encoding != CE_8BIT && ct->c_encoding != CE_BINARY) {
/* Copy the Content-Transfer-Encoding header field body so we can
remove any trailing whitespace and leading blanks from it. */
- char *cte = add (ct->c_celine ? ct->c_celine : "(null)", NULL);
+ char *cte = mh_xstrdup(ct->c_celine ? ct->c_celine : "(null)");
bp = cte + strlen (cte) - 1;
while (bp >= cte && isspace ((unsigned char) *bp)) *bp-- = '\0';
p = part->mp_part;
sprintf (pp, "%d", partnum);
- p->c_partno = add (partnam, NULL);
+ p->c_partno = mh_xstrdup(partnam);
/* initialize the content of the subparts */
if (p->c_ctinitfnx && (*p->c_ctinitfnx) (p) == NOTOK) {
if (*file == NULL) {
ce->ce_unlink = 1;
} else {
- ce->ce_file = add (*file, NULL);
+ ce->ce_file = mh_xstrdup(*file);
ce->ce_unlink = 0;
}
adios(NULL, "unable to create temporary file in %s",
get_temp_dir());
}
- ce->ce_file = add (tempfile, NULL);
+ ce->ce_file = mh_xstrdup(tempfile);
}
if ((ce->ce_fp = fopen (ce->ce_file, "w+")) == NULL) {
if (*file == NULL) {
ce->ce_unlink = 1;
} else {
- ce->ce_file = add (*file, NULL);
+ ce->ce_file = mh_xstrdup(*file);
ce->ce_unlink = 0;
}
adios(NULL, "unable to create temporary file in %s",
get_temp_dir());
}
- ce->ce_file = add (tempfile, NULL);
+ ce->ce_file = mh_xstrdup(tempfile);
}
if ((ce->ce_fp = fopen (ce->ce_file, "w+")) == NULL) {
if (*file == NULL) {
ce->ce_unlink = 1;
} else {
- ce->ce_file = add (*file, NULL);
+ ce->ce_file = mh_xstrdup(*file);
ce->ce_unlink = 0;
}
adios(NULL, "unable to create temporary file in %s",
get_temp_dir());
}
- ce->ce_file = add (tempfile, NULL);
+ ce->ce_file = mh_xstrdup(tempfile);
}
if ((ce->ce_fp = fopen (ce->ce_file, "w+")) == NULL) {
}
if (*file)
- ce->ce_file = add (*file, NULL);
+ ce->ce_file = mh_xstrdup(*file);
else if (caching)
- ce->ce_file = add (cachefile, NULL);
+ ce->ce_file = mh_xstrdup(cachefile);
else {
char *tempfile;
if ((tempfile = m_mktemp2(NULL, invo_name, NULL, NULL)) == NULL) {
adios(NULL, "unable to create temporary file in %s",
get_temp_dir());
}
- ce->ce_file = add (tempfile, NULL);
+ ce->ce_file = mh_xstrdup(tempfile);
}
if ((ce->ce_fp = fopen (ce->ce_file, "w+")) == NULL) {
adios(NULL, "unable to create temporary file in %s",
get_temp_dir());
}
- ce->ce_file = add (tempfile, NULL);
+ ce->ce_file = mh_xstrdup(tempfile);
ce->ce_unlink = 1;
} else {
- ce->ce_file = add (*file, NULL);
+ ce->ce_file = mh_xstrdup(*file);
ce->ce_unlink = 0;
}
/* showproc is for mhshow and mhstore, though mhlist -debug
* prints it, too. */
mh_xfree(ct->c_showproc);
- ct->c_showproc = add ("true", NULL);
+ ct->c_showproc = mh_xstrdup("true");
fseek (ce->ce_fp, 0L, SEEK_SET);
*file = ce->ce_file;
}
if (*file)
- ce->ce_file = add(*file, NULL);
+ ce->ce_file = mh_xstrdup(*file);
else if (caching)
- ce->ce_file = add(cachefile, NULL);
+ ce->ce_file = mh_xstrdup(cachefile);
else {
char *tempfile;
if ((tempfile = m_mktemp2(NULL, invo_name, NULL, NULL)) == NULL) {
adios(NULL, "unable to create temporary file in %s",
get_temp_dir());
}
- ce->ce_file = add (tempfile, NULL);
+ ce->ce_file = mh_xstrdup(tempfile);
}
if ((ce->ce_fp = fopen(ce->ce_file, "w+")) == NULL) {
} else
snprintf (buffer, sizeof(buffer), "%%l%s %%F", progsw ? progsw :
moreproc && *moreproc ? moreproc : DEFAULT_PAGER);
- cp = (ct->c_showproc = add (buffer, NULL));
+ cp = (ct->c_showproc = mh_xstrdup(buffer));
return show_content_aux (ct, alternate, cp, NULL, fmt);
}
/* default method for message/rfc822 */
if (ct->c_subtype == MESSAGE_RFC822) {
- cp = (ct->c_showproc = add ("%pshow -file %F", NULL));
+ cp = (ct->c_showproc = mh_xstrdup("%pshow -file %F"));
return show_content_aux (ct, alternate, cp, NULL, fmt);
}
adios (NULL, "unable to create temporary file in %s",
get_temp_dir());
}
- dest = add (tempfile, NULL);
+ dest = mh_xstrdup(tempfile);
if (ct->c_cefile.ce_file) {
file = &ct->c_cefile.ce_file;
if ((ct = parse_mime (file))) {
*ctp++ = ct;
if (outfile) {
- ct->c_storage = add (outfile, NULL);
+ ct->c_storage = mh_xstrdup(outfile);
}
}
} else {
if ((ct = parse_mime (msgnam))) {
*ctp++ = ct;
if (outfile) {
- ct->c_storage = add (outfile, NULL);
+ ct->c_storage = mh_xstrdup(outfile);
}
}
}
/* Support mhstore -outfile. The MIME parser doesn't
load c_storage, so we know that p->c_storage is
NULL here. */
- p->c_storage = add (ct->c_storage, NULL);
+ p->c_storage = mh_xstrdup(ct->c_storage);
}
result = store_switch (p, info);
&& *cp != '!'
&& !strchr (cp, '%')) {
if (!ct->c_storeproc)
- ct->c_storeproc = add (cp, NULL);
+ ct->c_storeproc = mh_xstrdup(cp);
if (!p->c_storeproc)
- p->c_storeproc = add (cp, NULL);
+ p->c_storeproc = mh_xstrdup(cp);
}
}
if (ct->c_storage) {
/* Support mhstore -outfile. The MIME parser doesn't load
c_storage, so we know that p->c_storage is NULL here. */
- p->c_storage = add (ct->c_storage, NULL);
+ p->c_storage = mh_xstrdup(ct->c_storage);
}
result = store_switch (p, info);
/* record the folder name */
if (p->c_folder) {
- ct->c_folder = add (p->c_folder, NULL);
+ ct->c_folder = mh_xstrdup(p->c_folder);
}
}
goto got_filename;
adios(NULL, "unable to create temporary file in %s",
get_temp_dir());
}
- ct->c_storage = add (tmpfilenam, NULL);
+ ct->c_storage = mh_xstrdup(tmpfilenam);
/* Get the folder name */
if (cp[1])
return show_content_aux (ct, 0, buffer + 1, info->dir, NULL);
/* record the filename */
- if ((ct->c_storage = clobber_check (add (buffer, NULL), info)) ==
+ if ((ct->c_storage = clobber_check (mh_xstrdup(buffer), info)) ==
NULL) {
return NOTOK;
}
&& *cp != '|'
&& *cp != '!'
&& !strchr (cp, '%')) {
- ct->c_storeproc = add (cp, NULL);
+ ct->c_storeproc = mh_xstrdup(cp);
free(cp);
return;
}
&& *cp != '|'
&& *cp != '!'
&& !strchr (cp, '%')) {
- ct->c_storeproc = add (cp, NULL);
+ ct->c_storeproc = mh_xstrdup(cp);
}
mh_xfree(cp);
/* Save cwd for possible use in loop below. */
char *slash;
- cwd = add (original_file, NULL);
+ cwd = mh_xstrdup(original_file);
slash = strrchr (cwd, '/');
if (slash) {
if (buf[0] == '/') {
/* Full path, use it. */
- file = add (buf, NULL);
+ file = mh_xstrdup(buf);
} else {
/* Relative path. */
- file = cwd ? concat (cwd, "/", buf, NULL) : add (buf, NULL);
+ file = cwd ? concat (cwd, "/", buf, NULL) : mh_xstrdup(buf);
}
check_again = 1;
case FLD:
case FLDPLUS:
mh_xfree(bp);
- bp = add (buf, NULL);
+ bp = mh_xstrdup(buf);
while (state == FLDPLUS) {
bufsz = sizeof buf;
state = m_getfld (&gstate, name, buf, &bufsz, fp);
case FLD:
case FLDPLUS:
compnum++;
- cp = add (buf, NULL);
+ cp = mh_xstrdup(buf);
while (state == FLDPLUS) {
bufsz = sizeof buf;
state = m_getfld (&gstate, name, buf, &bufsz, in);
int passno;
char c;
- cp = add (buf, NULL);
+ cp = mh_xstrdup(buf);
while (state == FLDPLUS) {
bufsz = sizeof buf;
state = m_getfld (&gstate, name, buf, &bufsz, fp);
* Check Content-Transfer-Encoding field
*/
if (!strcasecmp (name, ENCODING_FIELD)) {
- cp = add (buf, NULL);
+ cp = mh_xstrdup(buf);
while (state == FLDPLUS) {
bufsz = sizeof buf;
state = m_getfld (&gstate, name, buf, &bufsz, fp);
switch (state = m_getfld (&gstate, name, field, &fieldsz, in)) {
case FLD:
case FLDPLUS:
- lp = add (field, NULL);
+ lp = mh_xstrdup(field);
while (state == FLDPLUS) {
fieldsz = sizeof field;
state = m_getfld (&gstate, name, field, &fieldsz, in);
continue;
}
- cp = add (buf, NULL);
+ cp = mh_xstrdup(buf);
while (state == FLDPLUS) {
bufsz = sizeof buf;
state = m_getfld (&gstate, name, buf, &bufsz, in);