#!/bin/sh
# extracts .config info from a [b]zImage file
# uses: binoffset (new), dd, zcat, strings, grep
# $arg1 is [b]zImage filename

binoffset="./scripts/binoffset"
test -e $binoffset || cc -o $binoffset ./scripts/binoffset.c || exit 1

IKCFG_ST="0x49 0x4b 0x43 0x46 0x47 0x5f 0x53 0x54"
IKCFG_ED="0x49 0x4b 0x43 0x46 0x47 0x5f 0x45 0x44"
dump_config() {
    file="$1"

    start=`$binoffset $file $IKCFG_ST 2>/dev/null`
    [ "$?" != "0" ] && start="-1"
    if [ "$start" -eq "-1" ]; then
	return
    fi
    end=`$binoffset $file $IKCFG_ED 2>/dev/null`
    [ "$?" != "0" ] && end="-1"
    if [ "$end" -eq "-1" ]; then
	return
    fi

    start=`expr $start + 8`
    size=`expr $end - $start`

    dd if="$file" ibs=1 skip="$start" count="$size" 2>/dev/null | zcat

    clean_up
    exit 0
}


usage()
{
	echo "  usage: extract-ikconfig [b]zImage_filename"
}

clean_up()
{
	if [ "$TMPFILE" != "" ]; then
		rm -f $TMPFILE
	fi
}

if [ $# -lt 1 ]
then
	usage
	exit 1
fi

TMPFILE=`mktemp -t ikconfig-XXXXXX` || exit 1
image="$1"

# vmlinux: Attempt to dump the configuration from the file directly
dump_config "$image"

GZHDR1="0x1f 0x8b 0x08 0x00"
GZHDR2="0x1f 0x8b 0x08 0x08"

ELFHDR="0x7f 0x45 0x4c 0x46"

# vmlinux.gz: Check for a compressed images
off=`$binoffset "$image" $GZHDR1 2>/dev/null`
[ "$?" != "0" ] && off="-1"
if [ "$off" -eq "-1" ]; then
	off=`$binoffset "$image" $GZHDR2 2>/dev/null`
	[ "$?" != "0" ] && off="-1"
fi
if [ "$off" -eq "0" ]; then
	zcat <"$image" >"$TMPFILE"
	dump_config "$TMPFILE"
elif [ "$off" -ne "-1" ]; then
	(dd ibs="$off" skip=1 count=0 && dd bs=512k) <"$image" 2>/dev/null | \
		zcat >"$TMPFILE"
	dump_config "$TMPFILE"

# check if this is simply an ELF file
else
	off=`$binoffset "$image" $ELFHDR 2>/dev/null`
	[ "$?" != "0" ] && off="-1"
	if [ "$off" -eq "0" ]; then
		dump_config "$image"
	fi
fi

echo "ERROR: Unable to extract kernel configuration information."
echo "       This kernel image may not have the config info."

clean_up
exit 1
