so that beep can be tucked appropriately into a text-
processing pipe.
*/
- int verbose; /* verbose output? */
struct beep_parms_t *next; /* in case -n/--new is used. */
} beep_parms_t;
* "-D <delay in ms>" (similar to -d, but delay after last repetition as well)
* "-s" (beep after each line of input from stdin, echo line to stdout)
* "-c" (beep after each char of input from stdin, echo char to stdout)
- * "--verbose/--debug"
* "-h/--help"
* "-v/-V/--version"
* "-n/--new"
void parse_command_line(int argc, char **argv, beep_parms_t *result) {
int c;
- struct option opt_list[6] = {{"help", 0, NULL, 'h'},
+ struct option opt_list[4] = {{"help", 0, NULL, 'h'},
{"version", 0, NULL, 'V'},
{"new", 0, NULL, 'n'},
- {"verbose", 0, NULL, 'X'},
- {"debug", 0, NULL, 'X'},
{0,0,0,0}};
while((c = getopt_long(argc, argv, "f:l:r:d:D:schvVn", opt_list, NULL))
!= EOF) {
(argfreq <= 0))
usage_bail(argv[0]);
else
- if (result->freq != 0)
- fprintf(stderr, "WARNING: multiple -f values given, only last "
- "one is used.\n");
result->freq = argfreq;
break;
case 'l' : /* length */
exit(0);
break;
case 'n' : /* also --new - create another beep */
- if (result->freq == 0)
- result->freq = DEFAULT_FREQ;
result->next = (beep_parms_t *)malloc(sizeof(beep_parms_t));
- result->next->freq = 0;
+ result->next->freq = DEFAULT_FREQ;
result->next->length = DEFAULT_LENGTH;
result->next->reps = DEFAULT_REPS;
result->next->delay = DEFAULT_DELAY;
result->next->end_delay = DEFAULT_END_DELAY;
result->next->stdin_beep = DEFAULT_STDIN_BEEP;
- result->next->verbose = result->verbose;
result->next->next = NULL;
result = result->next; /* yes, I meant to do that. */
break;
- case 'X' : /* --debug / --verbose */
- result->verbose = 1;
- break;
case 'h' : /* notice that this is also --help */
default :
usage_bail(argv[0]);
void play_beep(beep_parms_t parms) {
int i; /* loop counter */
- if(parms.verbose == 1)
- fprintf(stderr, "[DEBUG] %d times %d ms beeps (%d delay between, "
- "%d delay after) @ %.2f Hz\n",
- parms.reps, parms.length, parms.delay, parms.end_delay, parms.freq);
-
/* try to snag the console */
- if((console_fd = open("/dev/tty0", O_WRONLY)) == -1) {
- if((console_fd = open("/dev/vc/0", O_WRONLY)) == -1) {
- fprintf(stderr, "Could not open /dev/tty0 or /dev/vc/0 for writing.\n");
- printf("\a"); /* Output the only beep we can, in an effort to fall back on usefulness */
- perror("open");
- exit(1);
- }
+ 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);
}
/* Beep */
char sin[4096], *ptr;
beep_parms_t *parms = (beep_parms_t *)malloc(sizeof(beep_parms_t));
- parms->freq = 0;
+ parms->freq = DEFAULT_FREQ;
parms->length = DEFAULT_LENGTH;
parms->reps = DEFAULT_REPS;
parms->delay = DEFAULT_DELAY;
parms->end_delay = DEFAULT_END_DELAY;
parms->stdin_beep = DEFAULT_STDIN_BEEP;
- parms->verbose = 0;
parms->next = NULL;
signal(SIGINT, handle_signal);