Perl -x "{0}" {"parameters"} ; exit
#!/usr/local/bin/perl
open(DEFS,">:include:$ARGV[0].h") || die;
open(RFIL,">$ARGV[0].strn") || die;
open(DOC,">$ARGV[0]H.strn") || die;
open(ACAP,">$ARGV[0].acap") || die;
open(XSET,">$ARGV[0].xset") || die;
$str=5400;
$gran=20;
$elem=$gran+1;

print DEFS "#ifndef STRINGDEFS_H\n#define STRINGDEFS_H\n\n";

#print DOC "Type 'STH#' as 'STR#' ;\n";

while (<>)
{
	if (/^#/)
	{
		if ($elem && $elem<=$gran)
		{
			print RFIL '}};' . "\n";
			print DOC '}};' . "\n";
		}
		$elem=$gran+1;
		print RFIL;
		print DOC;
		print DEFS;
	}
	elsif (/^=/)
	{
		if ($elem && $elem<=$gran)
		{
			print RFIL '}};' . "\n";
			print DOC '}};' . "\n";
		}
		chop;
		split;
		$str = $_[1]-200;
		if ($str>32000) {$gran = 99;}
		$elem = $gran+1;
	}
	else
	{
		if ($elem>=$gran)
		{
			if ($elem && $elem<=$gran)
			{
				print RFIL '}};' . "\n";
				print DOC '}};' . "\n";
			}
			$elem = 0;
			$str += 200;
			printf RFIL "resource 'STR#' (%d,purgeable) {{\n",$str;
			printf DOC "resource 'STH#' (%d,purgeable) {{\n",$str;
		}
		chop;
		split(/\t/);
		($name,$acap,$func) = split('',$_[0]);
		printf DEFS "#define %s\t%d\t/*%s*/\t//%s\n",$name,$str + ++$elem,$_[1],$_[2];
		($help,$geek) = split('',$_[2]);
		print RFIL '  "' . $_[1] . '",' . "\n";
		print DOC '/*' . ($str+$elem) . '*/  "' . $help . '",' . "\n";
		if ($_[2] ne "" && !($_[2] =~ /don.t touch/i)) {print XSET '<x-eudora-setting:' . ($str+$elem) . "> $_[2]\n";}
		if ($acap ne "") {print ACAP ($str+$elem) . "\t$acap\t$func\n";}
		if ($geek ne "") {$geekList .= "resource 'GSTR' (" . ($str+$elem). ",purgeable) {\"$geek\"};\n";}
	}
}

if ($elem && $elem<=$gran)
{
	print RFIL '}};' . "\n";
	print DOC '}};' . "\n";
}

if ($geekList ne "") {print DOC $geekList;}

print DEFS "\n\n#endif\n";
