--- tftp-iselect.sh 2007/11/18 16:25:26 78 +++ tftp-iselect.sh 2007/11/20 18:14:16 81 @@ -3,30 +3,47 @@ tftp=/srv/tftp/ tmp=/tmp/tftp fw_info=bin/fw-info.pl +sort=$1 +test -z "$sort" && sort="version"; +if [ "$sort" == "version" ] ; then + alt_sort="board" + SORT="sort -k1n" +else + alt_sort="version" + SORT="sort -k2" +fi #which=`find $tftp -type f | xargs -i $fw_info {} 2>/dev/null | sort | sed -e "s!$tftp!!" -e 's!^!!' -e 's!^\(.* BANT-R\)!\1!' | iselect -c -n "Select firmware file"` -$fw_info $tftp/ 2>/dev/null | sort -k 2,1 -n | sed -e "s!$tftp/*!!" > $tmp.all +$fw_info $tftp/ 2>/dev/null | sed -e "s!$tftp/*!!" > $tmp.all -echo -e "Currently selected version for flash:\n" > $tmp +echo -e "Currently selected versions to flash:\n" > $tmp grep " BANT-.$" $tmp.all > $tmp.selected cat $tmp.selected >> $tmp -echo -e "\nAll versions available:\n" >> $tmp +echo -e "\nAll versions available by $sort:" >> $tmp +echo -e "Sort by $alt_sort\n" >> $tmp -grep -v -f $tmp.selected $tmp.all | sed -e 's!^!!' >> $tmp +grep -v -f $tmp.selected $tmp.all | $SORT | sed -e 's!^!!' >> $tmp which=`iselect -c -n "Select firmware" < $tmp` test -z "$which" && echo "No change" && exit -version=`echo $which | cut -d" " -f1` -board=`echo $which | cut -d" " -f2` -path=`echo "$which" | cut -c34-` +if [ ! -z "`echo $which | grep -E '(board|version)'`" ] ; then + $0 $which +else -#echo "$version|$board|$path" + version=`echo $which | cut -d" " -f1` + board=`echo $which | cut -d" " -f2` + path=`echo "$which" | cut -c34-` -cp $tftp/$path $tftp/$board.new && mv $tftp/$board.new $tftp/$board || exit + #echo "$version|$board|$path" -echo "Using $path for $board [$version]" + cp $tftp/$path $tftp/$board.new && mv $tftp/$board.new $tftp/$board || exit + chmod 644 $tftp/$board || exit + + echo "Using $path for $board [$version]" + +fi