Removed the undocumented `select' option of slocal(1) and thus removed utmp.
authormarkus schnalke <meillo@marmaro.de>
Tue, 27 Mar 2012 08:44:30 +0000 (10:44 +0200)
committermarkus schnalke <meillo@marmaro.de>
Tue, 27 Mar 2012 08:44:30 +0000 (10:44 +0200)
configure.ac
uip/slocal.c

index 0387a18..51a4d1a 100644 (file)
@@ -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 <utmp.h>])
-
 AC_STRUCT_DIRENT_D_TYPE
 
 dnl Where is <signal.h> located?  Needed as input for signames.awk
index 9f2e54b..c0f0922 100644 (file)
 **
 */
 
-/* Changed to use getutent() and friends.  Assumes that when getutent() exists,
-** a number of other things also exist.  Please check.
-** Ruud de Rooij <ruud@ruud.org>  Sun, 28 May 2000 17:28:55 +0200
-*/
 
 #include <h/mh.h>
 #include <h/rcvmail.h>
 extern int  initgroups(char*, int);
 #endif
 
-#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
-
 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