Linux supports 32-bit device numbers in the format 0xmmmMMMmm, where
each m is a hex digit of the minor number and each M is a hex digit of
the major number.
Currently parse_lilo only works if the top 3 digits are 0 (or absent).
Shift and mask the upper bits correctly.
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
---
scripts/functions | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/scripts/functions b/scripts/functions
index 2da6173..adcfefa 100644
--- a/scripts/functions
+++ b/scripts/functions
@@ -121,8 +121,8 @@ parse_numeric() {
*)
# [A-Fa-f0-9]*
value=$(( 0x${1} ))
- minor=$(( ${value} % 256 ))
- major=$(( ${value} / 256 ))
+ minor=$(( (${value} & 0xff) | (${value} >> 12) & 0xfff00 ))
+ major=$(( (${value} >> 8) & 0xfff ))
;;
esac
--
Ben Hutchings
Life would be so much easier if we could look at the source code.Attachment:
signature.asc
Description: This is a digitally signed message part