aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xinit.d.Linux/modules19
-rw-r--r--net.BSD/iwconfig.sh4
-rw-r--r--net.Linux/iwconfig.sh4
-rwxr-xr-xsh/net.sh21
-rw-r--r--src/Makefile3
-rw-r--r--src/rc.c25
6 files changed, 36 insertions, 40 deletions
diff --git a/init.d.Linux/modules b/init.d.Linux/modules
index 4a5c1257..c02510ed 100755
--- a/init.d.Linux/modules
+++ b/init.d.Linux/modules
@@ -30,21 +30,6 @@ depend() {
use isapnp
}
-_shell_var() {
- local rem=$1 c= r= var=
- while [ -n "${rem}" ]; do
- r=${rem#?}
- c=${rem%${r}}
- case "${c}" in
- [a-zA-Z0-9]);;
- *) c=_;;
- esac
- var=${var}${c}
- rem=${r}
- done
- echo ${var}
-}
-
start() {
# Should not fail if kernel do not have module
# support compiled in ...
@@ -59,14 +44,14 @@ start() {
local list= x= args= cnt=0
for x in "${KV}" ${KV_MAJOR}.${KV_MINOR}.${KV_MICRO} ${KV_MAJOR}.${KV_MINOR}; do
- eval list=\$modules_$(_shell_var "${x}")
+ eval list=\$modules_$(shell_var "${x}")
[ -n "${list}" ] && break
done
[ -z "${list}" ] && list=${modules}
for x in ${list}; do
ebegin "Loading module ${x}"
- eval args=\$module_$(_shell_var "${x}")_args
+ eval args=\$module_$(shell_var "${x}")_args
eval modprobe -q "${x}" "${args}"
eend $? "Failed to load ${x}" && cnt=$((${cnt} + 1))
done
diff --git a/net.BSD/iwconfig.sh b/net.BSD/iwconfig.sh
index e784b37f..eb62a83c 100644
--- a/net.BSD/iwconfig.sh
+++ b/net.BSD/iwconfig.sh
@@ -119,7 +119,7 @@ iwconfig_setup_specific() {
iwconfig_set_mode "${mode}" || return 1
- SSIDVAR=$(_shell_var "${SSID}")
+ SSIDVAR=$(shell_var "${SSID}")
local key=$(iwconfig_get_wep_key)
# Now set the key
@@ -140,7 +140,7 @@ iwconfig_associate() {
local mac="$1" channel="$2" caps="$3"
local mode= w="(WEP Disabled)" key=
- SSIDVAR=$(_shell_var "${SSID}")
+ SSIDVAR=$(shell_var "${SSID}")
key=$(iwconfig_get_wep_key "${mac}")
case "${caps}" in
[EI]P*)
diff --git a/net.Linux/iwconfig.sh b/net.Linux/iwconfig.sh
index 272d1fb9..13f43d02 100644
--- a/net.Linux/iwconfig.sh
+++ b/net.Linux/iwconfig.sh
@@ -165,7 +165,7 @@ iwconfig_setup_specific() {
eerror "adjust the ssid_${IFVAR} setting in /etc/conf.d/net"
return 1
fi
- SSIDVAR=$(_shell_var "${SSID}")
+ SSIDVAR=$(shell_var "${SSID}")
local key=$(iwconfig_get_wep_key)
iwconfig_set_mode "${mode}"
@@ -246,7 +246,7 @@ iwconfig_associate() {
iwconfig "${IFACE}" ap any 2>/dev/null
unset SSIDVAR
else
- SSIDVAR=$(_shell_var "${SSID}")
+ SSIDVAR=$(shell_var "${SSID}")
key="$(iwconfig_get_wep_key "${mac}")"
if [ "${wep_required}" = "on" -a "${key}" = "off" ]; then
ewarn "WEP key is not set for \"${SSID}\" - not connecting"
diff --git a/sh/net.sh b/sh/net.sh
index 34ce540b..ef701c6a 100755
--- a/sh/net.sh
+++ b/sh/net.sh
@@ -34,24 +34,9 @@ description="Configures network interfaces."
# Handy var so we don't have to embed new lines everywhere for array splitting
__IFS="
"
-_shell_var() {
- local rem=$1 c= r= var=
- while [ -n "${rem}" ]; do
- r=${rem#?}
- c=${rem%${r}}
- case "${c}" in
- [a-zA-Z0-9]);;
- *) c=_;;
- esac
- var=${var}${c}
- rem=${r}
- done
- echo ${var}
-}
-
depend() {
local IFACE=${SVCNAME#*.}
- local IFVAR=$(_shell_var "${IFACE}")
+ local IFVAR=$(shell_var "${IFACE}")
need localmount
after bootmisc
@@ -454,7 +439,7 @@ _load_config() {
start() {
local IFACE=${SVCNAME#*.} oneworked=false module=
- local IFVAR=$(_shell_var "${IFACE}") cmd= our_metric=
+ local IFVAR=$(shell_var "${IFACE}") cmd= our_metric=
local metric=0
einfo "Bringing up interface ${IFACE}"
@@ -629,7 +614,7 @@ ${routes}"
stop() {
local IFACE=${SVCNAME#*.} module=
- local IFVAR=$(_shell_var "${IFACE}") opts=
+ local IFVAR=$(shell_var "${IFACE}") opts=
einfo "Bringing down interface ${IFACE}"
eindent
diff --git a/src/Makefile b/src/Makefile
index c4e9268a..7b9d5319 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -69,7 +69,8 @@ RC_BINLINKS = einfon einfo ewarnn ewarn eerrorn eerror ebegin eend ewend \
service_inactive service_wasinactive \
service_coldplugged service_started_daemon \
checkpath fstabinfo mountinfo rc-depend \
- service_get_value service_set_value get_options save_options
+ service_get_value service_set_value get_options save_options \
+ shell_var
RC_SBINLINKS = mark_service_starting mark_service_started \
mark_service_stopping mark_service_stopped \
mark_service_inactive mark_service_wasinactive \
diff --git a/src/rc.c b/src/rc.c
index f8c2211b..1bdf588e 100644
--- a/src/rc.c
+++ b/src/rc.c
@@ -457,6 +457,28 @@ static int do_value (int argc, char **argv)
return (ok ? EXIT_SUCCESS : EXIT_FAILURE);
}
+static int do_shell_var (int argc, char **argv)
+{
+ int i;
+
+ for (i = 0; i < argc; i++) {
+ char *p = argv[i];
+
+ if (i != 0)
+ putchar (' ');
+
+ while (*p) {
+ char c = *p++;
+ if (! isalnum (c))
+ c = '_';
+ putchar (c);
+ }
+ }
+ putchar ('\n');
+
+ return (EXIT_SUCCESS);
+}
+
#ifdef __linux__
static char *proc_getent (const char *ent)
{
@@ -903,6 +925,9 @@ int main (int argc, char **argv)
else if (strcmp (applet, "is_runlevel_stop") == 0)
exit (rc_runlevel_stopping () ? 0 : 1);
+ if (strcmp (applet, "shell_var") == 0)
+ exit (do_shell_var (argc, argv));
+
if (strcmp (applet, "rc-abort") == 0) {
char *p = getenv ("RC_PID");
pid_t pid = 0;