home *** CD-ROM | disk | FTP | other *** search
/ Mega Top 1 / os2_top1.zip / os2_top1 / APPS / TEKST / PSUTILS / FIXMACPS.CMD < prev    next >
OS/2 REXX Batch file  |  1994-01-14  |  2KB  |  96 lines

  1. extproc perl -Sx 
  2. #!perl
  3. # fixmacps: swap to sanitised appledict
  4.  
  5. # feed this into perl
  6. eval 'exec perl -S $0 "$@"'
  7.    if $running_under_some_shell;
  8.  
  9. $line = 0;            # keep line count
  10. $dir = "/lib/psutils";
  11. $prefix = "md";
  12. $default = "md71_0.ps";
  13.  
  14. while ($_ = shift(@ARGV)) {
  15.    if (/^-d(ir)?$/)   { $dir = shift(@ARGV); }
  16.    elsif (/^-n(ame)?$/)   { $prefix = shift(@ARGV); }
  17.    else {
  18.       unshift(@ARGV, $_);
  19.       last;
  20.    }
  21. }
  22.  
  23. %fonts = ();
  24. $nesting = 0;
  25.  
  26. while (<>) {
  27.    if (/^%!/) {
  28.       if (! $line) {
  29.      print;
  30.       }
  31.    } elsif (/^%%(Begin|Include)ProcSet: "?\(AppleDict md\)"? ([0-9]+) ([0-9]+)$/) {
  32.       local($inc, $mdv, $mdr) = ($1, $2, $3);
  33.       if (open(SANE, "<$dir/$prefix${mdv}_$mdr.ps") ||
  34.       open(SANE, "<$dir/$default")) {
  35.      $sane = <SANE>;
  36.      local($snv, $snr) =
  37.         $sane =~ /^%%BeginProcSet: \(AppleDict md\) ([0-9]+) ([0-9]+)$/;
  38.      if ($mdv == $snv && $mdr == $snr) {
  39.          if ( $inc eq "Include" ) {
  40.          print STDERR "Inserting ProcSet \"(AppleDict md)\" $snv $snr\n";
  41.          print $sane;
  42.          while(<SANE>) {
  43.              print;
  44.          }
  45.          close(SANE);
  46.          }
  47.          else {
  48.          print STDERR "Substituting ProcSet \"(AppleDict md)\" $snv $snr\n";
  49.          $ignore = 1;
  50.          }
  51.      } else {
  52.         print STDERR "Unrecognised AppleDict version $mdv $mdr\n";
  53.         print "%!\n" if !$line;
  54.         print;
  55.      }
  56.       } else {
  57.      print STDERR "Can't find sanitised AppleDict\n";
  58.      print "%!\n" if !$line;
  59.      print;
  60.       }
  61.    } elsif (/^%%EndProcSet/) {
  62.       if ($ignore) {
  63.      $ignore = 0;
  64.      print "%!\n" if !$line;
  65.      print $sane;
  66.      while(<SANE>) {
  67.         print;
  68.      }
  69.      close(SANE);
  70.       } else {
  71.      print "%!\n" if !$line;
  72.      print;
  73.       }
  74.    } elsif (/^%%Page:/ && $nesting == 0) {
  75.       print $_;
  76.       print values(%fonts);
  77.    } elsif (/^%%BeginDocument/ || /^%%BeginBinary/) {
  78.       print $_;
  79.       $nesting++;
  80.    } elsif (/^%%EndDocument/ || /^%%EndBinary/) {
  81.       print $_;
  82.       $nesting--;
  83.    } else {
  84.       if (! $ignore) {
  85.      if (/^\{\}mark .*rf$/) {
  86.         $fonts{$_} = $_;
  87.         print;
  88.      } else {
  89.         print "%!\n" if !$line;
  90.         print;
  91.      }
  92.       }
  93.    }
  94.    $line++;
  95. }
  96.