/*
** external prototypes
*/
-int sendsbr (char **, int, char *, struct stat *, int, char *, int);
-char *getusername (void);
+int sendsbr(char **, int, char *, struct stat *, int, char *, int);
+char *getusername(void);
/*
** static prototypes
*/
-static void armed_done (int) NORETURN;
-static void alert (char *, int);
-static int tmp_fd (void);
-static void anno (int, struct stat *);
-static void annoaux (int);
-static int sendaux (char **, int, char *, struct stat *);
+static void armed_done(int) NORETURN;
+static void alert(char *, int);
+static int tmp_fd(void);
+static void anno(int, struct stat *);
+static void annoaux(int);
+static int sendaux(char **, int, 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,
+sendsbr(char **vec, int vecp, char *drft, struct stat *st,
int rename_drft, char *attachment_header_field_name, int attachformat)
{
int status;
}
done=armed_done;
- switch (setjmp (env)) {
+ switch (setjmp(env)) {
case OK:
/*
** If given -push and -unique (which is undocumented), then
if (pushsw && unique) {
char *cp = m_mktemp2(drft, invo_name, NULL, NULL);
if (cp == NULL) {
- adios ("sendsbr", "unable to create temporary file");
+ adios("sendsbr", "unable to create temporary file");
}
- if (rename (drft, strncpy(file, cp, sizeof(file)))
+ if (rename(drft, strncpy(file, cp, sizeof(file)))
== NOTOK)
- adios (file, "unable to rename %s to", drft);
+ adios(file, "unable to rename %s to", drft);
drft = file;
}
- status = sendaux (vec, vecp, drft, st) ? NOTOK : OK;
+ status = sendaux(vec, vecp, drft, st) ? NOTOK : OK;
/* rename the original draft */
if (rename_drft && status == OK &&
- rename (original_draft, strncpy (buffer, m_backup (original_draft), sizeof(buffer))) == NOTOK)
- advise (buffer, "unable to rename %s to", drft);
+ rename(original_draft, strncpy(buffer,
+ m_backup(original_draft), sizeof(buffer)))
+ == NOTOK)
+ advise(buffer, "unable to rename %s to", drft);
break;
default:
done=exit;
if (distfile)
- unlink (distfile);
+ unlink(distfile);
/*
** Get rid of any temporary files that we created for attachments.
break;
case 1:
- if (stringdex (m_maildir(invo_name), file_name) == 0) {
+ if (stringdex(m_maildir(invo_name), file_name) == 0) {
/*
** Content had been placed by send into a temp file.
** Don't generate Content-Disposition header, because
** it confuses Microsoft Outlook, Build 10.0.6626, at
** least.
*/
- (void) fprintf (composition_file, "#%s <>", content_type);
+ fprintf(composition_file, "#%s <>", content_type);
} else {
/*
** Suppress Content-Id, insert simple
** Content-Disposition.
*/
- (void) fprintf (composition_file,
+ fprintf(composition_file,
"#%s; name=\"%s\" <>{attachment}",
content_type,
((p = strrchr(file_name, '/')) == (char *)0) ?
break;
case 2:
- if (stringdex (m_maildir(invo_name), file_name) == 0) {
+ if (stringdex(m_maildir(invo_name), file_name) == 0) {
/*
** Content had been placed by send into a temp file.
** Don't generate Content-Disposition header, because
** it confuses Microsoft Outlook, Build 10.0.6626, at
** least.
*/
- (void) fprintf (composition_file, "#%s <>",
- content_type);
+ fprintf(composition_file, "#%s <>", content_type);
} else {
/*
** Suppress Content-Id, insert Content-Disposition
** with modification date.
*/
- (void) fprintf (composition_file,
+ fprintf(composition_file,
"#%s; name=\"%s\" <>{attachment; modification-date=\"%s\"}",
content_type,
((p = strrchr(file_name, '/')) == (char *)0) ?
- file_name : p + 1, dtime (&st.st_mtime, 0));
+ file_name : p + 1, dtime(&st.st_mtime, 0));
}
break;
default:
- adios ((char *)0, "unsupported attachformat %d", attachformat);
+ adios((char *)0, "unsupported attachformat %d", attachformat);
}
/*
*/
static int
-sendaux (char **vec, int vecp, char *drft, struct stat *st)
+sendaux(char **vec, int vecp, char *drft, struct stat *st)
{
pid_t child_id;
int i, status, fd, fd2;
char backup[BUFSIZ], buf[BUFSIZ];
- fd = pushsw ? tmp_fd () : NOTOK;
+ fd = pushsw ? tmp_fd() : NOTOK;
fd2 = NOTOK;
vec[vecp++] = drft;
if (annotext) {
- if ((fd2 = tmp_fd ()) != NOTOK) {
+ if ((fd2 = tmp_fd()) != NOTOK) {
vec[vecp++] = "-idanno";
- snprintf (buf, sizeof(buf), "%d", fd2);
+ snprintf(buf, sizeof(buf), "%d", fd2);
vec[vecp++] = buf;
} else {
- admonish (NULL, "unable to create file for annotation list");
+ admonish(NULL, "unable to create file for annotation list");
}
}
- if (distfile && distout (drft, distfile, backup) == NOTOK)
- done (1);
+ if (distfile && distout(drft, distfile, backup) == NOTOK)
+ done(1);
vec[vecp] = NULL;
for (i = 0; (child_id = vfork()) == NOTOK && i < 5; i++)
- sleep (5);
+ sleep(5);
switch (child_id) {
case -1:
/* oops -- fork error */
- adios ("fork", "unable to");
+ adios("fork", "unable to");
break; /* NOT REACHED */
case 0:
** file, so capture anything on stdout and stderr there.
*/
if (fd != NOTOK) {
- dup2 (fd, fileno (stdout));
- dup2 (fd, fileno (stderr));
- close (fd);
+ dup2(fd, fileno(stdout));
+ dup2(fd, fileno(stderr));
+ close(fd);
}
- execvp (postproc, vec);
- fprintf (stderr, "unable to exec ");
- perror (postproc);
- _exit (-1);
+ execvp(postproc, vec);
+ fprintf(stderr, "unable to exec ");
+ perror(postproc);
+ _exit(-1);
break; /* NOT REACHED */
default:
*/
if ((status = pidwait(child_id, NOTOK)) == OK) {
if (annotext && fd2 != NOTOK)
- anno (fd2, st);
+ anno(fd2, st);
} else {
/*
** If postproc failed, and we have good fd (which
** (and possibly the draft) back to the user.
*/
if (fd != NOTOK) {
- alert (drft, fd);
- close (fd);
+ alert(drft, fd);
+ close(fd);
} else {
- advise (NULL, "message not delivered to anyone");
+ advise(NULL, "message not delivered to anyone");
}
if (annotext && fd2 != NOTOK)
- close (fd2);
+ close(fd2);
if (distfile) {
- unlink (drft);
- if (rename (backup, drft) == NOTOK)
- advise (drft, "unable to rename %s to",
+ unlink(drft);
+ if (rename(backup, drft) == NOTOK)
+ advise(drft, "unable to rename %s to",
backup);
}
}
*/
static void
-alert (char *file, int out)
+alert(char *file, int out)
{
pid_t child_id;
int i, in;
char buf[BUFSIZ];
for (i = 0; (child_id = fork()) == NOTOK && i < 5; i++)
- sleep (5);
+ sleep(5);
switch (child_id) {
case NOTOK:
/* oops -- fork error */
- advise ("fork", "unable to");
+ advise("fork", "unable to");
case OK:
/* child process -- send it */
- SIGNAL (SIGHUP, SIG_IGN);
- SIGNAL (SIGINT, SIG_IGN);
- SIGNAL (SIGQUIT, SIG_IGN);
- SIGNAL (SIGTERM, SIG_IGN);
+ SIGNAL(SIGHUP, SIG_IGN);
+ SIGNAL(SIGINT, SIG_IGN);
+ SIGNAL(SIGQUIT, SIG_IGN);
+ SIGNAL(SIGTERM, SIG_IGN);
if (forwsw) {
- if ((in = open (file, O_RDONLY)) == NOTOK) {
- admonish (file, "unable to re-open");
+ if ((in = open(file, O_RDONLY)) == NOTOK) {
+ admonish(file, "unable to re-open");
} else {
- lseek (out, (off_t) 0, SEEK_END);
- strncpy (buf, "\nMessage not delivered to anyone.\n", sizeof(buf));
- write (out, buf, strlen (buf));
- strncpy (buf, "\n------- Unsent Draft\n\n", sizeof(buf));
- write (out, buf, strlen (buf));
- cpydgst (in, out, file, "temporary file");
- close (in);
- strncpy (buf, "\n------- End of Unsent Draft\n", sizeof(buf));
- write (out, buf, strlen (buf));
- if (rename (file, strncpy (buf, m_backup (file), sizeof(buf))) == NOTOK)
- admonish (buf, "unable to rename %s to", file);
+ lseek(out, (off_t) 0, SEEK_END);
+ strncpy(buf, "\nMessage not delivered to anyone.\n", sizeof(buf));
+ write(out, buf, strlen(buf));
+ strncpy(buf, "\n------- Unsent Draft\n\n", sizeof(buf));
+ write(out, buf, strlen(buf));
+ cpydgst(in, out, file, "temporary file");
+ close(in);
+ strncpy(buf, "\n------- End of Unsent Draft\n", sizeof(buf));
+ write(out, buf, strlen(buf));
+ if (rename(file, strncpy(buf, m_backup(file), sizeof(buf))) == NOTOK)
+ admonish(buf, "unable to rename %s to", file);
}
}
- lseek (out, (off_t) 0, SEEK_SET);
- dup2 (out, fileno (stdin));
- close (out);
+ lseek(out, (off_t) 0, SEEK_SET);
+ dup2(out, fileno(stdin));
+ close(out);
/* create subject for error notification */
- snprintf (buf, sizeof(buf), "send failed on %s",
- forwsw ?
- "enclosed draft" : file);
+ snprintf(buf, sizeof(buf), "send failed on %s",
+ forwsw ? "enclosed draft" : file);
- execlp (mailproc, r1bindex (mailproc, '/'),
- getusername (),
- "-subject", buf, NULL);
- fprintf (stderr, "unable to exec ");
- perror (mailproc);
- _exit (-1);
+ execlp(mailproc, mhbasename(mailproc),
+ getusername(), "-subject", buf, NULL);
+ fprintf(stderr, "unable to exec ");
+ perror(mailproc);
+ _exit(-1);
default: /* no waiting... */
break;
static int
-tmp_fd (void)
+tmp_fd(void)
{
int fd;
char *tfile = NULL;
fchmod(fd, 0600);
if (debugsw)
- advise (NULL, "temporary file %s selected", tfile);
+ advise(NULL, "temporary file %s selected", tfile);
else
- if (unlink (tfile) == NOTOK)
- advise (tfile, "unable to remove");
+ if (unlink(tfile) == NOTOK)
+ advise(tfile, "unable to remove");
return fd;
}
static void
-anno (int fd, struct stat *st)
+anno(int fd, struct stat *st)
{
pid_t child_id;
sigset_t set, oset;
static char *cwd = NULL;
struct stat st2;
- if (altmsg &&
- (stat (altmsg, &st2) == NOTOK
- || st->st_mtime != st2.st_mtime
- || st->st_dev != st2.st_dev
- || st->st_ino != st2.st_ino)) {
+ if (altmsg && (stat(altmsg, &st2) == NOTOK ||
+ st->st_mtime != st2.st_mtime ||
+ st->st_dev != st2.st_dev ||
+ st->st_ino != st2.st_ino)) {
if (debugsw)
- admonish (NULL, "$mhaltmsg mismatch");
+ admonish(NULL, "$mhaltmsg mismatch");
return;
}
- child_id = debugsw ? NOTOK : fork ();
+ child_id = debugsw ? NOTOK : fork();
switch (child_id) {
case NOTOK: /* oops */
if (!debugsw)
- advise (NULL, "unable to fork, so doing annotations by hand...");
+ advise(NULL, "unable to fork, so doing annotations by hand...");
if (cwd == NULL)
- cwd = getcpy (pwd ());
+ cwd = getcpy(pwd());
case OK:
/* block a few signals */
- sigemptyset (&set);
- sigaddset (&set, SIGHUP);
- sigaddset (&set, SIGINT);
- sigaddset (&set, SIGQUIT);
- sigaddset (&set, SIGTERM);
- SIGPROCMASK (SIG_BLOCK, &set, &oset);
-
- annoaux (fd);
+ sigemptyset(&set);
+ sigaddset(&set, SIGHUP);
+ sigaddset(&set, SIGINT);
+ sigaddset(&set, SIGQUIT);
+ sigaddset(&set, SIGTERM);
+ SIGPROCMASK(SIG_BLOCK, &set, &oset);
+
+ annoaux(fd);
if (child_id == OK)
- _exit (0);
+ _exit(0);
/* reset the signal mask */
- SIGPROCMASK (SIG_SETMASK, &oset, &set);
+ SIGPROCMASK(SIG_SETMASK, &oset, &set);
- chdir (cwd);
+ chdir(cwd);
break;
default: /* no waiting... */
- close (fd);
+ close(fd);
break;
}
}
static void
-annoaux (int fd)
+annoaux(int fd)
{
int fd2, fd3, msgnum;
char *cp, *folder, *maildir;
FILE *fp;
struct msgs *mp;
- if ((folder = getenv ("mhfolder")) == NULL || *folder == 0) {
+ if ((folder = getenv("mhfolder")) == NULL || *folder == 0) {
if (debugsw)
- admonish (NULL, "$mhfolder not set");
+ admonish(NULL, "$mhfolder not set");
return;
}
- maildir = m_maildir (folder);
- if (chdir (maildir) == NOTOK) {
+ maildir = m_maildir(folder);
+ if (chdir(maildir) == NOTOK) {
if (debugsw)
- admonish (maildir, "unable to change directory to");
+ admonish(maildir, "unable to change directory to");
return;
}
- if (!(mp = folder_read (folder))) {
+ if (!(mp = folder_read(folder))) {
if (debugsw)
- admonish (NULL, "unable to read folder %s", folder);
+ admonish(NULL, "unable to read folder %s", folder);
return;
}
/* check for empty folder */
if (mp->nummsg == 0) {
if (debugsw)
- admonish (NULL, "no messages in %s", folder);
+ admonish(NULL, "no messages in %s", folder);
goto oops;
}
- if ((cp = getenv ("mhmessages")) == NULL || *cp == 0) {
+ if ((cp = getenv("mhmessages")) == NULL || *cp == 0) {
if (debugsw)
- admonish (NULL, "$mhmessages not set");
+ admonish(NULL, "$mhmessages not set");
goto oops;
}
if (!debugsw /* MOBY HACK... */
&& pushsw
- && (fd3 = open ("/dev/null", O_RDWR)) != NOTOK
- && (fd2 = dup (fileno (stderr))) != NOTOK) {
- dup2 (fd3, fileno (stderr));
- close (fd3);
+ && (fd3 = open("/dev/null", O_RDWR)) != NOTOK
+ && (fd2 = dup(fileno(stderr))) != NOTOK) {
+ dup2(fd3, fileno(stderr));
+ close(fd3);
}
else
fd2 = NOTOK;
- for (ap = brkstring (cp = getcpy (cp), " ", NULL); *ap; ap++)
- m_convert (mp, *ap);
- free (cp);
+ for (ap = brkstring(cp = getcpy(cp), " ", NULL); *ap; ap++)
+ m_convert(mp, *ap);
+ free(cp);
if (fd2 != NOTOK)
- dup2 (fd2, fileno (stderr));
+ dup2(fd2, fileno(stderr));
if (mp->numsel == 0) {
if (debugsw)
- admonish (NULL, "no messages to annotate");
+ admonish(NULL, "no messages to annotate");
goto oops;
}
- lseek (fd, (off_t) 0, SEEK_SET);
- if ((fp = fdopen (fd, "r")) == NULL) {
+ lseek(fd, (off_t) 0, SEEK_SET);
+ if ((fp = fdopen(fd, "r")) == NULL) {
if (debugsw)
- admonish (NULL, "unable to fdopen annotation list");
+ admonish(NULL, "unable to fdopen annotation list");
goto oops;
}
cp = NULL;
- while (fgets (buffer, sizeof(buffer), fp) != NULL)
- cp = add (buffer, cp);
- fclose (fp);
+ while (fgets(buffer, sizeof(buffer), fp) != NULL)
+ cp = add(buffer, cp);
+ fclose(fp);
if (debugsw)
- advise (NULL, "annotate%s with %s: \"%s\"",
+ advise(NULL, "annotate%s with %s: \"%s\"",
inplace ? " inplace" : "", annotext, cp);
for (msgnum = mp->lowsel; msgnum <= mp->hghsel; msgnum++) {
if (is_selected(mp, msgnum)) {
if (debugsw)
- advise (NULL, "annotate message %d", msgnum);
- annotate (m_name (msgnum), annotext, cp, inplace, 1, -2, 0);
+ advise(NULL, "annotate message %d", msgnum);
+ annotate(m_name (msgnum), annotext, cp, inplace,
+ 1, -2, 0);
}
}
- free (cp);
+ free(cp);
oops:
- folder_free (mp); /* free folder/message structure */
+ folder_free(mp); /* free folder/message structure */
}
static void
-armed_done (int status)
+armed_done(int status)
{
- longjmp (env, status ? status : NOTOK);
+ longjmp(env, status ? status : NOTOK);
- exit (status);
+ exit(status);
}