From 403bc56ffdf4679f5159d926c5774ad042c55ac9 Mon Sep 17 00:00:00 2001 From: markus schnalke Date: Tue, 27 Mar 2012 10:44:30 +0200 Subject: [PATCH] Removed the undocumented `select' option of slocal(1) and thus removed utmp. --- configure.ac | 4 +- uip/slocal.c | 118 ---------------------------------------------------------- 2 files changed, 1 insertion(+), 121 deletions(-) diff --git a/configure.ac b/configure.ac index 0387a18..51a4d1a 100644 --- a/configure.ac +++ b/configure.ac @@ -359,7 +359,7 @@ AC_CHECK_HEADER([sys/ptem.h], AC_DEFINE(WINSIZE_IN_PTEM,1, dnl --------------- dnl CHECK FUNCTIONS dnl --------------- -AC_CHECK_FUNCS(lstat getutent nl_langinfo mbtowc wcwidth) +AC_CHECK_FUNCS(lstat nl_langinfo mbtowc wcwidth) dnl Look for the initgroups() declaration. On AIX 4.[13], Solaris 4.1.3, and dnl ULTRIX 4.2A the function is defined in libc but there's no declaration in @@ -533,8 +533,6 @@ dnl ---------------- dnl CHECK STRUCTURES dnl ---------------- -AC_CHECK_MEMBERS(struct utmp.ut_type,,,[#include ]) - AC_STRUCT_DIRENT_D_TYPE dnl Where is located? Needed as input for signames.awk diff --git a/uip/slocal.c b/uip/slocal.c index 9f2e54b..c0f0922 100644 --- a/uip/slocal.c +++ b/uip/slocal.c @@ -15,10 +15,6 @@ ** */ -/* 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 @@ -43,18 +39,6 @@ extern int initgroups(char*, int); #endif -#include - -#ifndef HAVE_GETUTENT -# ifndef UTMP_FILE -# ifdef _PATH_UTMP -# define UTMP_FILE _PATH_UTMP -# else -# define UTMP_FILE "/etc/utmp" -# endif -# endif -#endif - static struct swit switches[] = { #define ADDRSW 0 { "addr address", 0 }, @@ -88,7 +72,6 @@ static struct swit switches[] = { static int globbed = 0; /* have we built "vars" table yet? */ static int parsed = 0; /* have we built header field table yet */ -static int utmped = 0; /* have we scanned umtp(x) file yet */ static int verbose = 0; static int debug = 0; @@ -170,8 +153,6 @@ static int parse(int); static void expand(char *, char *, int); static void glob(int); static struct pair *lookup(struct pair *, char *); -static int logged_in(void); -static int timely(char *, char *); static int usr_file(int, char *); static int usr_pipe(int, char *, char *, char **, int); static int usr_folder(int, char *); @@ -562,15 +543,6 @@ usr_delivery(int fd, char *delivery, int su) break; } - if (vecp > 5 && mh_strcasecmp(vec[5], "select")==0) { - if (logged_in() != -1) { - continue; - } - if (vecp > 7 && timely(vec[6], vec[7]) == -1) { - continue; - } - } - /* check if the field matches */ switch (*field) { case '*': @@ -966,96 +938,6 @@ lookup(struct pair *pairs, char *key) /* -** Check utmp(x) file to see if user is currently -** logged in. -*/ -#ifdef HAVE_GETUTENT -static int -logged_in(void) -{ - struct utmp * utp; - - if (utmped) { - return utmped; - } - setutent(); - - while ((utp = getutent())) { - if ( -#ifdef HAVE_STRUCT_UTMP_UT_TYPE - utp->ut_type == USER_PROCESS && -#endif - utp->ut_name[0] != 0 && - strncmp(user, utp->ut_name, - sizeof(utp->ut_name)) == 0) { - if (debug) { - continue; - } - endutent(); - return (utmped = DONE); - } - } - - endutent(); - return (utmped = NOTOK); -} -#else -static int -logged_in(void) -{ - struct utmp ut; - FILE *uf; - - if (utmped) { - return utmped; - } - if (!(uf = fopen(UTMP_FILE, "r"))) { - return NOTOK; - } - while (fread((char *) &ut, sizeof(ut), 1, uf) == 1) { - if (ut.ut_name[0] && strncmp(user, ut.ut_name, - sizeof(ut.ut_name))==0) { - if (debug) { - continue; - } - fclose(uf); - return (utmped = DONE); - } - } - fclose(uf); - return (utmped = NOTOK); -} -#endif - -#define check(t,a,b) if ((t) < (a) || (t) > (b)) return -1 -#define cmpar(h1,m1,h2,m2) if ((h1)<(h2) || ((h1)==(h2) && (m1)<(m2))) \ - return 0 - -static int -timely(char *t1, char *t2) -{ - int t1hours, t1mins, t2hours, t2mins; - - if (sscanf(t1, "%d:%d", &t1hours, &t1mins) != 2) { - return -1; - } - check(t1hours, 0, 23); - check(t1mins, 0, 59); - - if (sscanf(t2, "%d:%d", &t2hours, &t2mins) != 2) { - return -1; - } - check(t2hours, 0, 23); - check(t2mins, 0, 59); - - cmpar(now->tw_hour, now->tw_min, t1hours, t1mins); - cmpar(t2hours, t2mins, now->tw_hour, now->tw_min); - - return -1; -} - - -/* ** Deliver message by appending to a file, using rcvpack(1). */ static int -- 1.7.10.4