Removed unused function seek_home().
[mmh] / uip / rcvtty.c
index 8b04d61..29f2dd9 100644 (file)
@@ -14,6 +14,7 @@
 
 #include <h/mh.h>
 #include <h/signals.h>
+#include <setjmp.h>
 #include <h/rcvmail.h>
 #include <h/scansbr.h>
 #include <h/tws.h>
 #include <signal.h>
 #include <fcntl.h>
 
-#include <utmp.h>
-
-#ifndef HAVE_GETUTENT
-# ifndef UTMP_FILE
-#  ifdef _PATH_UTMP
-#   define UTMP_FILE _PATH_UTMP
-#  else
-#   define UTMP_FILE "/etc/utmp"
-#  endif
-# endif
-#endif
+#ifdef HAVE_GETUTXENT
+#include <utmpx.h>
+#endif /* HAVE_GETUTXENT */
 
 #define        SCANFMT \
 "%2(hour{dtimenow}):%02(min{dtimenow}): %<(size)%5(size) %>%<{encrypted}E%>\
@@ -78,7 +71,7 @@ char *getusername(void);
 /*
  * static prototypes
  */
-static RETSIGTYPE alrmser (int);
+static void alrmser (int);
 static int message_fd (char **);
 static int header_fd (void);
 static void alert (char *, int);
@@ -90,13 +83,7 @@ main (int argc, char **argv)
     int md, vecp = 0;
     char *cp, *user, buf[BUFSIZ], tty[BUFSIZ];
     char **argp, **arguments, *vec[MAXARGS];
-#ifdef HAVE_GETUTENT
-    struct utmp * utp;
-#else
-    struct utmp ut;
-    register FILE *uf;
-#endif
-
+    struct utmpx *utp;
 #ifdef LOCALE
     setlocale(LC_ALL, "");
 #endif
@@ -122,10 +109,10 @@ main (int argc, char **argv)
                case HELPSW: 
                    snprintf (buf, sizeof(buf), "%s [command ...]", invo_name);
                    print_help (buf, switches, 1);
-                   done (1);
+                   done (0);
                case VERSIONSW:
                    print_version(invo_name);
-                   done (1);
+                   done (0);
 
                case BIFFSW:
                    biff = 1;
@@ -171,45 +158,28 @@ main (int argc, char **argv)
 
     user = getusername();
 
-#ifdef HAVE_GETUTENT
-    setutent();
-    while ((utp = getutent()) != NULL) {
-        if (
-#ifdef HAVE_STRUCT_UTMP_UT_TYPE
-              utp->ut_type == USER_PROCESS 
-              &&
-#endif
-               utp->ut_name[0] != 0
+#if HAVE_GETUTXENT
+    setutxent();
+    while ((utp = getutxent()) != NULL) {
+        if (utp->ut_type == USER_PROCESS && utp->ut_user[0] != 0
                && utp->ut_line[0] != 0
-               && strncmp (user, utp->ut_name, sizeof(utp->ut_name)) == 0) {
+               && strncmp (user, utp->ut_user, sizeof(utp->ut_user)) == 0) {
             strncpy (tty, utp->ut_line, sizeof(utp->ut_line));
            alert (tty, md);
         }
     }
-    endutent();
-#else
-    if ((uf = fopen (UTMP_FILE, "r")) == NULL)
-       exit (RCV_MBX);
-    while (fread ((char *) &ut, sizeof(ut), 1, uf) == 1)
-       if (ut.ut_name[0] != 0
-               && strncmp (user, ut.ut_name, sizeof(ut.ut_name)) == 0) {
-           strncpy (tty, ut.ut_line, sizeof(ut.ut_line));
-           alert (tty, md);
-       }
-    fclose (uf);
-#endif
+    endutxent();
+#endif /* HAVE_GETUTXENT */
 
     exit (RCV_MOK);
     return 0;  /* dead code to satisfy the compiler */
 }
 
 
-static RETSIGTYPE
+static void
 alrmser (int i)
 {
-#ifndef RELIABLE_SIGNALS
-    SIGNAL (SIGALRM, alrmser);
-#endif
+    NMH_UNUSED (i);
 
     longjmp (myctx, 1);
 }
@@ -223,13 +193,7 @@ message_fd (char **vec)
     char tmpfil[BUFSIZ];
     struct stat st;
 
-#ifdef HAVE_MKSTEMP
     fd = mkstemp (strncpy (tmpfil, "/tmp/rcvttyXXXXX", sizeof(tmpfil)));
-#else
-    unlink (mktemp (strncpy (tmpfil, "/tmp/rcvttyXXXXX", sizeof(tmpfil))));
-    if ((fd = open (tmpfil, O_RDWR | O_CREAT | O_TRUNC, 0600)) == NOTOK)
-       return header_fd ();
-#endif
     unlink (tmpfil);
 
     if ((child_id = vfork()) == NOTOK) {
@@ -263,7 +227,7 @@ message_fd (char **vec)
             * Ruthlessly kill the child and anything
             * else in its process group.
             */
-           KILLPG(child_id, SIGKILL);
+           killpg(child_id, SIGKILL);
        }
        close (fd);
        return header_fd ();