home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1992 March / Source_Code_CD-ROM_Walnut_Creek_March_1992.iso / usenet / altsrcs / 1 / 1696 / mesg.c < prev    next >
Encoding:
C/C++ Source or Header  |  1990-12-28  |  2.1 KB  |  61 lines

  1. static char rcsid[] = "@(#)$Id: mesg.c,v 2.0  07/18/90  jbc $";
  2. /***************************************************************************/
  3. /* Copyright (c) 1990  James B. Cummings, Jr.                              */
  4. /*                                                                         */
  5. /*  This program is offered in the Public Domain and is freely available   */
  6. /*    as long as this notice is kept intact with each module.              */
  7. /***************************************************************************/
  8. #include "header.h"
  9.  
  10. mesg(flag, name, dev, idle)
  11. int flag, idle;
  12. char *name, *dev;
  13. {
  14.     char mbuf[256];        /* message buffer */
  15.     time_t tvec;
  16.     FILE *fopen(), *fp, *log, *mprog;
  17.  
  18.     time(&tvec);        /* store the time in tvec */
  19.     if((log = fopen(LOG_FILE, "a")) == (FILE *) NULL)
  20.         bailout("can't open log file",4);
  21.  
  22.     if(flag == WARNING) {
  23.         if((fp = fopen(dev,"w")) == (FILE *) NULL)
  24.             bailout("can't open user's terminal", 5);
  25.         fprintf(fp,
  26.             "\n%s: You've been idle for %d min.\007\n",name,idle);
  27.         fprintf(fp,
  28.         "you'll be logged off in 60 sec. unless you hit return.\n");
  29.  
  30.         fclose(fp);
  31.         fprintf(log, "WARNING: %s %s (%d min idle time) %s",
  32.             name, dev+5, idle, ctime(&tvec)+3);
  33.     }
  34.  
  35.     if(flag == LOGOFF) {
  36.         fprintf(log, "LOGOFF:  %s %s (%d min idle time) %s",
  37.            name, dev+5, idle, ctime(&tvec)+3);
  38.         sprintf(mbuf,"%s %s", MAIL, name);
  39.  
  40.         /* pipe to mail program for writing */
  41.         if((mprog = popen(mbuf, "w")) == (FILE *) NULL)
  42.             bailout("can't use MAIL program",6);
  43.  
  44.         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));
  45.  
  46.         fclose(mprog);
  47.     }
  48.  
  49.     if(flag == NOLOGOFF) {          /* Send mail to root if can't kill */
  50.         fprintf(log, "==>LOGOFF-FAIL %s (pid = %d) %s (%d min idle time) %s\n", name ,utmpp->ut_pid, dev+5, idle, ctime(&tvec)+3);
  51.         sprintf(mbuf, " %s root",MAIL );
  52.         if((mprog = popen(mbuf, "w")) == (FILE *) NULL)
  53.             bailout("can't use MAIL program\n", 7);
  54.         fprintf(mprog,"Subject: Can't logoff %s\nCan't Log off - %s %s\ntty = %s\n", name, name, ctime(&tvec), dev+5);
  55.         fclose(mprog);
  56.     }
  57.  
  58.     fclose(log);
  59.     return(0);
  60. }
  61.