char mesg[3000]; int msize; struct { char name[8]; char tty[2]; int time[2]; int junk; } utmp[50]; main(argc, argv) char *argv[]; { register i, *p; int f; f = open("/etc/utmp", 0); if(f < 0) { printf("utmp?\n"); exit(); } read(f, utmp, sizeof utmp); close(f); f = 0; if(argc >= 2) { f = open(argv[1], 0); if(f < 0) { printf("%s?\n", argv[1]); exit(); } } while((i = read(f, &mesg[msize], sizeof mesg - msize)) > 0) msize =+ i; close(f); for(i=0; itty[0] == 0) continue; sleep(1); sendmes(p->tty[0]); } } sendmes(tty) { register i; register char *s; i = fork(); if(i == -1) { printf("try again\n"); return; } if(i) return; s = "/dev/ttyx"; s[8] = tty; i = open(s, 1); if(i < 0) { printf("cannot open tty%c\n", tty); exit(); } close(1); dup(i); printf("Broadcast Message ...\n\n"); write(1, mesg, msize); exit(); }