home *** CD-ROM | disk | FTP | other *** search
- 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; i<sizeof utmp/sizeof utmp[0]; i++) {
- p = &utmp[i];
- if(p->tty[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();
- }
-