#!/bin/bash #@DOC@ chack .lst file for badly defined variables # # Copyright (C) 2006 Nathan (Acorn) Pooley # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # version 2 as published by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License (gpl.txt) for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # You can contact the author, Nathan (Acorn) Pooley, by writing # to Nathan (Acorn) Pooley, 949 Buckeye Drive, Sunnyvale, CA 94086, USA # or through the form at http://www.rawbw.com/~acorn/wand/feedback.html # isok=1 list[0]="" unset list cnt=0 OPT_dolist=0 file="" _addfile() { typeset j for j in "${list[@]}" do if [[ $j = $1 ]] ; then return fi done list[cnt]="$1" (( cnt = cnt + 1 )) } for i in "$@" do if [[ $i = -l ]] ; then OPT_dolist=1 fi if [[ -f ${i%.*}.inc ]] ; then _addfile "${i%.*}.inc" fi if [[ -f ${i%.*}.asm ]] ; then _addfile "${i%.*}.asm" fi if [[ $i = *.lst || $i = *.hex ]] ; then if [[ -n $file ]] ; then echo "checkvars: ERROR: two .lst files specified:" echo "checkvars: ERROR: $file" echo "checkvars: ERROR: $i" isok=0 fi file="${i%.lst}" file="${file%.hex}" file="$file.lst" fi done _catall() { for i in "${list[@]}" do cat "$i" done } _getlist() { grep '^v[ki]*_[a-z0-9A-Z_]* *[0-9a-fA-F]* *$' | \ sed -n -e 's|^\(v[ki]*_[a-z0-9A-Z_]*\) *\([0-9a-fA-F]*\) *$|\2 \1|p' | \ sort -u } _getlistb() { grep 'define.*b[ki]*_[a-z0-9A-Z_]*[ ][ ]*v' | \ sed -n \ -e 's|[ ][ ]*| |g' \ -e 's|^ *#*define \(b[ki]*_[a-z0-9A-Z_]*\) \(v[a-z0-9A-Z_]*,[0-7]\).*|\2 \1|p' | \ sort -u } _findprob() { err=0 lastsym="???" lastaddr=x while read addr sym do if [[ $addr = $lastaddr ]] ; then echo "checkvars: sym $sym and $lastsym share addr $addr" err=1 fi lastaddr=$addr lastsym=$sym done return $err } if [[ -n $file && ! -f $file ]] ; then echo "checkvars: ERROR: file not found: '$file'" isok=0 fi if [[ -n $file && -f $file ]] ; then cat $file | _getlist | _findprob || isok=0 fi if (( cnt > 0 )) ; then _catall | _getlistb | _findprob || isok=0 fi if (( OPT_dolist )) ; then if [[ -n $file && -f $file ]] ; then echo "checkvars: ================= List of variables for $file" cat $file | _getlist fi if (( cnt > 0 )) ; then echo "checkvars: ================= List of bit variables for ${list[*]}" _catall | _getlistb fi echo "checkvars: =================" fi if (( ! isok )) ; then echo "checkvars: VARIABLE ERROR!!!!" exit 1 fi exit 0 |
This file Copyright (C) 2006 by Nathan (Acorn) Pooley
Go to TOP Wand page
Go to Acorn's personal webpage
Go to Hogwarts website: www.gotohogwarts.com
Snout: www.snout.org/game
Gadgets of Justice Unlimited
Snout GC (Wiki)
Snout Wiki
File created by do_doc at Wed May 30 03:23:46 PDT 2007