/*
* external prototypes
*/
-int sendsbr (char **, int, char *, struct stat *, int, char *, int);
+int sendsbr (char **, int, char *, char *, struct stat *, int, char *, int);
char *getusername (void);
/*
static int tmp_fd (void);
static void anno (int, struct stat *);
static void annoaux (int);
-static int splitmsg (char **, int, char *, struct stat *, int);
-static int sendaux (char **, int, char *, struct stat *);
+static int splitmsg (char **, int, char *, char *, struct stat *, int);
+static int sendaux (char **, int, char *, char *, struct stat *);
static int attach(char *, char *, int);
static void clean_up_temporary_files(void);
*/
int
-sendsbr (char **vec, int vecp, char *drft, struct stat *st, int rename_drft, char *attachment_header_field_name, int attachformat)
+sendsbr (char **vec, int vecp, char *program, char *drft, struct stat *st,
+ int rename_drft, char *attachment_header_field_name, int attachformat)
{
int status;
char buffer[BUFSIZ], file[BUFSIZ];
*/
if (splitsw >= 0 && !distfile && stat (drft, &sts) != NOTOK
&& sts.st_size >= CPERMSG) {
- status = splitmsg (vec, vecp, drft, st, splitsw) ? NOTOK : OK;
+ status = splitmsg (vec, vecp, program, drft, st, splitsw) ? NOTOK : OK;
} else {
- status = sendaux (vec, vecp, drft, st) ? NOTOK : OK;
+ status = sendaux (vec, vecp, program, drft, st) ? NOTOK : OK;
}
/* rename the original draft */
if ((p = strrchr(file_name, '.')) != (char *)0) {
for (np = m_defs; np; np = np->n_next) {
- if (strncasecmp(np->n_name, "mhshow-suffix-", 14) == 0 && mh_strcasecmp(p, np->n_field) == 0) {
+ if (strncasecmp(np->n_name, "mhshow-suffix-", 14) == 0 &&
+ strcasecmp(p, np->n_field ? np->n_field : "") == 0) {
content_type = np->n_name + 14;
break;
}
*/
static int
-splitmsg (char **vec, int vecp, char *drft, struct stat *st, int delay)
+splitmsg (char **vec, int vecp, char *program, char *drft,
+ struct stat *st, int delay)
{
int compnum, nparts, partno, state, status;
long pos, start;
/*
* This header field is discarded.
*/
- if (!mh_strcasecmp (name, "Message-ID")) {
+ if (!strcasecmp (name, "Message-ID")) {
while (state == FLDPLUS) {
bufsz = sizeof buffer;
state = m_getfld (&gstate, name, buffer, &bufsz, in);
}
} else if (uprf (name, XXX_FIELD_PRF)
- || !mh_strcasecmp (name, VRSN_FIELD)
- || !mh_strcasecmp (name, "Subject")
- || !mh_strcasecmp (name, "Encrypted")) {
+ || !strcasecmp (name, VRSN_FIELD)
+ || !strcasecmp (name, "Subject")
+ || !strcasecmp (name, "Encrypted")) {
/*
* These header fields are copied to the enclosed
* header of the first message in the collection
* version of it, can be copied to the header
* of each messsage/partial in the collection.
*/
- if (!mh_strcasecmp (name, "Subject")) {
+ if (!strcasecmp (name, "Subject")) {
size_t sublen;
strncpy (subject, buffer, BUFSIZ);
free (dp);
fclose (in);
- return sendaux (vec, vecp, drft, st);
+ return sendaux (vec, vecp, program, drft, st);
}
if (!pushsw) {
}
snprintf (partnum, sizeof(partnum), "%d", partno);
- status = sendaux (vec, vecp, tmpdrf, st);
+ status = sendaux (vec, vecp, program, tmpdrf, st);
unlink (tmpdrf);
if (status != OK)
break;
/*
* Annotate original message, and
- * call `postproc' to send message.
+ * call `postproc' (which is passed down in "program") to send message.
*/
static int
-sendaux (char **vec, int vecp, char *drft, struct stat *st)
+sendaux (char **vec, int vecp, char *program, char *drft, struct stat *st)
{
pid_t child_id;
int i, status, fd, fd2;
done (1);
vec[vecp] = NULL;
- for (i = 0; (child_id = vfork()) == NOTOK && i < 5; i++)
+ for (i = 0; (child_id = fork()) == NOTOK && i < 5; i++)
sleep (5);
switch (child_id) {
dup2 (fd, fileno (stderr));
close (fd);
}
- execvp (postproc, vec);
+ execvp (program, vec);
fprintf (stderr, "unable to exec ");
perror (postproc);
_exit (-1);
admonish (maildir, "unable to change directory to");
return;
}
- if (!(mp = folder_read (folder))) {
+ if (!(mp = folder_read (folder, 0))) {
if (debugsw)
admonish (NULL, "unable to read folder %s", folder);
return;