by longjmp. */
volatile int nvecs = vecp;
int *nvecsp = (int *) &nvecs;
- int eai = 0;
/*
* Run the mimebuildproc (which is by default mhbuild) on the message
* with the addition of the "-auto" flag
*/
- /* Make sure that EAI support is set up before calling buildmimeproc. */
- for (i = 0; i < vecp; ++i) {
- if (strcasecmp (vec[i], "-eai") == 0) {
- eai = 1;
- } else if (strcasecmp (vec[i], "-noeai") == 0) {
- eai = 0;
- }
- }
-
switch (child = fork()) {
case NOTOK:
adios("fork", "unable to");
if (distfile)
buildvec[i++] = "-dist";
buildvec[i++] = (char *) drft;
- if (eai) {
- /* Add eai profile entry, to pass utf-8 setting to
- getname()/getadrx(). This doesn't seem to be necessary
- now, but it's here just in case the code changes
- later. */
- add_profile_entry("eai", "utf-8");
-
- /* Add mhbuild switch to enable UTF-8 headers. */
- buildvec[i++] = "-headerencoding";
- buildvec[i++] = "utf-8";
- }
buildvec[i] = NULL;
execvp(buildprogram, buildvec);
fprintf(stderr, "unable to exec ");
nparts = 1;
pos = start;
- while (fgets (buffer, sizeof(buffer) - 1, in)) {
+ while (fgets (buffer, sizeof buffer, in)) {
long len;
if ((pos += (len = strlen (buffer))) > CPERMSG) {
/* Only one part, nothing to split */
if (nparts == 1) {
free (cp);
- if (dp)
- free (dp);
+ mh_xfree(dp);
fclose (in);
return sendaux (vec, vecp, program, drft, st);
for (;;) {
long len;
- if (!fgets (buffer, sizeof(buffer) - 1, in)) {
+ if (!fgets (buffer, sizeof buffer, in)) {
if (partno == nparts)
break;
adios (NULL, "premature eof");
fclose (out);
if (!pushsw && verbsw) {
- printf ("\n");
+ putchar('\n');
fflush (stdout);
}
}
free (cp);
- if (dp)
- free (dp);
+ mh_xfree(dp);
fclose (in); /* close the draft */
return status;
advise (NULL,
"unable to fork, so doing annotations by hand...");
if (cwd == NULL)
- cwd = getcpy (pwd ());
+ cwd = mh_xstrdup(pwd ());
case OK:
/* block a few signals */
}
else
fd2 = NOTOK;
- for (ap = brkstring (cp = getcpy (cp), " ", NULL); *ap; ap++)
+ for (ap = brkstring (cp = mh_xstrdup(cp), " ", NULL); *ap; ap++)
m_convert (mp, *ap);
free (cp);
if (fd2 != NOTOK)
adios(NULL, "Unable to retrieve oauth profile entries: %s",
errbuf);
- vec[(*vecp)++] = getcpy("-authservice");
- vec[(*vecp)++] = getcpy(auth_svc);
- vec[(*vecp)++] = getcpy("-oauthcredfile");
- vec[(*vecp)++] = getcpy(mh_oauth_cred_fn(auth_svc));
- vec[(*vecp)++] = getcpy("-oauthclientid");
+ vec[(*vecp)++] = mh_xstrdup("-authservice");
+ vec[(*vecp)++] = mh_xstrdup(auth_svc);
+ vec[(*vecp)++] = mh_xstrdup("-oauthcredfile");
+ vec[(*vecp)++] = mh_xstrdup(mh_oauth_cred_fn(auth_svc));
+ vec[(*vecp)++] = mh_xstrdup("-oauthclientid");
vec[(*vecp)++] = getcpy(svc.client_id);
- vec[(*vecp)++] = getcpy("-oauthclientsecret");
+ vec[(*vecp)++] = mh_xstrdup("-oauthclientsecret");
vec[(*vecp)++] = getcpy(svc.client_secret);
- vec[(*vecp)++] = getcpy("-oauthauthendpoint");
+ vec[(*vecp)++] = mh_xstrdup("-oauthauthendpoint");
vec[(*vecp)++] = getcpy(svc.auth_endpoint);
- vec[(*vecp)++] = getcpy("-oauthredirect");
+ vec[(*vecp)++] = mh_xstrdup("-oauthredirect");
vec[(*vecp)++] = getcpy(svc.redirect_uri);
- vec[(*vecp)++] = getcpy("-oauthtokenendpoint");
+ vec[(*vecp)++] = mh_xstrdup("-oauthtokenendpoint");
vec[(*vecp)++] = getcpy(svc.token_endpoint);
- vec[(*vecp)++] = getcpy("-oauthscope");
+ vec[(*vecp)++] = mh_xstrdup("-oauthscope");
vec[(*vecp)++] = getcpy(svc.scope);
}
}
char *hostformat = "%(host{Envelope-From})";
if ((*addr = get_message_header_info (in, addrformat)) == NULL ||
- strlen (*addr) == 0) {
+ !**addr) {
addrformat = distfile == NULL ? "%(addr{Sender})" : "%(addr{Resent-Sender})";
hostformat = distfile == NULL ? "%(host{Sender})" : "%(host{Resent-Sender})";
fclose(in);
return OK;
- } else {
- *message = "unable to open";
- return NOTOK;
}
+
+ *message = "unable to open";
+ return NOTOK;
}
/* Trim trailing newline, if any. */
retval = rtrim(charstring_buffer_copy((buffer)));
charstring_free(buffer);
- if (strlen (retval) > 0) {
+ if (*retval)
return retval;
- } else {
- free (retval);
- return NULL;
- }
+
+ free(retval);
+ return NULL;
}
}
/* Use argsplit() to do the real work of splitting the args in the profile entry. */
- if (profile_entry && strlen(profile_entry) > 0) {
+ if (profile_entry && *profile_entry) {
int profile_vecp;
char *file;
char **profile_vec = argsplit(profile_entry, &file, &profile_vecp);