From patchwork Mon Oct 11 22:12:11 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dick Streefland X-Patchwork-Id: 246561 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by demeter1.kernel.org (8.14.4/8.14.3) with ESMTP id o9BMUDmL015320 for ; Mon, 11 Oct 2010 22:30:13 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756749Ab0JKWaN (ORCPT ); Mon, 11 Oct 2010 18:30:13 -0400 Received: from webmail10.mail.sp.isp-net.nl ([217.149.192.62]:63365 "EHLO webmail10.mail.sp.isp-net.nl" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756737Ab0JKWaM (ORCPT ); Mon, 11 Oct 2010 18:30:12 -0400 X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.3 (demeter1.kernel.org [140.211.167.41]); Mon, 11 Oct 2010 22:30:13 +0000 (UTC) X-Greylist: delayed 1077 seconds by postgrey-1.27 at vger.kernel.org; Mon, 11 Oct 2010 18:30:11 EDT Received: from salamandra.streefland.net by webmail10.mail.sp.isp-net.nl via 59-72-223.ftth.xms.internl.net [85.223.72.59] with ESMTP id o9BMCBsu021660 (8.13.2/2.04); Tue, 12 Oct 2010 00:12:11 +0200 (MEST) Received: from zarniwoop (zarniwoop [10.0.0.5]) by salamandra.streefland.net (Postfix) with ESMTP id 7104A4047F; Tue, 12 Oct 2010 00:12:11 +0200 (CEST) Received: by zarniwoop (Postfix, from userid 1000) id 61907F6D75; Tue, 12 Oct 2010 00:12:11 +0200 (CEST) Date: Tue, 12 Oct 2010 00:12:11 +0200 From: Dick Streefland To: Randy Dunlap Cc: linux-kbuild@vger.kernel.org Subject: Re: [Bugme-new] [Bug 19852] New: extract-ikconfig only works with gzip'ed kernel images Message-ID: <20101011221211.GC5577@streefland.net> References: <20101010101904.b20bf9c8.rdunlap@xenotime.net> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20101010101904.b20bf9c8.rdunlap@xenotime.net> User-Agent: Mutt/1.5.18 (2008-05-17) X-Language-Detected: ca X-Language-Detected: en X-Spam-Scanned: InterNLnet Mail Scan System V2.03 Sender: linux-kbuild-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kbuild@vger.kernel.org diff --git a/scripts/extract-ikconfig b/scripts/extract-ikconfig index 37f30d3..d27589a 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 +# (c) 2009,2010 Dick Streefland # 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 + case $? in + 2) # there will be a warning about trailing garbage + cat $tmp1 + exit 0 + esac 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