home *** CD-ROM | disk | FTP | other *** search
- static char rcsid[] = "@(#)$Id: mesg.c,v 2.0 07/18/90 jbc $";
- /***************************************************************************/
- /* Copyright (c) 1990 James B. Cummings, Jr. */
- /* */
- /* This program is offered in the Public Domain and is freely available */
- /* as long as this notice is kept intact with each module. */
- /***************************************************************************/
- #include "header.h"
-
- mesg(flag, name, dev, idle)
- int flag, idle;
- char *name, *dev;
- {
- char mbuf[256]; /* message buffer */
- time_t tvec;
- FILE *fopen(), *fp, *log, *mprog;
-
- time(&tvec); /* store the time in tvec */
- if((log = fopen(LOG_FILE, "a")) == (FILE *) NULL)
- bailout("can't open log file",4);
-
- if(flag == WARNING) {
- if((fp = fopen(dev,"w")) == (FILE *) NULL)
- bailout("can't open user's terminal", 5);
- fprintf(fp,
- "\n%s: You've been idle for %d min.\007\n",name,idle);
- fprintf(fp,
- "you'll be logged off in 60 sec. unless you hit return.\n");
-
- fclose(fp);
- fprintf(log, "WARNING: %s %s (%d min idle time) %s",
- name, dev+5, idle, ctime(&tvec)+3);
- }
-
- if(flag == LOGOFF) {
- fprintf(log, "LOGOFF: %s %s (%d min idle time) %s",
- name, dev+5, idle, ctime(&tvec)+3);
- sprintf(mbuf,"%s %s", MAIL, name);
-
- /* pipe to mail program for writing */
- if((mprog = popen(mbuf, "w")) == (FILE *) NULL)
- bailout("can't use MAIL program",6);
-
- fprintf(mprog, "Subject: Excess Idle Time\n %s,\n\tYou were logged off after %d min idle time at - %s\n",name,idle, ctime(&tvec));
-
- fclose(mprog);
- }
-
- if(flag == NOLOGOFF) { /* Send mail to root if can't kill */
- fprintf(log, "==>LOGOFF-FAIL %s (pid = %d) %s (%d min idle time) %s\n", name ,utmpp->ut_pid, dev+5, idle, ctime(&tvec)+3);
- sprintf(mbuf, " %s root",MAIL );
- if((mprog = popen(mbuf, "w")) == (FILE *) NULL)
- bailout("can't use MAIL program\n", 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);
- }
-