#!/bin/sh

IN=$1
[ -n "$IN" ] || IN="$PWD/README.txt"
[ -f "$IN" ] || IN="$PWD/README"
if ! [ -f "$IN" ]
then
    echo "source file not found"
    exit 1
fi

OUT=nvidia.xinf

function make_xinf_line {
    PCI_ID=`echo "$1" | sed "s|.*0x\(.*\)|\1|"| tr a-z A-Z`
    DESC=`echo "$1" | sed "s|\s*\(.*\)\s*0x.*|\1|"`
    VND_ID="000010DE"
    ((0x$PCI_ID<0xA1)) && VND_ID="000012D2"
    echo "alias pcivideo:v${VND_ID}d0000${PCI_ID}sv*sd*bc*sc*i* nvidia # ${DESC}"
}

>$OUT
STEP="start"
while read LINE
do
    case "$STEP" in
	start)
	    if echo "$LINE" | grep  -iqE "^(\(app-a\)[[:space:]]|)APPENDIX[[:space:]]A[.:][[:space:]]SUPPORTED[[:space:]]NVIDIA[[:space:]]GRAPHICS[[:space:]]CHIPS$"
	    then
		STEP=appendix_a
	    fi
	    ;;
	appendix_a)
	    if echo "$LINE" | grep -qe "[[:space:]]0x"
	    then
		STEP=ids
		make_xinf_line "$LINE" >>$OUT
	    fi
	    ;;
	ids)
	    if echo "$LINE" | grep -qe "[[:space:]]0x"
	    then
		make_xinf_line "$LINE" >>$OUT
	    else
		STEP=appendix_end
	    fi
	    ;;
	appendix_end)
	    break
	    ;;
	default)
	    ;;
    esac
done < $IN

chmod 0644 $OUT
