aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohn Crispin <blogic@openwrt.org>2013-11-25 08:34:55 +0000
committerJohn Crispin <blogic@openwrt.org>2013-11-25 08:34:55 +0000
commit3b4cd0a50e56e34fb380ed91beebd7a8a4842a91 (patch)
treeec6a098e2b094644a815a3bf360653e07ad3faab
parent944e1ee1684ca46d7bef0e5c1ac544ac1b70dfaf (diff)
downloadupstream-3b4cd0a50e56e34fb380ed91beebd7a8a4842a91.tar.gz
upstream-3b4cd0a50e56e34fb380ed91beebd7a8a4842a91.tar.bz2
upstream-3b4cd0a50e56e34fb380ed91beebd7a8a4842a91.zip
base-files: allow users to delect debug level during boot
Signed-off-by: John Crispin <blogic@openwrt.org> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@38909 3c298f89-4303-0410-b956-a3cf2f4a3e73
-rwxr-xr-xpackage/base-files/files/lib/functions.sh20
-rw-r--r--package/base-files/files/lib/preinit/30_failsafe_wait25
-rw-r--r--package/system/procd/Makefile4
-rwxr-xr-xpackage/utils/busybox/files/cron19
-rw-r--r--target/linux/ramips/base-files/etc/hotplug.d/firmware/10-rt2x00-eeprom3
5 files changed, 60 insertions, 11 deletions
diff --git a/package/base-files/files/lib/functions.sh b/package/base-files/files/lib/functions.sh
index 85ebc2aeb1..6f23e0b8b2 100755
--- a/package/base-files/files/lib/functions.sh
+++ b/package/base-files/files/lib/functions.sh
@@ -260,6 +260,26 @@ mtd_get_mac_ascii()
[ -n "$mac_dirty" ] && macaddr_canonicalize "$mac_dirty"
}
+mtd_get_blob()
+{
+ local mtdname="$1"
+ local offset="$2"
+ local count="$3"
+ local firmware="$4"
+ local part
+
+ part=$(find_mtd_part "$mtdname")
+ if [ -z "$part" ]; then
+ echo "mtd_get_blob: partition $mtdname not found!" >&2
+ return 1
+ fi
+
+ dd if=$part of=$firmware bs=1 skip=$offset count=$count 2>/dev/null || {
+ echo "mtd_get_blob: failed to extract $firmware from $part" >&2
+ return 1
+ }
+}
+
mtd_get_mac_binary() {
local mtdname="$1"
local offset="$2"
diff --git a/package/base-files/files/lib/preinit/30_failsafe_wait b/package/base-files/files/lib/preinit/30_failsafe_wait
index 6bce8ae49f..522565940c 100644
--- a/package/base-files/files/lib/preinit/30_failsafe_wait
+++ b/package/base-files/files/lib/preinit/30_failsafe_wait
@@ -5,7 +5,7 @@
fs_wait_for_key () {
local timeout=$3
local timer
- local do_failsafe
+ local do_keypress
local keypress_true="$(mktemp)"
local keypress_wait="$(mktemp)"
local keypress_sec="$(mktemp)"
@@ -40,6 +40,7 @@ fs_wait_for_key () {
} &
echo "Press the [$1] key and hit [enter] $2"
+ echo "Press the [1], [2], [3] or [4] key and hit [enter] to select the debug level"
# if we're on the console we wait for input
{
while [ -r $keypress_wait ]; do
@@ -48,14 +49,22 @@ fs_wait_for_key () {
[ -n "$timer" ] || timer=1
timer="${timer%%\ *}"
[ $timer -ge 1 ] || timer=1
- do_failsafe=""
+ do_keypress=""
{
- read -t "$timer" do_failsafe
- if [ "$do_failsafe" = "$1" ]; then
- echo "true" >$keypress_true
- lock -u $keypress_wait
- rm -f $keypress_wait
- fi
+ read -t "$timer" do_keypress
+ case "$do_keypress" in
+ $1)
+ echo "true" >$keypress_true
+ ;;
+ 1 | 2 | 3 | 4)
+ echo "$do_keypress" >/tmp/debug_level
+ ;;
+ *)
+ continue;
+ ;;
+ esac
+ lock -u $keypress_wait
+ rm -f $keypress_wait
}
done
}
diff --git a/package/system/procd/Makefile b/package/system/procd/Makefile
index 6414f3cce9..3d4cedc353 100644
--- a/package/system/procd/Makefile
+++ b/package/system/procd/Makefile
@@ -1,14 +1,14 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=procd
-PKG_VERSION:=2013-11-20
+PKG_VERSION:=2013-11-22
PKG_RELEASE=$(PKG_SOURCE_VERSION)
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=git://nbd.name/luci2/procd.git
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE_VERSION:=21d307367eb991f7494ce43087a5edb94288d08f
+PKG_SOURCE_VERSION:=dc3988c38546c37a02030af8201048272caa7ded
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
CMAKE_INSTALL:=1
diff --git a/package/utils/busybox/files/cron b/package/utils/busybox/files/cron
index 5e6b4bf3fe..8f54527805 100755
--- a/package/utils/busybox/files/cron
+++ b/package/utils/busybox/files/cron
@@ -6,10 +6,24 @@ START=50
USE_PROCD=1
PROG=/usr/sbin/crond
+validate_cron_section() {
+ uci_validate_section system system "${1}" \
+ 'cronloglevel:uinteger'
+}
+
start_service () {
[ -z "$(ls /etc/crontabs/)" ] && return 1
loglevel=$(uci_get "system.@system[0].cronloglevel")
+
+ [ -z "${loglevel}" ] || {
+ /sbin/validate_data uinteger "${loglevel}"
+ [ "$?" -eq 0 ] || {
+ echo "validation failed"
+ return 1
+ }
+ }
+
mkdir -p /var/spool/cron
ln -s /etc/crontabs /var/spool/cron/ 2>/dev/null
@@ -17,3 +31,8 @@ start_service () {
procd_set_param command "$PROG" -f -c /etc/crontabs -l ${loglevel:-5}
procd_close_instance
}
+
+service_triggers()
+{
+ procd_add_validation validate_cron_section
+}
diff --git a/target/linux/ramips/base-files/etc/hotplug.d/firmware/10-rt2x00-eeprom b/target/linux/ramips/base-files/etc/hotplug.d/firmware/10-rt2x00-eeprom
index 40e17968cd..d3e0242355 100644
--- a/target/linux/ramips/base-files/etc/hotplug.d/firmware/10-rt2x00-eeprom
+++ b/target/linux/ramips/base-files/etc/hotplug.d/firmware/10-rt2x00-eeprom
@@ -21,7 +21,8 @@ rt2x00_eeprom_extract() {
rt2x00_eeprom_die "failed to extract from $mtd"
}
-[ -e /lib/firmware/$FIRMWARE ] && exit 0
+FW="/lib/firmware/$FIRMWARE"
+[ -e "$FW" ] && exit 0
. /lib/ramips.sh