]> git.deb.at Git - pkg/beep.git/blobdiff - beep.c
Imported Debian patch 1.2.2-16
[pkg/beep.git] / beep.c
diff --git a/beep.c b/beep.c
index f80eb7648c9b6fee6c2d76b59635b49a2f541310..6b5b88534621edb0bc2125329239e8c5071df0fa 100644 (file)
--- a/beep.c
+++ b/beep.c
@@ -83,6 +83,7 @@ typedef struct beep_parms_t {
                     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;
 
@@ -131,6 +132,7 @@ void usage_bail(const char *executable_name) {
  *  "-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"
@@ -141,9 +143,11 @@ void usage_bail(const char *executable_name) {
 void parse_command_line(int argc, char **argv, beep_parms_t *result) {
   int c;
 
-  struct option opt_list[4] = {{"help", 0, NULL, 'h'},
+  struct option opt_list[6] = {{"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) {
@@ -155,6 +159,9 @@ void parse_command_line(int argc, char **argv, beep_parms_t *result) {
         (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 */
@@ -197,16 +204,22 @@ void parse_command_line(int argc, char **argv, beep_parms_t *result) {
       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       = DEFAULT_FREQ;
+      result->next->freq       = 0;
       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]);
@@ -217,6 +230,11 @@ void parse_command_line(int argc, char **argv, beep_parms_t *result) {
 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) {
@@ -249,12 +267,13 @@ int main(int argc, char **argv) {
   char sin[4096], *ptr;
   
   beep_parms_t *parms = (beep_parms_t *)malloc(sizeof(beep_parms_t));
-  parms->freq       = DEFAULT_FREQ;
+  parms->freq       = 0;
   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);