diff options
author | Natanael Copa <ncopa@alpinelinux.org> | 2009-08-19 08:32:49 +0000 |
---|---|---|
committer | Natanael Copa <ncopa@alpinelinux.org> | 2009-08-19 08:32:49 +0000 |
commit | 35a5dd67e089a801cb2462e71cddeb00caf86f80 (patch) | |
tree | c5e9192362d11ccb5e94a33a5ec62a11fae138fb /main/busybox/0001-add-simple-beep-applet.patch | |
parent | 87239ae6b56c9bdac3676c2e7c11bc5aedb9855d (diff) | |
download | aports-35a5dd67e089a801cb2462e71cddeb00caf86f80.tar.bz2 aports-35a5dd67e089a801cb2462e71cddeb00caf86f80.tar.xz |
main/busybox: backport of beep applet
Diffstat (limited to 'main/busybox/0001-add-simple-beep-applet.patch')
-rw-r--r-- | main/busybox/0001-add-simple-beep-applet.patch | 155 |
1 files changed, 155 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 0000000000..004d607919 --- /dev/null +++ b/main/busybox/0001-add-simple-beep-applet.patch @@ -0,0 +1,155 @@ +From 23c387cd9d1c833679bee898ef49738be8c64727 Mon Sep 17 00:00:00 2001 +From: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com> +Date: Tue, 18 Aug 2009 22:28:09 +0200 +Subject: [PATCH] add simple beep applet + +Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com> +--- + include/applets.h | 1 + + include/usage.h | 9 ++++++ + miscutils/Config.in | 6 ++++ + miscutils/Kbuild | 1 + + miscutils/beep.c | 70 +++++++++++++++++++++++++++++++++++++++++++++++++++ + 5 files changed, 87 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..ac8669c 100644 +--- a/include/usage.h ++++ b/include/usage.h +@@ -142,6 +142,15 @@ + "$ basename /foo/bar.txt .txt\n" \ + "bar" + ++#define beep_trivial_usage \ ++ "-f freq -l length -d delay -r repetitions" ++#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" \ ++ + #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..4c25454 +--- /dev/null ++++ b/miscutils/beep.c +@@ -0,0 +1,70 @@ ++/* 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) ++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(); ++ llist_t *_freq = NULL, *_length = NULL, *_delay = NULL, *_rep = NULL; ++ unsigned freq, length, delay, rep; ++ unsigned long ioctl_arg; ++ unsigned opt; ++ ++ opt_complementary = "f::l::d::r::"; ++ opt = getopt32(argv, "f:l:d:r:n", &_freq, &_length, &_delay, &_rep); ++ ++ do { ++ if (opt & OPT_f && _freq) ++ freq = xatoul((char*)(llist_pop(&_freq))); ++ else ++ freq = FREQ; ++ if (opt & OPT_l && _length) ++ length = xatoul((char*)(llist_pop(&_length))); ++ else ++ length = LENGTH; ++ if (opt & OPT_d && _delay) ++ delay = xatoul((char*)(llist_pop(&_delay))); ++ else ++ delay = DELAY; ++ if (opt & OPT_r && _rep) ++ rep = xatoul((char*)(llist_pop(&_rep))); ++ else ++ rep = REPETITIONS; ++ ++ while (rep) { ++//bb_info_msg("rep[%d] freq=%d, length=%d, delay=%d\n", 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); ++ } ++ } while (_freq || _length || _delay || _rep); ++ if (ENABLE_FEATURE_CLEAN_UP) ++ close(speaker); ++ return EXIT_SUCCESS; ++} +-- +1.6.4 + |