--- beep.c.orig 2005-07-23 13:37:01.000000000 -0400 +++ beep.c 2005-07-23 14:00:55.000000000 -0400 @@ -218,22 +218,20 @@ int i; /* loop counter */ /* try to snag the console */ - if((console_fd = open("/dev/console", O_WRONLY)) == -1) { - fprintf(stderr, "Could not open /dev/console for writing.\n"); - printf("\a"); /* Output the only beep we can, in an effort to fall back on usefulness */ - perror("open"); - exit(1); - } + console_fd = open("/dev/console", O_WRONLY); /* Beep */ for (i = 0; i < parms.reps; i++) { /* start beep */ - if(ioctl(console_fd, KIOCSOUND, (int)(CLOCK_TICK_RATE/parms.freq)) < 0) { - printf("\a"); /* Output the only beep we can, in an effort to fall back on usefulness */ - perror("ioctl"); + if (console_fd >= 0) { + ioctl(console_fd, KIOCSOUND, (int)(CLOCK_TICK_RATE/parms.freq)); + } else { + printf("\a"); /* Output the fall back for usefulness we don't have to be suid to work at all */ + fflush(stdout); } /* Look ma, I'm not ansi C compatible! */ usleep(1000*parms.length); /* wait... */ - ioctl(console_fd, KIOCSOUND, 0); /* stop beep */ + if (console_fd >= 0) + ioctl(console_fd, KIOCSOUND, 0); /* stop beep */ if(parms.end_delay || (i+1 < parms.reps)) usleep(1000*parms.delay); /* wait... */ } /* repeat. */