summaryrefslogtreecommitdiffstats
path: root/main/busybox/0001-add-simple-beep-applet.patch
diff options
context:
space:
mode:
Diffstat (limited to 'main/busybox/0001-add-simple-beep-applet.patch')
-rw-r--r--main/busybox/0001-add-simple-beep-applet.patch205
1 files changed, 205 insertions, 0 deletions
diff --git a/main/busybox/0001-add-simple-beep-applet.patch b/main/busybox/0001-add-simple-beep-applet.patch
new file mode 100644
index 00000000..050f229b
--- /dev/null
+++ b/main/busybox/0001-add-simple-beep-applet.patch
@@ -0,0 +1,205 @@
+From f1ca52c6dacbec39246fca696a597f5dbeca321f Mon Sep 17 00:00:00 2001
+From: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
+Date: Fri, 21 Aug 2009 13:18:31 +0200
+Subject: [PATCH 1/2] add simple beep applet
+
+Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
+---
+ include/applets.h | 1 +
+ include/usage.h | 10 ++++
+ miscutils/Config.in | 6 +++
+ miscutils/Kbuild | 1 +
+ miscutils/beep.c | 119 +++++++++++++++++++++++++++++++++++++++++++++++++++
+ 5 files changed, 137 insertions(+), 0 deletions(-)
+ create mode 100644 miscutils/beep.c
+
+diff --git a/include/applets.h b/include/applets.h
+index 32c596d..5ddbfe4 100644
+--- a/include/applets.h
++++ b/include/applets.h
+@@ -80,6 +80,7 @@ USE_ASH(APPLET(ash, _BB_DIR_BIN, _BB_SUID_NEVER))
+ USE_AWK(APPLET_NOEXEC(awk, awk, _BB_DIR_USR_BIN, _BB_SUID_NEVER, awk))
+ USE_BASENAME(APPLET_NOFORK(basename, basename, _BB_DIR_USR_BIN, _BB_SUID_NEVER, basename))
+ USE_BBCONFIG(APPLET(bbconfig, _BB_DIR_BIN, _BB_SUID_NEVER))
++USE_BEEP(APPLET(beep, _BB_DIR_USR_BIN, _BB_SUID_NEVER))
+ //USE_BBSH(APPLET(bbsh, _BB_DIR_BIN, _BB_SUID_NEVER))
+ USE_BLKID(APPLET(blkid, _BB_DIR_SBIN, _BB_SUID_NEVER))
+ USE_BRCTL(APPLET(brctl, _BB_DIR_USR_SBIN, _BB_SUID_NEVER))
+diff --git a/include/usage.h b/include/usage.h
+index bfacc56..f51b848 100644
+--- a/include/usage.h
++++ b/include/usage.h
+@@ -142,6 +142,16 @@
+ "$ basename /foo/bar.txt .txt\n" \
+ "bar"
+
++#define beep_trivial_usage \
++ "-f freq -l length -d delay -r repetitions -n"
++#define beep_full_usage "\n\n" \
++ "Options:\n" \
++ "\n -f Frequency in Hz" \
++ "\n -l Length in ms" \
++ "\n -d Delay in ms" \
++ "\n -r Repetitions" \
++ "\n -n Start new tone" \
++
+ #define fbsplash_trivial_usage \
+ "-s IMGFILE [-c] [-d DEV] [-i INIFILE] [-f CMD]"
+ #define fbsplash_full_usage "\n\n" \
+diff --git a/miscutils/Config.in b/miscutils/Config.in
+index 7feaf4a..e56a3fc 100644
+--- a/miscutils/Config.in
++++ b/miscutils/Config.in
+@@ -19,6 +19,12 @@ config BBCONFIG
+ The bbconfig applet will print the config file with which
+ busybox was built.
+
++config BEEP
++ bool "beep"
++ default n
++ help
++ The beep applets beeps in a given freq/Hz.
++
+ config CHAT
+ bool "chat"
+ default n
+diff --git a/miscutils/Kbuild b/miscutils/Kbuild
+index 23d7d8d..8cf3406 100644
+--- a/miscutils/Kbuild
++++ b/miscutils/Kbuild
+@@ -7,6 +7,7 @@
+ lib-y:=
+ lib-$(CONFIG_ADJTIMEX) += adjtimex.o
+ lib-$(CONFIG_BBCONFIG) += bbconfig.o
++lib-$(CONFIG_BEEP) += beep.o
+ lib-$(CONFIG_CHAT) += chat.o
+ lib-$(CONFIG_CHRT) += chrt.o
+ lib-$(CONFIG_CROND) += crond.o
+diff --git a/miscutils/beep.c b/miscutils/beep.c
+new file mode 100644
+index 0000000..d5c3531
+--- /dev/null
++++ b/miscutils/beep.c
+@@ -0,0 +1,119 @@
++/* vi: set sw=4 ts=4: */
++/*
++ * beep implementation for busybox
++ *
++ * Copyright (C) 2009 Bernhard Reutner-Fischer
++ *
++ * Licensed under the GPL v2 or later, see the file LICENSE in this tarball.
++ *
++ */
++#include "libbb.h"
++
++#include <linux/kd.h>
++#ifndef CLOCK_TICK_RATE
++#define CLOCK_TICK_RATE 1193180
++#endif
++
++#define OPT_f (1<<0)
++#define OPT_l (1<<1)
++#define OPT_d (1<<2)
++#define OPT_r (1<<3)
++/* defaults */
++#define FREQ (4440)
++#define LENGTH (50)
++#define DELAY (0)
++#define REPETITIONS (1)
++
++#define GET_ARG do { if (!*++opt) opt = *++argv; if (opt == NULL) bb_show_usage();} while (0)
++#define NEW_BEEP() { \
++ freq = FREQ; \
++ length = LENGTH; \
++ delay = DELAY; \
++ rep = REPETITIONS; \
++ }
++
++int beep_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
++int beep_main(int argc UNUSED_PARAM, char **argv)
++{
++ int speaker = get_console_fd_or_die();
++ unsigned freq, length, delay, rep;
++ unsigned long ioctl_arg;
++ char *opt = NULL;
++ bool do_parse = true;
++
++ NEW_BEEP()
++ while (*argv && *++argv) {
++ opt = *argv;
++
++ while (*opt == '-')
++ ++opt;
++ if (do_parse)
++ switch (*opt) {
++ case 'f':
++ GET_ARG;
++ freq = xatoul(opt);
++ continue;
++ case 'l':
++ GET_ARG;
++ length = xatoul(opt);
++ continue;
++ case 'd':
++ GET_ARG;
++ delay = xatoul(opt);
++ continue;
++ case 'r':
++ GET_ARG;
++ rep = xatoul(opt);
++ continue;
++ case 'n':
++ break;
++ default:
++ bb_show_usage();
++ break;
++ }
++ again:
++ while (rep) {
++//bb_info_msg("rep[%d] freq=%d, length=%d, delay=%d", rep, freq, length, delay);
++ ioctl_arg = (int)(CLOCK_TICK_RATE/freq);
++ xioctl(speaker, KIOCSOUND, (void*)ioctl_arg);
++ usleep(1000 * length);
++ ioctl(speaker, KIOCSOUND, 0);
++ if (rep--)
++ usleep(delay);
++ }
++ if (opt && *opt == 'n')
++ NEW_BEEP()
++ if (!do_parse && *argv == NULL)
++ goto out;
++ }
++ do_parse = false;
++ goto again;
++ out:
++ if (ENABLE_FEATURE_CLEAN_UP)
++ close(speaker);
++ return EXIT_SUCCESS;
++}
++/*
++ * so, e.g. Beethoven's 9th symphony "Ode an die Freude" would be
++ * something like:
++a=$((220*3))
++b=$((247*3))
++c=$((262*3))
++d=$((294*3))
++e=$((329*3))
++f=$((349*3))
++g=$((392*3))
++#./beep -f$d -l200 -r2 -n -f$e -l100 -d 10 -n -f$c -l400 -f$g -l200
++./beep -f$e -l200 -r2 \
++ -n -d 100 -f$f -l200 \
++ -n -f$g -l200 -r2 \
++ -n -f$f -l200 \
++ -n -f$e -l200 \
++ -n -f$d -l200 \
++ -n -f$c -l200 -r2 \
++ -n -f$d -l200 \
++ -n -f$e -l200 \
++ -n -f$e -l400 \
++ -n -f$d -l100 \
++ -n -f$d -l200 \
++*/
+--
+1.6.4
+