eudora-mac/Bits/processFilt

1 line
3.4 KiB
Plaintext
Raw Normal View History

2018-05-23 09:59:15 +00:00
open(SRC,"<$ARGV[0]") || die; open(DEFS,">:include:$ARGV[0].h") || die; open(RFIL,">$ARGV[0].r") || die; open(CFIL,">$ARGV[0].c") || die; open(EFIL,"<$ARGV[0].extras") || die; # # read the extras file # $n = 0; while (<EFILE>) { chop; ($enum,$pass,$word,$item,$help) = split('\t'); $EHelp{$enum} = $help; $n++; } # # read the input file # $n = 0; while (<SRC>) { chop; ($enum[$n],$pass[$n],$pro[$n],$word[$n],$item[$n],$help[$n]) = split('\t'); ($pass[$n],$multiple[$n]) = split(',',$pass[$n]); if ($enum[$n] ne "" && $EHelp{$enum[$n]} ne "") { $help[$n] = $EHelp{$enum[$n]}; } $n++; } # # prepare the .h file # print DEFS <<EOF; #ifdef TWO #ifndef FILTDEFS_H #define FILTDEFS_H typedef enum { flkZero, EOF for ($i=0;$i<$n;$i++) { if ($enum[$i] eq "dash") { print DEFS "\tflkDash$i,\n"; } else { print DEFS "\t$enum[$i],\n"; } } print DEFS <<EOF; flkLimit } FilterKeywordEnum; #define FilterKeywordStrn 25200 void *FATable(FilterKeywordEnum fk); short FAPass(FilterKeywordEnum fk); short FAMultiple(FilterKeywordEnum fk); Boolean FAProOnly(FilterKeywordEnum fk); #endif #endif EOF # # prepare the .c file # print CFIL <<EOF; #include "filtdefs.h" EOF for ($i=0;$i<$n;$i++) { if ($item[$i] ne "") { print CFIL "extern void *FA$enum[$i](void);\n"; } } print CFIL <<EOF; #pragma segment FILTRUN void *FATable(FilterKeywordEnum fk) { switch (fk) { EOF for ($i=0;$i<$n;$i++) { if ($item[$i] ne "") { print CFIL "\t\tcase $enum[$i]: return(FA$enum[$i]);\n"; } } print CFIL <<EOF; default: return(nil); } } EOF print CFIL <<EOF; short FAPass(FilterKeywordEnum fk) { switch (fk) { EOF for ($i=0;$i<$n;$i++) { if ($item[$i] ne "") { print CFIL "\t\tcase $enum[$i]: return($pass[$i]);\n"; } } print CFIL <<EOF; default: return(0); } } EOF print CFIL <<EOF; #pragma segment FilterWin short FAMultiple(FilterKeywordEnum fk) { switch (fk) { EOF for ($i=0;$i<$n;$i++) { if ($item[$i] ne "") { print CFIL "\t\tcase $enum[$i]: return($multiple[$i]);\n"; } } print CFIL <<EOF; default: return(0); } } Boolean FAProOnly(FilterKeywordEnum fk) { switch (fk) { EOF for ($i=0;$i<$n;$i++) { if ($item[$i] ne "" && $pro[$i] ne "Both") { print CFIL "\t\tcase $enum[$i]:\n"; } } print CFIL <<EOF; return(1); break; default: return(0); break; } } EOF # # prepare the resource file # # the keyword strings print RFIL <<EOF; resource 'STR#' (25200,purgeable) {{ EOF for ($i=0;$i<$n;$i++) { print RFIL qq/\t"$word[$i]",\n/; } print RFIL "}};\n\n"; # the menu resource print RFIL <<EOF; resource 'MENU' (1535) {535, 63,allEnabled, enabled, "FActions", { EOF for ($i=0;$i<$n;$i++) { if ($item[$i] ne "") { print RFIL qq/\t"$item[$i]", noIcon, noKey, noMark, plain,\n/; } elsif ($enum[$i] eq "dash") { print RFIL qq/\t"-",noIcon, noKey, noMark, plain,\n/; } } print RFIL "}};\n\n"; # then, the help strings print RFIL <<EOF; resource 'STR#' (535,purgeable) {{ EOF for ($i=0;$i<$n;$i++) { print RFIL qq/\t"$help[$i]",\n/; } print RFIL "}};\n\n"; # finally, the hmnu print RFIL <<EOF; resource 'hmnu' (535,purgeable) {HelpMgrVersion,0,0,0, HMSkipItem{}, { HMSkipItem{}, EOF $s = 0; for ($i=0;$i<$n;$i++) { if ($item[$i] ne "") { $s++; print RFIL qq/\t\tHMStringResItem{535,$s,535,$s,535,$s,535,$s},\n/; } elsif ($enum[$i] eq "dash") { $s++; print RFIL "\tHMSkipItem\{\},\n"; } } print RFIL "}};\n\n"; # # Uffdah, as we say here in the midwest. We're done. #