Blame view
scripts/extract-ikconfig
1.64 KB
1da177e4c Linux-2.6.12-rc2 |
1 |
#!/bin/sh |
7b76bfc86 kconfig: simplifi... |
2 3 4 5 6 7 8 9 |
# ---------------------------------------------------------------------- # extract-ikconfig - Extract the .config file from a kernel image # # This will only work when the kernel was compiled with CONFIG_IKCONFIG. # # The obscure use of the "tr" filter is to work around older versions of # "grep" that report the byte offset of the line instead of the pattern. # |
532cf2907 scripts/extract-i... |
10 |
# (c) 2009,2010 Dick Streefland <dick@streefland.net> |
7b76bfc86 kconfig: simplifi... |
11 12 |
# Licensed under the terms of the GNU General Public License. # ---------------------------------------------------------------------- |
7b76bfc86 kconfig: simplifi... |
13 14 15 16 |
cf1='IKCFG_ST\037\213\010' cf2='0123456789' dump_config() |
1da177e4c Linux-2.6.12-rc2 |
17 |
{ |
7b76bfc86 kconfig: simplifi... |
18 19 20 21 22 |
if pos=`tr "$cf1 $cf2" " $cf2=" < "$1" | grep -abo "^$cf2"` then pos=${pos%%:*} |
532cf2907 scripts/extract-i... |
23 24 25 26 27 28 |
tail -c+$(($pos+8)) "$1" | zcat > $tmp1 2> /dev/null if [ $? != 1 ] then # exit status must be 0 or 2 (trailing garbage warning) cat $tmp1 exit 0 fi |
1da177e4c Linux-2.6.12-rc2 |
29 30 |
fi } |
532cf2907 scripts/extract-i... |
31 32 33 34 35 36 37 38 39 40 41 |
try_decompress() { for pos in `tr "$1 $2" " $2=" < "$img" | grep -abo "^$2"` do pos=${pos%%:*} tail -c+$pos "$img" | $3 > $tmp2 2> /dev/null dump_config $tmp2 done } |
7b76bfc86 kconfig: simplifi... |
42 43 44 45 |
# Check invocation: me=${0##*/} img=$1 if [ $# -ne 1 -o ! -s "$img" ] |
1da177e4c Linux-2.6.12-rc2 |
46 |
then |
7b76bfc86 kconfig: simplifi... |
47 48 |
echo "Usage: $me <kernel-image>" >&2 exit 2 |
1da177e4c Linux-2.6.12-rc2 |
49 |
fi |
532cf2907 scripts/extract-i... |
50 51 52 53 |
# Prepare temp files: tmp1=/tmp/ikconfig$$.1 tmp2=/tmp/ikconfig$$.2 trap "rm -f $tmp1 $tmp2" 0 |
7b76bfc86 kconfig: simplifi... |
54 55 |
# Initial attempt for uncompressed images or objects: dump_config "$img" |
532cf2907 scripts/extract-i... |
56 |
# That didn't work, so retry after decompression. |
ab94e4666 scripts/extract-i... |
57 58 59 60 61 |
try_decompress '\037\213\010' xy gunzip try_decompress '\3757zXZ\000' abcde unxz try_decompress 'BZh' xy bunzip2 try_decompress '\135\0\0\0' xxx unlzma try_decompress '\211\114\132' xy 'lzop -d' |
7b76bfc86 kconfig: simplifi... |
62 63 64 |
# Bail out: echo "$me: Cannot find kernel config." >&2 |
1da177e4c Linux-2.6.12-rc2 |
65 |
exit 1 |