On 23.10.2010 00:16, Randy Dunlap wrote: > On Sat, 23 Oct 2010 00:02:44 +0200 Dick Streefland wrote: > >> Add support for kernels compressed with bzip2, lzma or lzo to the >> extract-ikconfig script. > > Fixes kernel bugzilla #19852: > https://bugzilla.kernel.org/show_bug.cgi?id=19852 Applied to kbuild-2.6.git#misc, thanks. Michal > > >> Signed-off-by: Dick Streefland <dick@xxxxxxxxxxxxxx> >> Tested-by: Justin <jlec@xxxxxxxxxx> >> --- >> >> scripts/extract-ikconfig | 41 +++++++++++++++++++++++++++-------------- >> 1 files changed, 27 insertions(+), 14 deletions(-) >> >> diff --git a/scripts/extract-ikconfig b/scripts/extract-ikconfig >> index 37f30d3..1512c0a 100755 >> --- a/scripts/extract-ikconfig >> +++ b/scripts/extract-ikconfig >> @@ -7,12 +7,10 @@ >> # 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. >> # >> -# (c) 2009, Dick Streefland <dick@xxxxxxxxxxxxxx> >> +# (c) 2009,2010 Dick Streefland <dick@xxxxxxxxxxxxxx> >> # Licensed under the terms of the GNU General Public License. >> # ---------------------------------------------------------------------- >> >> -gz1='\037\213\010' >> -gz2='01' >> cf1='IKCFG_ST\037\213\010' >> cf2='0123456789' >> >> @@ -21,11 +19,25 @@ dump_config() >> if pos=`tr "$cf1\n$cf2" "\n$cf2=" < "$1" | grep -abo "^$cf2"` >> then >> pos=${pos%%:*} >> - tail -c+$(($pos+8)) "$1" | zcat -q >> - exit 0 >> + 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 >> fi >> } >> >> +try_decompress() >> +{ >> + for pos in `tr "$1\n$2" "\n$2=" < "$img" | grep -abo "^$2"` >> + do >> + pos=${pos%%:*} >> + tail -c+$pos "$img" | $3 > $tmp2 2> /dev/null >> + dump_config $tmp2 >> + done >> +} >> + >> # Check invocation: >> me=${0##*/} >> img=$1 >> @@ -35,18 +47,19 @@ then >> exit 2 >> fi >> >> +# Prepare temp files: >> +tmp1=/tmp/ikconfig$$.1 >> +tmp2=/tmp/ikconfig$$.2 >> +trap "rm -f $tmp1 $tmp2" 0 >> + >> # Initial attempt for uncompressed images or objects: >> dump_config "$img" >> >> -# That didn't work, so decompress and try again: >> -tmp=/tmp/ikconfig$$ >> -trap "rm -f $tmp" 0 >> -for pos in `tr "$gz1\n$gz2" "\n$gz2=" < "$img" | grep -abo "^$gz2"` >> -do >> - pos=${pos%%:*} >> - tail -c+$pos "$img" | zcat 2> /dev/null > $tmp >> - dump_config $tmp >> -done >> +# That didn't work, so retry after decompression. >> +try_decompress '\037\213\010' xy gunzip >> +try_decompress 'BZh' xy bunzip2 >> +try_decompress '\135\0\0\0' xxx unlzma >> +try_decompress '\211\114\132' xy 'lzop -d' >> >> # Bail out: >> echo "$me: Cannot find kernel config." >&2 >> -- > > > --- > ~Randy > *** Remember to use Documentation/SubmitChecklist when testing your code *** > -- > To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html