char *m_maildir (char *);
char *m_mailpath (char *);
char *m_name (int);
-int m_putenv (char *, char *);
int m_rand (unsigned char *, size_t);
char *m_mktemp(const char *, int *, FILE **);
char *m_mktemp2(const char *, const char *, int *, FILE **);
/*
* prototypes
*/
-int m_putenv (char *, char *);
int unputenv (char *);
static int nvmatch (char *, char *);
/* FIXME: These functions leak memory. No easy fix since they might not
* be malloc'd. Switch to setenv(3) and unsetenv(3). */
-int
-m_putenv (char *name, char *value)
-{
- int i;
- char **ep, **nep, *cp;
-
- cp = concat(name, "=", value, NULL);
-
- for (ep = environ, i = 0; *ep; ep++, i++)
- if (nvmatch (name, *ep)) {
- *ep = cp;
- return 0;
- }
-
- nep = (char **) mh_xmalloc ((size_t) ((i + 2) * sizeof(*nep)));
-
- for (ep = environ, i = 0; *ep; nep[i++] = *ep++)
- continue;
- nep[i++] = cp;
- nep[i] = NULL;
- environ = nep;
- return 0;
-}
-
-
int
unputenv (char *name)
{
if ((cp = getenv ("SIGNATURE")) == NULL || *cp == 0)
if ((cp = context_find ("signature")) && *cp)
- m_putenv ("SIGNATURE", cp);
+ setenv("SIGNATURE", cp, 1);
for (msgnum = 0; msgnum < msgp; msgnum++)
if (stat (msgs[msgnum], &st) == NOTOK)
}
if (folder && !draftsw && !file)
- m_putenv ("mhfolder", folder);
+ setenv("mhfolder", folder, 1);
if (strcmp (r1bindex (proc, '/'), "cat") == 0) {
setpgid ((pid_t) 0, getpid ()); /* put in own process group */
*environ = NULL;
- m_putenv ("USER", pw->pw_name);
- m_putenv ("HOME", pw->pw_dir);
- m_putenv ("SHELL", pw->pw_shell);
+ setenv("USER", pw->pw_name, 1);
+ setenv("HOME", pw->pw_dir, 1);
+ setenv("SHELL", pw->pw_shell, 1);
execvp (pgm, vec);
_exit (-1);
vec[vecp++] = r1bindex (whatnowproc, '/');
vec[vecp] = NULL;
- m_putenv ("mhdraft", file);
+ setenv("mhdraft", file, 1);
if (mp)
- m_putenv ("mhfolder", mp->foldpath);
+ setenv("mhfolder", mp->foldpath, 1);
else
unputenv ("mhfolder");
if (altmsg) {
if (mp == NULL || *altmsg == '/' || cwd == NULL)
- m_putenv ("mhaltmsg", altmsg);
+ setenv("mhaltmsg", altmsg, 1);
else {
snprintf (buffer, sizeof(buffer), "%s/%s", mp->foldpath, altmsg);
- m_putenv ("mhaltmsg", buffer);
+ setenv("mhaltmsg", buffer, 1);
}
} else {
unputenv ("mhaltmsg");
}
if ((bp = getenv ("mhaltmsg")))/* XXX */
- m_putenv ("editalt", bp);
+ setenv("editalt", bp, 1);
snprintf (buffer, sizeof(buffer), "%d", dist);
- m_putenv ("mhdist", buffer);
+ setenv("mhdist", buffer, 1);
if (nedit) {
unputenv ("mheditor");
} else {
- m_putenv ("mheditor", ed ? ed : (ed = get_default_editor()));
+ if (!ed)
+ ed = get_default_editor();
+ setenv("mheditor", ed, 1);
}
snprintf (buffer, sizeof(buffer), "%d", use);
- m_putenv ("mhuse", buffer);
+ setenv("mhuse", buffer, 1);
snprintf (buffer, sizeof(buffer), "%d", atfile);
- m_putenv ("mhatfile", buffer);
+ setenv("mhatfile", buffer, 1);
unputenv ("mhmessages");
unputenv ("mhannotate");
}
}
if (found) {
- m_putenv ("mhmessages", buffer);
- m_putenv ("mhannotate", text);
+ setenv("mhmessages", buffer, 1);
+ setenv("mhannotate", text, 1);
snprintf (buffer, sizeof(buffer), "%d", inplace);
- m_putenv ("mhinplace", buffer);
+ setenv("mhinplace", buffer, 1);
}
}
}
if (altmsg) {
if (mp)
- m_putenv ("mhfolder", mp->foldpath);
- m_putenv ("editalt", altpath);
+ setenv("mhfolder", mp->foldpath, 1);
+ setenv("editalt", altpath, 1);
}
vec = argsplit(*ed, &prog, &vecp);
if ((cp = getenv ("SIGNATURE")) == NULL || *cp == 0)
if ((cp = context_find ("signature")) && *cp)
- m_putenv ("SIGNATURE", cp);
+ setenv("SIGNATURE", cp, 1);
if ((annotext = getenv ("mhannotate")) == NULL || *annotext == 0)
annotext = NULL;