X-Git-Url: http://git.marmaro.de/?a=blobdiff_plain;f=uip%2Frcvtty.c;h=29f2dd9d639845cbdfaef1d1ece030ede7e43299;hb=e69044f7624abe5cb2cb796d528c0cc5f29515f7;hp=1ae85765e1e27b51db605c99fe6237a79cdc474a;hpb=4548981fb45fbc917cc2c26b7c96b31cfa14bc9b;p=mmh diff --git a/uip/rcvtty.c b/uip/rcvtty.c index 1ae8576..29f2dd9 100644 --- a/uip/rcvtty.c +++ b/uip/rcvtty.c @@ -14,7 +14,7 @@ #include #include -#include +#include #include #include #include @@ -22,17 +22,9 @@ #include #include -#include - -#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 +#endif /* HAVE_GETUTXENT */ #define SCANFMT \ "%2(hour{dtimenow}):%02(min{dtimenow}): %<(size)%5(size) %>%<{encrypted}E%>\ @@ -91,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 @@ -123,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; @@ -172,33 +158,18 @@ 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 */ @@ -225,13 +196,13 @@ message_fd (char **vec) fd = mkstemp (strncpy (tmpfil, "/tmp/rcvttyXXXXX", sizeof(tmpfil))); unlink (tmpfil); - if ((child_id = m_vfork()) == NOTOK) { + if ((child_id = vfork()) == NOTOK) { /* fork error */ close (fd); return header_fd (); } else if (child_id) { /* parent process */ - if (!m_setjmp (myctx)) { + if (!setjmp (myctx)) { SIGNAL (SIGALRM, alrmser); bytes = fstat(fileno (stdin), &st) != NOTOK ? (int) st.st_size : 100; @@ -317,7 +288,7 @@ alert (char *tty, int md) if (stat (ttyspec, &st) == NOTOK || (st.st_mode & mask) == 0) return; - if (!m_setjmp (myctx)) { + if (!setjmp (myctx)) { SIGNAL (SIGALRM, alrmser); alarm (2); td = open (ttyspec, O_WRONLY);