home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Internet Tools 1993 July / Internet Tools.iso / RockRidge / mail / pp / pp-6.0 / Uip / rcvalert / ttyalert.c < prev    next >
Encoding:
C/C++ Source or Header  |  1991-12-18  |  1.9 KB  |  114 lines

  1. /* ttyalert.c: simple tty alert program */
  2.  
  3. # ifndef lint
  4. static char Rcsid[] = "@(#)$Header: /xtel/pp/pp-beta/Uip/rcvalert/RCS/ttyalert.c,v 6.0 1991/12/18 20:39:41 jpo Rel $";
  5. # endif
  6.  
  7. /*
  8.  * $Header: /xtel/pp/pp-beta/Uip/rcvalert/RCS/ttyalert.c,v 6.0 1991/12/18 20:39:41 jpo Rel $
  9.  *
  10.  * $Log: ttyalert.c,v $
  11.  * Revision 6.0  1991/12/18  20:39:41  jpo
  12.  * Release 6.0
  13.  *
  14.  */
  15.  
  16.  
  17.  
  18. #include <stdio.h>
  19. #include <isode/manifest.h>
  20. #include "sys.file.h"
  21. #include <sys/stat.h>
  22. #include <utmp.h>
  23. #include <sys/time.h>
  24. #include <pwd.h>
  25. #include <ctype.h>
  26.  
  27. #include "data.h"
  28.  
  29. #ifndef UTMP_FILE
  30. #define UTMP_FILE    "/etc/utmp"
  31. #endif
  32.  
  33. #define OKTONOTIFY    020    /* group write perm */
  34.  
  35. char    displayline[BUFSIZ];
  36. char    from[BUFSIZ];
  37. char    username[40];
  38. char    homedir[512];
  39. char    *extra = "NEW: ";
  40. char    *format = "%extra(%size) %20from %subject << %50body";
  41. int    width = 80;
  42. int    debug = 0;
  43.  
  44. char    *myname;
  45.  
  46. extern char    *index ();
  47.  
  48. main (argc, argv)
  49. int    argc;
  50. char    *argv[];
  51. {
  52.     extern char    *optarg;
  53.     extern int    optind;
  54.     int    opt;
  55.     int size = 0;
  56.  
  57.     myname = argv[0];
  58.     while((opt = getopt(argc, argv, "de:f:s:w:")) != EOF)
  59.         switch (opt) {
  60.             case 'd':
  61.             debug = 1;
  62.             break;
  63.  
  64.             case 'e':
  65.             extra = optarg;
  66.             break;
  67.  
  68.             case 's':
  69.             size = atoi (optarg);
  70.             break;
  71.  
  72.             case 'f':
  73.             format = optarg;
  74.             break;
  75.  
  76.             case 'w':
  77.             width = atoi (optarg);
  78.             break;
  79.  
  80.             default:
  81.             fprintf (stderr, "Usage: %s [-f string] hosts..",
  82.                  myname);
  83.             break;
  84.         }
  85.     argc -= optind;
  86.     argv += optind;
  87.  
  88.     init_stuff ();
  89.  
  90.     parse_msg (displayline, from, format, width, size, extra);
  91.  
  92.     if (debug == 0 && fork () > 0)
  93.         exit (0);
  94.     notify_normal (displayline, username);
  95.     exit (0);
  96. }
  97.  
  98. init_stuff ()
  99. {
  100.     struct passwd *pwd;
  101.     char    *cp, *getenv ();
  102.  
  103.     if ((pwd = getpwuid (getuid())) == NULL) {
  104.         fprintf (stderr, "No user name\n");
  105.         exit(-1);
  106.     }
  107.  
  108.     (void) strcpy (username, pwd -> pw_name);
  109.     if ((cp = getenv ("HOME")) != NULL && *cp)
  110.         (void) strcpy (homedir, cp);
  111.     else
  112.         (void) strcpy (homedir, pwd -> pw_dir);
  113. }
  114.