1: #include <stdio.h>
   2: #include <utmp.h>
   3: #define USERS   50
   4: 
   5: char    mesg[3000];
   6: int msize;
   7: struct  utmp utmp[USERS];
   8: char    *strcpy();
   9: char    *strcat();
  10: 
  11: main(argc, argv)
  12: char *argv[];
  13: {
  14:     register i;
  15:     register struct utmp *p;
  16:     FILE *f;
  17: 
  18:     if((f = fopen("/etc/utmp", "r")) == NULL) {
  19:         fprintf(stderr, "Cannot open /etc/utmp\n");
  20:         exit(1);
  21:     }
  22:     fread((char *)utmp, sizeof(struct utmp), USERS, f);
  23:     fclose(f);
  24:     f = stdin;
  25:     if(argc >= 2) {
  26:         if((f = fopen(argv[1], "r")) == NULL) {
  27:             fprintf(stderr,"Cannot open %s\n", argv[1]);
  28:             exit(1);
  29:         }
  30:     }
  31:     while((i = getc(f)) != EOF) mesg[msize++] = i;
  32:     fclose(f);
  33:     for(i=0; i<USERS; i++) {
  34:         p = &utmp[i];
  35:         if(p->ut_name[0] == 0)
  36:             continue;
  37:         sleep(1);
  38:         sendmes(p->ut_line);
  39:     }
  40:     exit(0);
  41: }
  42: 
  43: sendmes(tty)
  44: char *tty;
  45: {
  46:     register i;
  47:     char t[50], buf[BUFSIZ];
  48:     FILE *f;
  49: 
  50:     i = fork();
  51:     if(i == -1) {
  52:         fprintf(stderr, "Try again\n");
  53:         return;
  54:     }
  55:     if(i)
  56:         return;
  57:     strcpy(t, "/dev/");
  58:     strcat(t, tty);
  59: 
  60:     if((f = fopen(t, "w")) == NULL) {
  61:         fprintf(stderr,"cannot open %s\n", t);
  62:         exit(1);
  63:     }
  64:     setbuf(f, buf);
  65:     fprintf(f, "Broadcast Message ...\n\n");
  66:     fwrite(mesg, msize, 1, f);
  67:     exit(0);
  68: }

Defined functions

main defined in line 11; never used
sendmes defined in line 43; used 1 times
  • in line 38

Defined variables

mesg defined in line 5; used 2 times
msize defined in line 6; used 2 times
utmp defined in line 7; used 2 times

Defined macros

USERS defined in line 3; used 3 times
Last modified: 1979-01-10
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 611
Valid CSS Valid XHTML 1.0 Strict