+++ /dev/null
-diff -urN autolog-0.34.orig/Makefile autolog-0.34/Makefile
---- autolog-0.34.orig/Makefile Fri Oct 16 20:38:44 1998
-+++ autolog-0.34/Makefile Fri Oct 16 20:39:16 1998
-@@ -3,9 +3,9 @@
- # The -g flag is to include debugging information. It gets
- # stripped back out in the install command anyway.
- CC = gcc
--CFLAGS = -g
--MANDIR = /usr/man
--BINDIR = /usr/sbin
-+CFLAGS = -O2 -g -Wall
-+MANDIR = $(DESTDIR)/usr/man
-+BINDIR = $(DESTDIR)/usr/sbin
- # *********************************************************
-
- autolog: autolog.c
-@@ -13,8 +13,9 @@
-
- install: autolog
- install -s autolog $(BINDIR)
-- install -m644 autolog.conf.5 $(MANDIR)/man5
-- install -m644 autolog.8 $(MANDIR)/man8
-+ install -p -m644 autolog.conf.5 $(MANDIR)/man5
-+ install -p -m644 autolog.8 $(MANDIR)/man8
-+ install -p -m644 crontab $(DESTDIR)/etc/cron.d/autolog
-
- clean:
-- rm autolog
-+ rm -f autolog
-diff -urN autolog-0.34.orig/autolog.8 autolog-0.34/autolog.8
---- autolog-0.34.orig/autolog.8 Fri Oct 16 20:38:44 1998
-+++ autolog-0.34/autolog.8 Fri Oct 16 20:39:16 1998
-@@ -1,4 +1,4 @@
--.TH AUTOLOG 1L "Administrative Utilities" "Linux" \" -*- nroff -*-
-+.TH AUTOLOG 8 "Administrative Utilities" "Linux" \" -*- nroff -*-
- .SH NAME
- autolog \- Log out idle users
- .SH SYNOPSIS
-@@ -6,55 +6,59 @@
- .br
- .SH DESCRIPTION
- The program reads the utmp file, entry by entry. The
--username for each 'user process' is compared to the entries in the
--configuration file (see
--.B autoconf(5)
--). The first entry to match both the name, the group,
-+username for each `user process' is compared to the entries in the
-+configuration file
-+.IR autolog.conf .
-+The first entry to match both the name, the group,
- and the tty line of the process will be used to conduct the automatic
- logout.
-
- .SH OPTIONS
- .TP
--.B -a
-+.I -a
- (all processes) Print information on ALL utmp entries--not just user processes.
- .TP
--.B -d
-+.I -d
- (debug mode) This is helpful in setting up your configuration file.
- The program runs in foreground rather than forking and it prints
- out verbose messages about what it is doing.
- .TP
--.B -n
-+.I -n
- (nokill) Use this to prevent autolog from actually "killing"
- anyone. Use -d and -n together when setting up a new
- configuration file.
- .TP
--.B -f config_file_name
--Use this to override the default: "/etc/autolog.conf"
--.TP
--.B -l log_file_name
--Use this to override the default: "/var/log/autolog.log".
-+.I -f config_file_name
-+Use this to override the default:
-+.I /etc/autolog.conf
-+.TP
-+.I -l log_file_name
-+Use this to override the default:
-+.IR /var/log/autolog.log .
- Note that if this file doesn't exist, no logging will happen.
- Create the file (with touch) to enable logging.
- .TP
--.B -t idle_time
-+.I -t idle_time
- Use this to override the internal default idle time (minutes)
- .TP
--.B -g grace_period
-+.I -g grace_period
- Use this to override the internal default grace period (seconds)
- .TP
--.B -m yes/no
-+.I -m yes/no
- Use this to override the internal mailing switch. If "yes"
- the program will send mail to the users right after killing them.
- .TP
--.B -c yes/no
-+.I -c yes/no
- Use this to override the internal "pre-clear" switch. If "yes"
- the program will clear the terminal screen before warning the user.
- .TP
--.B -w yes/no
-+.I -w yes/no
- Do timeouts based on total session time--not idle time. (hard)
- .TP
--.B -L yes/no
-+.I -L yes/no
- If set to "yes" activities will be written to the logfile if
- present.
-+.SH "SEE ALSO"
-+.BR autolog.conf (5)
- .SH AUTHOR
- Kyle Bateman <kyle@actarg.com>
-diff -urN autolog-0.34.orig/autolog.c autolog-0.34/autolog.c
---- autolog-0.34.orig/autolog.c Fri Oct 16 20:38:44 1998
-+++ autolog-0.34/autolog.c Fri Oct 16 20:39:16 1998
-@@ -18,11 +18,13 @@
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-+#include <stdlib.h>
- #include <stdio.h>
- #include <signal.h>
- #include <string.h>
- #include <sys/types.h>
- #include <sys/stat.h>
-+#include <unistd.h>
- #include <utmp.h>
- #include <time.h>
- #include <pwd.h>
-@@ -80,7 +82,13 @@
- conf_el c_arr[MAXCONF];
- int c_idx = 0;
-
--main(int argc, char *argv[])
-+void eat_confile(void);
-+int check_idle(void);
-+void bailout(const char *message, int status) __attribute__ ((noreturn));
-+void mesg(int flag, char *name, char *dev, int stime, int idle, conf_el *ce);
-+int killit(pid_t pid);
-+
-+int main(int argc, char *argv[])
- {
- int i;
- for (i = 1; i < argc; i++)
-@@ -132,15 +140,15 @@
- eat_confile(); /* read config file */
- if (!debug) /* if not in debug mode, */
- if (fork()) /* the parent process */
-- exit(0); /* exits */
-+ return 0; /* exits */
-
- /* the child processes all utmp file entries: */
- while ((utmpp = getutent()) != (struct utmp *) NULL)
- check_idle();
-- exit(0); /* done, so bye */
-+ return 0; /* done, so bye */
- }
-
--set_defs(int i)
-+void set_defs(int i)
- {
- c_arr[i].name = anystrg;
- c_arr[i].group = anystrg;
-@@ -154,7 +162,7 @@
- c_arr[i].log = g_log;
- }
-
--eat_confile()
-+void eat_confile(void)
- {
- FILE *f;
- char *s, iline[LINELEN];
-@@ -169,7 +177,7 @@
- {
- while (fgets(iline, LINELEN, f))
- {
-- if (*iline == '#' || strlen(iline) <= 1)
-+ if (*iline == '#' || !iline[0] || !iline[1])
- continue;
- set_defs(c_idx);
- s=strtok(iline,delims);
-@@ -207,7 +215,7 @@
- printf("Unknown token in file: %s: %s\n",confname,s);
- }
- }
-- while(s=strtok(0,delims));
-+ while((s=strtok(NULL,delims)));
- c_idx++;
- }
- fclose(f);
-@@ -226,7 +234,7 @@
- /* versions of the routine should work for you. */
- #define AVOID_REGEX_BUG
- #ifdef AVOID_REGEX_BUG /* some strange bug in re_exec */
--pat_match(char *patt, char *strg)
-+int pat_match(char *patt, char *strg)
- {
- struct re_pattern_buffer rpb;
- int len, retval = 0;
-@@ -249,16 +257,16 @@
-
- #else
- /* return true if strg matches the regex in pattern */
--pat_match(char *pattern,char *strg)
-+int pat_match(char *pattern,char *strg)
- {
- re_comp(pattern);
- return(re_exec(strg));
- }
- #endif
-
--check_idle() /* select utmp entries needing killing */
-+int check_idle(void) /* select utmp entries needing killing */
- {
-- char dev[STRLEN], name[STRLEN], prname[STRLEN], *gn = "";
-+ char dev[STRLEN], name[STRLEN], *gn = "";
- struct stat status;
- time_t idle, pres_time, start, time(), stime, atime;
- struct passwd *passwd_entry;
-@@ -272,8 +280,7 @@
- printf("Non-user process: N:%-8s P:%5d Login:%s",utmpp->ut_user,utmpp->ut_pid,ctime(&utmpp->ut_time));
- return(0); /* skip the utmp entry */
- }
-- sprintf(prname,"/proc/%d",utmpp->ut_pid); /* make filename to check in /proc */
-- if (stat(prname, &status)) /* is this a current process */
-+ if (kill(utmpp->ut_pid,0)) /* is this a current process? */
- {
- if (listall)
- printf("Dead process: N:%-8s P:%5d Login:%s",utmpp->ut_user,utmpp->ut_pid,ctime(&utmpp->ut_time));
-@@ -293,7 +300,7 @@
- name[UT_NAMESIZE] = '\0'; /* null terminate user name string */
-
- if (debug)
-- printf("\nChecking: %-11s on %-12s I:%-4d T:%d Login: %s",name,dev,idle,utmpp->ut_type,ctime(&utmpp->ut_time));
-+ printf("\nChecking: %-11s on %-12s I:%-4ld T:%d Login: %s",name,dev,idle,utmpp->ut_type,ctime(&utmpp->ut_time));
-
- /* now try to find the group of this person */
- /* if usernames in utmp are limited to 8 chars, we will may fail on */
-@@ -303,7 +310,7 @@
- if (passwd_entry)
- {
- strcpy(name,passwd_entry->pw_name);
-- if(group_entry = getgrgid( passwd_entry->pw_gid ))
-+ if((group_entry = getgrgid( passwd_entry->pw_gid )))
- gn = group_entry->gr_name;
- else if (debug)
- printf("Can't find group entry for user: %s\n",name);
-@@ -317,8 +324,8 @@
- pat_match(c_arr[i].line,utmpp->ut_line))
- {
- if (debug)
-- printf("Match #%2d: U:%-12s Grp:%-8s Line:%-9s Pid:%-6d Sess:%3d:%02d\n",
-- i+1,name,gn,utmpp->ut_line,utmpp->ut_pid,stime/60,stime%60);
-+ printf("Match #%2d: U:%-12s Grp:%-8s Line:%-9s Pid:%-6d Sess:%3ld:%02d\n",
-+ i+1,name,gn,utmpp->ut_line,utmpp->ut_pid,stime/60,(int)(stime%60));
- if (!c_arr[i].idle) /* if user exempt (idle=0) */
- {
- if (debug)
-@@ -338,14 +345,14 @@
- if (!c_arr[i].hard) /* if considering idle time */
- {
- if (debug)
-- printf("Subject to logout Idle time: %4d (%2d allowed)\n",idle,ce->idle);
-+ printf("Subject to logout Idle time: %4ld (%2d allowed)\n",idle,ce->idle);
- if (idle < ce->idle) /* if user was recently active */
- return(0); /* let it live */
- }
- else
- {
- if (debug)
-- printf("Subject to logout Total time: %4d (%2d allowed)\n",stime,ce->idle);
-+ printf("Subject to logout Total time: %4ld (%2d allowed)\n",stime,ce->idle);
- if (stime < ce->idle) /* if user still under limit */
- return(0); /* let it live */
- }
-@@ -378,7 +385,7 @@
- return(0);
- }
-
--mesg(int flag, char *name, char *dev, int stime, int idle, conf_el *ce)
-+void mesg(int flag, char *name, char *dev, int stime, int idle, conf_el *ce)
- {
- char mbuf[LINELEN]; /* message buffer */
- time_t tvec;
-@@ -417,10 +424,10 @@
- fprintf(log, "** LOGOFF ** %s %s idle:%d sess:%d %s",name, dev+5, idle, stime, ctime(&tvec)+3);
- if (ce->mail)
- {
-- sprintf(mbuf, "/bin/mail %s", name);
-+ sprintf(mbuf, "/usr/sbin/sendmail %s", name);
- /* open pipe to mail program for writing */
- if (!(mprog = popen(mbuf, "w")) )
-- bailout("Can't use /bin/mail program", 6);
-+ bailout("Can't use /usr/sbin/sendmail program", 6);
- fprintf(mprog, "Subject: Excess Idle Time\nLogged off - excess idle time - %s %s\ntty = %s\n",name, ctime(&tvec), dev+5);
- fclose(mprog);
- }
-@@ -431,18 +438,18 @@
- fprintf(log, "** LOGOFF-FAIL ** %s (pid = %d) %s (%d min idle time) %s",name, utmpp->ut_pid, dev+5, idle, ctime(&tvec)+3);
- if (ce->mail)
- {
-- sprintf(mbuf, "/bin/mail root");
-+ sprintf(mbuf, "/usr/sbin/sendmail root");
- if ((mprog = popen(mbuf, "w")) == (FILE *) NULL)
-- bailout("Can't use /bin/mail program", 7);
-+ bailout("Can't use /usr/sbin/sendmail program", 7);
- fprintf(mprog, "Subject: Can't logoff %s\nCan't Log off - %s %s\ntty = %s\n", name, name, ctime(&tvec), dev+5);
- fclose(mprog);
- }
- }
-- fclose(log);
-- return(0);
-+ if (log)
-+ fclose(log);
- }
-
--killit(int pid) /* terminate process using SIGHUP, then SIGKILL */
-+int killit(pid_t pid) /* terminate process using SIGHUP, then SIGKILL */
- {
- kill(pid, SIGHUP); /* first send "hangup" signal */
- sleep(KWAIT);
-@@ -459,8 +466,8 @@
- return(1); /* successful kill with SIGHUP */
- }
-
--bailout(char *message, int status) /* display error message and exit */
-+void bailout(const char *message, int status) /* display error message and exit */
- {
-- fprintf(stderr,"autologout: %s\n", message);
-+ fprintf(stderr,"autologout: %s (%m)\n", message);
- exit(status);
- }
-diff -urN autolog-0.34.orig/autolog.conf.5 autolog-0.34/autolog.conf.5
---- autolog-0.34.orig/autolog.conf.5 Fri Oct 16 20:38:44 1998
-+++ autolog-0.34/autolog.conf.5 Fri Oct 16 20:39:16 1998
-@@ -1,4 +1,4 @@
--.TH autolog.conf 1L "Configuration Files" "Linux" \" -*- nroff -*-
-+.TH autolog.conf 5 "Configuration Files" "Linux" \" -*- nroff -*-
- .SH NAME
- autolog.conf \- Configuration file for the autolog command
- .SH DESCRIPTION
-@@ -32,7 +32,7 @@
- entry which has all values set from the defaults. This entry will match
- any process on any port (name=.+ line=.+ group=.+). Therefore, the default
- action is to kill all processes.
--.SH ENTRYS
-+.SH ENTRIES
- .TP
- .B name=
- A regular expression specifying which username(s) to match.
-diff -urN autolog-0.34.orig/crontab autolog-0.34/crontab
---- autolog-0.34.orig/crontab Thu Jan 1 01:00:00 1970
-+++ autolog-0.34/crontab Fri Oct 16 20:39:17 1998
-@@ -0,0 +1 @@
-+*/10 * * * * root test -x /usr/sbin/autolog && /usr/sbin/autolog