X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/a57e5d9907d845d6f83d2cfdea55cd52efad793f..63621a81d16ab743de6b57d47578a9a2c670ad22:/uip/rcvtty.c diff --git a/uip/rcvtty.c b/uip/rcvtty.c index 24a931b7..101aa5ab 100644 --- a/uip/rcvtty.c +++ b/uip/rcvtty.c @@ -1,6 +1,4 @@ - -/* - * 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 @@ -19,6 +17,8 @@ #include #include #include +#include +#include "sbr/m_mktemp.h" #include #ifdef HAVE_GETUTXENT @@ -58,11 +58,6 @@ static int width = -1; static char *form = NULL; static char *format = NULL; -/* - * external prototypes - */ -char *getusername(void); - /* * static prototypes */ @@ -82,9 +77,9 @@ main (int argc, char **argv) char **argp, **arguments, *vec[MAXARGS]; struct utmpx *utp; - if (nmh_init(argv[0], 1)) { return 1; } + if (nmh_init(argv[0], 2)) { return 1; } - mts_init (invo_name); + mts_init (); arguments = getarguments (invo_name, argc, argv, 1); argp = arguments; @@ -189,7 +184,7 @@ message_fd (char **vec) 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. */ @@ -198,7 +193,8 @@ message_fd (char **vec) /* fork error */ close (fd); return header_fd (); - } else if (child_id) { + } + if (child_id) { /* parent process */ if (!setjmp (myctx)) { SIGNAL (SIGALRM, alrmser); @@ -218,7 +214,7 @@ message_fd (char **vec) 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 { /* @@ -236,7 +232,7 @@ message_fd (char **vec) 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); } @@ -254,7 +250,7 @@ header_fd (void) 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. */ @@ -302,19 +298,18 @@ alert (char *tty, int md) 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)