$hfile = ":include:prefdefs.h"; $rfile = "PrefDefs.strn"; $cfile = "preflimits.c"; $dfile = "prefenable.c"; $efile = "$ARGV[0].extras"; $afile = "prefs.acap"; $xsfile = "prefs.xset"; $aufile = "prefaudit.c"; $idBase = 1000; open(CFILE,">$cfile") || die; open(DFILE,">$dfile") || die; open(HFILE,">$hfile") || die; open(RFILE,">$rfile") || die; open(EFILE,"<$efile") || die; open(AFILE,">$afile") || die; open(XSFILE,">$xsfile") || die; open(AUFILE,">$aufile") || die; print CFILE <<'EOF'; #include #include "PrefDefs.h" #include "StringDefs.h" Boolean PrefBounds(short prefN,long *lower,long *upper) { #ifdef LIGHT Boolean Light = true; #else Boolean Light = false; #endif long l,u; switch (prefN) { EOF print DFILE <<'EOF'; #include #include "PrefDefs.h" #include "StringDefs.h" PersHandle SettingsPers(void); #define ICCRAP SettingsPers()!=PersList||!ReadIC||WriteIC Boolean PrefEnabled(short prefN) { #ifdef LIGHT Boolean Light = true; #else Boolean Light = false; #endif switch (ABS(prefN)) { EOF print HFILE <<'EOF'; #ifndef PREFDEFS_H #define PREFDEFS_H Boolean PrefBounds(short prefN,long *lower,long *upper); Boolean PrefAudit(short prefN); typedef enum { PREF_0, EOF print RFILE <<'EOF'; resource 'STH#' (1000,purgeable) {{ EOF print AUFILE <<'EOF'; #include #include "PrefDefs.h" #define Audit true Boolean PrefAudit(short prefN) { switch (ABS(prefN)) { EOF # # read the extra file while () { chop; if ($_ ne "" && !/^#/) { split('\t'); if (!/^-/) { $Extras{$_[0]} = $_[3]; } } } $cnt = 0; while (<>) { chop; if ($_ ne "" && !/^#/) { split('\t'); if (/^-/) { $name = $_[0]; $name =~ s/.//; $acap = $func = ""; } else { ($name,$acap,$func) = split('¥',$_[0]); $cnt++; ($help,$geek) = split('©©',$_[4]); if ($geek ne "") {$geekList .= "resource 'GSTR' (" . ($idBase+$cnt%100) . ",purgeable) {\"$geek\"};\n";} if ($Extras{$name} ne "") {$help = $Extras{$name};} if ($_[4] ne "" && !($_[4] =~ /don.t touch/i)) { print XSFILE " $_[4]\n"; } print HFILE "/*$cnt*/\t$name,\n"; print RFILE "/*$cnt $name*/\t\042$help\042,\n"; if ($cnt == 100) {&newresource; next;} if ($cnt == 200) {&newresource2; next;} if ($cnt == 300) {&newresource3; next;} } if ($_[3] ne "") { print AUFILE " case $name: return($_[3]);\n"; } if ($_[2] ne "") { @lims = split(/,/,$_[2]); print CFILE " case $name: l=$lims[0]; u=$lims[1]; break;\n"; } if ($_[1] ne "") { print DFILE " case $name: return($_[1]);\n"; } if ($acap ne "") { print AFILE "$cnt\t$acap\t$func\n"; } } } &finishresource; print CFILE <<'EOF'; default: return(0); } *lower = l; *upper = u; return(-1); } EOF print DFILE <<'EOF'; default: return(True); } } EOF print HFILE <<'EOF'; PREF_STRN_LIMIT } PrefStrnEnum; #endif EOF print AUFILE <<'EOF'; default: return(false); } } EOF if ($geekList ne "") {print RFILE $geekList;} sub newresource { &finishresource; print RFILE <<'EOF'; resource 'STH#' (900,purgeable) {{ EOF $idBase = 900; } sub newresource2 { &finishresource; print RFILE <<'EOF'; resource 'STH#' (700,purgeable) {{ EOF $idBase = 700; } sub newresource3 { &finishresource; print RFILE <<'EOF'; resource 'STH#' (20100,purgeable) {{ EOF $idBase = 20100; } sub finishresource { print RFILE "}};\n\n"; }