-
-/*
- * rcvtty.c -- a rcvmail program (a lot like rcvalert) handling IPC ttys
+/* rcvtty.c -- a rcvmail program (a lot like rcvalert) handling IPC ttys
*
* This code is Copyright (c) 2002, by the authors of nmh. See the
* COPYRIGHT file in the root directory of the nmh distribution for
#include <h/scansbr.h>
#include <h/tws.h>
#include <h/mts.h>
+#include <h/utils.h>
+#include "sbr/m_mktemp.h"
#include <fcntl.h>
#ifdef HAVE_GETUTXENT
static char *form = NULL;
static char *format = NULL;
-/*
- * external prototypes
- */
-char *getusername(void);
-
/*
* static prototypes
*/
struct stat st;
if ((tfile = m_mktemp2(NULL, invo_name, &fd, NULL)) == NULL) {
- advise(NULL, "unable to create temporary file in %s", get_temp_dir());
+ inform("unable to create temporary file in %s", get_temp_dir());
return NOTOK;
}
(void) m_unlink(tfile); /* Use fd, no longer need the file name. */
/* fork error */
close (fd);
return header_fd ();
- } else if (child_id) {
+ }
+ if (child_id) {
/* parent process */
if (!setjmp (myctx)) {
SIGNAL (SIGALRM, alrmser);
pidwait(child_id, OK);
alarm (0);
- if (fstat (fd, &st) != NOTOK && st.st_size > (off_t) 0)
+ if (fstat (fd, &st) != NOTOK && st.st_size > 0)
return fd;
} else {
/*
if (dup2 (fd, 1) == NOTOK || dup2 (fd, 2) == NOTOK)
_exit (-1);
closefds (3);
- setpgid ((pid_t) 0, getpid ()); /* put in own process group */
+ setpgid(0, getpid()); /* put in own process group */
if (execvp (vec[0], vec) == NOTOK) {
_exit (-1);
}
charstring_t scanl = NULL;
if ((tfile = m_mktemp2(NULL, invo_name, &fd, NULL)) == NULL) {
- advise(NULL, "unable to create temporary file in %s", get_temp_dir());
+ inform("unable to create temporary file in %s", get_temp_dir());
return NOTOK;
}
(void) m_unlink(tfile); /* Use fd, no longer need the file name. */
if (stat (ttyspec, &st) == NOTOK || (st.st_mode & mask) == 0)
return;
- if (!setjmp (myctx)) {
- SIGNAL (SIGALRM, alrmser);
- alarm (2);
- td = open (ttyspec, O_WRONLY);
- alarm (0);
- if (td == NOTOK)
- return;
- } else {
+ if (setjmp (myctx)) {
alarm (0);
return;
}
-
- lseek (md, (off_t) 0, SEEK_SET);
+ SIGNAL (SIGALRM, alrmser);
+ alarm (2);
+ td = open (ttyspec, O_WRONLY);
+ alarm (0);
+ if (td == NOTOK)
+ return;
+
+ lseek(md, 0, SEEK_SET);
while ((i = read (md, buffer, sizeof(buffer))) > 0)
if (write (td, buffer, i) != i)