#!/usr/local/bin/perl
# checkBoolCommands
# list potential incompatibilities introduce by patch #3 for
# Wafe 1.0 (return values of types Boolean or Bool ar now 0 or 1)
#
# Usage: checkBoolCommands myTclScript1 myWafePerlScript .... 
# Gustaf Neumann      Mohegan Lake, Jul 30 1994
#
$doc = <<'__';

XtGen:
   isShell
   setWMProtocols
   ownSelection
   gV

GhostView:
   GhostviewIsInterpreterReady
   GhostviewIsInterpreterRunning
   GhostviewSendPS
   GhostviewNextPage

Athena:
   XawAsciiSave
   XawAsciiSaveAsFile
   XawAsciiSourceChanged 

Motif:
   XmProcessTraversal
   XmListGetMatchPos
   XmListGetSelectedPos
   XmListItemExists
   XmTextFieldGetSelectionPosition
   XmTextFieldPosToXY
   XmTextFieldRemove
   XmTextGetSelectionPosition
   XmTextPosToXY
   XmTextRemove
   XmToggleButtonGetState
   XmToggleButtonGadgetGetState

HTML:
   HTMLIdToElement

__
require 'getopts.pl';
if (!&Getopts('v')) {
    print "\nThis script checks for boolean results in Wafe scripts.\n\n",
          "Usage: $0 [OPTIONS] script1 [script2 ... ]\nOPTIONS:\n",
	  "          -v .... verbose\n";
    exit -1;
}


foreach (split(/\n+/,$doc)) { push(@cmds,$1) if /^\s+(\S+)\s*/; }
$expr1 = '.*\b('.join('|',@cmds).')\b.*\b(true|false)\b.*';
$expr2 = '.*\b(true|false)\b\W*\b('.join('|',@cmds).')\b.*';
$expr3 = '.*\b(ownSelection|getSelectionValue|disownSelection) .*';

undef $/;
foreach $file (@ARGV) {
    if (! -f $file || -B $file) {
	print "$file does not appear to be a Wafe script. Skipping ...\n" 
	    if $opt_v;
	next;
    }
    if ($file =~ /~$/) {
	print "Ignoring backup file $file...\n" if $opt_v;
	next;
    }
    print "checking $file...\n" if $opt_v;
    open(F,$file) && ($_=<F>) && close F || 
	print "cannot read file $file,, skipping...\n";
    $linenr = 0;
    $addWidget = 0;
    while (/$expr1/ || /$expr2/ || (/$expr3/ && ($addWidget=1))) {
	$linenr += ($` =~ tr/\n/\n/);
	if ($addWidget) {
	    print "$file: $linenr: Add widget as 1st argument to $1\n$&\n";
	} else {
	    print "$file: $linenr: $&\n";
	}
	$_ = $';
    }
}



