#!/bin/sh

quiet=1
: ${BUG_SERVER:="bugzilla.sfbay.sun.com"}
: ${BUG_CGIDIR:="bugs"}
: ${BUG_OUTPUT:="/dev/stdout"}
: ${BUG_CONF:="`dirname $0`/buglist.conf"}
: ${COLUMNLIST:="changeddate priority owner status component summary"}

if ! test -s $BUG_CONF ; then
    if test -s /etc/buglist.conf ; then
	BUG_CONF="/etc/buglist.conf"
    else
	echo "Unable to find buglist.conf in either '`dirname $0`' or '/etc'" 1>&2
	exit 1
    fi
fi    

query="http://${BUG_SERVER}/${BUG_CGIDIR}/buglist.cgi?cmdtype=doit"
chart=0
and=0
while test "$1" != ""; do
    arg=$1
    arg_len=`expr length ${arg}`
    if test `expr substr "${arg}" 1 2` == "--"; then
        eq_pos=`expr match ${arg} '--.*='`
        if test "${eq_pos}" == "0"; then
            echo 'Missing value for long option '"${arg}"' ("=" not found)' 1>&2
            exit 1;
        fi
        # extract option name
        let name_len=${eq_pos}-3
        name=`expr substr ${arg} 3 ${name_len}`
        # extract option value
        let val_start=${eq_pos}+1
        let val_len=${arg_len}-${eq_pos}
        val=`expr substr ${arg} ${val_start} ${val_len}`
    elif test `expr substr ${arg} 1 1` == "-" &&
         test "`expr substr ${arg} 2 1`" != ""; then
        # extract
        name=`expr substr ${arg} 2 1`
        let val_len=${arg_len}-2
        val=`expr substr ${arg} 3 ${val_len}`
    else
        name="default"
        val="${arg}"
        #echo "Unrecognized option ${arg}" 1>&2
        #exit 1
    fi

    # find field and comparison type for option ${name}
    field=`grep '"'${name}'"' ${BUG_CONF} | awk '{printf $1}'`
    type=`grep '"'${name}'"' ${BUG_CONF} | awk '{printf $2}'`
    if test "${field}" == ""  || test "${type}" == ""; then
        echo "Field name & comparison type not found for option ${name}." 1>&2
        exit 1;
    fi

    or=0
    while test "${val}" != ""; do
        comma_idx=`expr index ${val} ,`
        if test ${comma_idx} == "0"; then
            val1="${val}"
            val=""
        else
            let val1_len=${comma_idx}-1
            val1=`expr substr ${val} 1 ${val1_len}`
            val_len=`expr length ${val}`
            let rest_start=${comma_idx}+1
            let rest_len=${val_len}-${comma_idx}
            val=`expr substr ${val} ${rest_start} ${rest_len}`
        fi
        query="${query}&field${chart}-${and}-${or}=${field}"
        query="${query}&type${chart}-${and}-${or}=${type}"
        query="${query}&value${chart}-${and}-${or}=${val1}"
        #echo "----- ${name} : ${field} : ${type} : ${val1} -----" 1>&2
        let or=${or}+1
    done
    let chart=${chart}+1
    shift
done


wget ${quiet:+'-q'} -O ${BUG_OUTPUT} \
     --header="Cookie: COLUMNLIST=${COLUMNLIST}" \
     "${query}"

