summaryrefslogtreecommitdiff
path: root/scripts/functions
diff options
context:
space:
mode:
authorBen Hutchings <ben@decadent.org.uk>2015-12-11 18:45:13 +0000
committerBen Hutchings <ben@decadent.org.uk>2015-12-11 18:45:13 +0000
commitad90a289d30b7e9e0522b297f717b3e363ee4ab7 (patch)
tree2ccc33c71196435d2c6ec5e23749f8431a5d1a51 /scripts/functions
parentdf86688b1e35d80c565eeb26c3c5d7e6664c4a83 (diff)
parent88f98b5c2345c574763f219afeecf42074d580c7 (diff)
Merge branch 'benh/parse-numeric-fixes'
Diffstat (limited to 'scripts/functions')
-rw-r--r--scripts/functions36
1 files changed, 17 insertions, 19 deletions
diff --git a/scripts/functions b/scripts/functions
index aa53010..fa2de6e 100644
--- a/scripts/functions
+++ b/scripts/functions
@@ -103,32 +103,30 @@ load_modules()
# lilo compatibility
parse_numeric() {
case $1 in
- "")
- return
+ *:*)
+ # Does it match /[0-9]*:[0-9]*/?
+ minor=${1#*:}
+ major=${1%:*}
+ case $major$minor in
+ *[!0-9]*)
+ # No.
+ return
+ ;;
+ esac
;;
- /*)
+ "" | *[!A-Fa-f0-9]*)
+ # "", "/*", etc.
return
;;
- [0-9]*:[0-9]*)
- minor=$(( ${1#*:} ))
- major=$(( ${1%:*} ))
- ;;
- [A-Fa-f0-9]*)
- value=$(( 0x${1} ))
- minor=$(( ${value} % 256 ))
- major=$(( ${value} / 256 ))
- ;;
*)
- return
+ # [A-Fa-f0-9]*
+ value=$(( 0x${1} ))
+ minor=$(( (${value} & 0xff) | (${value} >> 12) & 0xfff00 ))
+ major=$(( (${value} >> 8) & 0xfff ))
;;
esac
- if command -v udevd >/dev/null 2>&1; then
- ROOT=/dev/block/${major}:${minor}
- else
- mknod -m 600 /dev/root b ${major} ${minor}
- ROOT=/dev/root
- fi
+ ROOT="$(readlink -f /dev/block/${major}:${minor})"
}
# Parameter: device node to check