From 275c1abaaa0055364a954127fb1ab710ff392ed6 Mon Sep 17 00:00:00 2001 From: Nicolas Appriou Date: Sat, 13 Oct 2012 19:51:00 +0200 Subject: [PATCH 1/2] Add a infinite beep sequence loop option. --- beep.1.gz | Bin 3327 -> 3364 bytes beep.c | 30 +++++++++++++++++++++++++----- 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/beep.1.gz b/beep.1.gz index 800f92cb6af5c5d41f087e7866a1274dfe21d76c..008217c324afc195acb980ae43ef06317ef46d69 100644 GIT binary patch literal 3364 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 literal 3327 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" (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) + * "-i/--infinite" next = first_parm; if (result->freq == 0) result->freq = DEFAULT_FREQ; } @@ -312,6 +323,8 @@ void play_beep(beep_parms_t parms) { int main(int argc, char **argv) { char sin[4096], *ptr; + int infinite = NO_INFINITE; + int save_reps = 0; beep_parms_t *parms = (beep_parms_t *)malloc(sizeof(beep_parms_t)); parms->freq = 0; @@ -324,7 +337,7 @@ int main(int argc, char **argv) { parms->next = NULL; signal(SIGINT, handle_signal); - parse_command_line(argc, argv, parms); + parse_command_line(argc, argv, parms, &infinite); /* this outermost while loop handles the possibility that -n/--new has been used, i.e. that we have multiple beeps specified. Each iteration will @@ -332,6 +345,9 @@ int main(int argc, char **argv) { while(parms) { beep_parms_t *next = parms->next; + if (infinite) + save_reps = parms->reps; + if(parms->stdin_beep) { /* in this case, beep is probably part of a pipe, in which case POSIX says stdin and out should be fuly buffered. This however means very @@ -359,7 +375,10 @@ int main(int argc, char **argv) { } /* Junk each parms struct after playing it */ - free(parms); + if (infinite) + parms->reps = save_reps; + else + free(parms); parms = next; } @@ -368,3 +387,4 @@ int main(int argc, char **argv) { return EXIT_SUCCESS; } + From 3d92897e005a32ae4cd7014c5cbce79bfcc6967c Mon Sep 17 00:00:00 2001 From: Nicolas Appriou Date: Thu, 7 Feb 2013 12:57:22 +0100 Subject: [PATCH 2/2] also catch SIGTERM for stopping the beep Thanks to Jerome-github --- beep.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/beep.c b/beep.c index 0e65e6c..5ef88b7 100644 --- a/beep.c +++ b/beep.c @@ -133,6 +133,7 @@ void handle_signal(int signum) { switch(signum) { case SIGINT: + case SIGTERM: if(console_fd >= 0) { /* Kill the sound, quit gracefully */ do_beep(0); @@ -337,6 +338,7 @@ int main(int argc, char **argv) { parms->next = NULL; signal(SIGINT, handle_signal); + signal(SIGTERM, handle_signal); parse_command_line(argc, argv, parms, &infinite); /* this outermost while loop handles the possibility that -n/--new has been