wok view linux-source/stuff/rdev @ rev 13211

linux-source/rdev: use device name
author Pascal Bellard <pascal.bellard@slitaz.org>
date Tue Aug 07 17:35:57 2012 +0200 (2012-08-07)
parents f5438bbbdb73
children e36062a9b169
line source
1 #!/bin/sh
3 devname()
4 {
5 d=$(find /dev -type b | while read b ; do
6 [ "$(stat -c %02t%02T $b)" == "$1" ] && echo $b && break
7 done)
8 [ -n "$d" ] && echo $d || echo 0x$1
9 }
11 sw=""
12 case "$0" in
13 *rootflags) sw="-R" ;;
14 *ramsize) sw="-r" ;;
15 *vidmode) sw="-v" ;;
16 esac
17 [ -n "$sw" ] && set -- $sw "$@"
19 ofs=508
20 img=
21 val=
22 fmt=
23 while [ -n "$1" ]; do
24 case "$1" in
25 -R) ofs=498; fmt="Root flags" ;;
26 -r) ofs=504; fmt="Ramsize" ;;
27 -v) ofs=506; fmt="Video mode" ;;
28 -o) ofs=$(($2)); shift ;;
29 *-h*) echo "Usage: rdev [-Rrvh] [-o offset] [kernel [data [offset]]]"
30 exit 1 ;;
31 *) if [ -z "$img" ]; then
32 img="$1"
33 elif [ -z "$val" ]; then
34 [ "${1:0:5}" == "/dev/" ] && val=0x$(stat -c %t%02T $1)
35 val=$((${val:-$1}))
36 else
37 ofs=$(($1))
38 fi
39 esac
40 shift
41 done
43 dd="dd bs=1 conv=notrunc count=2"
44 if [ ! -s "$img" ]; then
45 echo $(devname $(stat -c %04D /)) /
46 elif [ -n "$val" ]; then
47 for i in 1 2; do
48 printf '\\\\x%02X' $(($val & 255))
49 val=$(($val >> 8))
50 done | xargs echo -en | $dd of=$img seek=$ofs
51 elif [ -n "$fmt" ]; then
52 $dd if=$img skip=$ofs | hexdump -e "\"\" 1/2 \"$fmt %u\" \"\n\""
53 else
54 echo -n "Root device "
55 devname $($dd if=$img skip=$ofs | hexdump -e '"" 1/2 "%04X" "\n"')
56 fi 2>/dev/null