From patchwork Fri Oct 22 22:02:44 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dick Streefland X-Patchwork-Id: 278131 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 o9MMFNe6030265 for ; Fri, 22 Oct 2010 22:15:27 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752863Ab0JVWPV (ORCPT ); Fri, 22 Oct 2010 18:15:21 -0400 Received: from 59-72-223.ftth.xms.internl.net ([85.223.72.59]:54083 "EHLO salamandra.streefland.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752802Ab0JVWPV (ORCPT ); Fri, 22 Oct 2010 18:15:21 -0400 X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.3 (demeter1.kernel.org [140.211.167.41]); Fri, 22 Oct 2010 22:15:28 +0000 (UTC) X-Greylist: delayed 754 seconds by postgrey-1.27 at vger.kernel.org; Fri, 22 Oct 2010 18:15:21 EDT Received: from zarniwoop (zarniwoop [10.0.0.5]) by salamandra.streefland.net (Postfix) with ESMTP id CA59540041; Sat, 23 Oct 2010 00:02:44 +0200 (CEST) Received: by zarniwoop (Postfix, from userid 1000) id 9E882F6B40; Sat, 23 Oct 2010 00:02:44 +0200 (CEST) Date: Sat, 23 Oct 2010 00:02:44 +0200 From: Dick Streefland To: linux-kbuild@vger.kernel.org Cc: Michal Marek Subject: scripts/extract-ikconfig: add support for bzip2, lzma and lzo Message-ID: <20101022220244.GA28887@streefland.net> MIME-Version: 1.0 Content-Disposition: inline User-Agent: Mutt/1.5.18 (2008-05-17) 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..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 +# (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 + 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