X-Git-Url: http://git.marmaro.de/?a=blobdiff_plain;f=uip%2Frcvtty.c;h=31ca80ab42746021d7047d4214d10fcf6c7ffa3b;hb=522138c8d86c20435f045eaee0944a9b008b1c5a;hp=5bdddb233dd61b66ba9aa34ed4bf124ba7328deb;hpb=aae44c933a5b035e0b23abf4dd4247cd37e4d041;p=mmh diff --git a/uip/rcvtty.c b/uip/rcvtty.c index 5bdddb2..31ca80a 100644 --- a/uip/rcvtty.c +++ b/uip/rcvtty.c @@ -5,6 +5,11 @@ * $Id$ */ +/* Changed to use getutent() and friends. Assumes that when getutent() exists, + * a number of other things also exist. Please check. + * Ruud de Rooij Sun, 28 May 2000 17:28:55 +0200 + */ + #include #include #include @@ -15,11 +20,14 @@ #include #include -#ifndef UTMP_FILE -# ifdef _PATH_UTMP -# define UTMP_FILE _PATH_UTMP -# else -# define UTMP_FILE "/etc/utmp" + +#ifndef HAVE_GETUTENT +# ifndef UTMP_FILE +# ifdef _PATH_UTMP +# define UTMP_FILE _PATH_UTMP +# else +# define UTMP_FILE "/etc/utmp" +# endif # endif #endif @@ -80,8 +88,12 @@ 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 #ifdef LOCALE setlocale(LC_ALL, ""); @@ -156,17 +168,31 @@ main (int argc, char **argv) exit (RCV_MBX); user = getusername(); + +#ifdef HAVE_GETUTENT + setutent(); + while ((utp = getutent()) != NULL) { + if (utp->ut_type == USER_PROCESS + && utp->ut_user[0] != 0 + && utp->ut_line[0] != 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 + exit (RCV_MOK); return 0; /* dead code to satisfy the compiler */ }