home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 2 / Apprentice-Release2.iso / Source Code / C / Applications / Eudora 1.3.1 / source / Bits / makesegs < prev    next >
Encoding:
Text File  |  1993-03-16  |  947 b   |  50 lines  |  [TEXT/????]

  1. #!/usr/local/bin/perl
  2. $cfile = $ARGV[0]; shift;
  3. $hfile = $ARGV[0]; shift;
  4. while (<>)
  5. {
  6.   if (/^#pragma segment/)
  7.   {
  8.     chop;
  9.     split;
  10.     if ($_[2] ne "Main")
  11.     {
  12.       $seglist{$_[2]} = $_[2];
  13.     }
  14.   }
  15. }
  16.  
  17. open(CFILE,">$cfile") || die "$cfile";
  18. open(HFILE,">$hfile") || die "$hfile";
  19. print CFILE <<END_OF_DUMP;
  20. #ifdef RAMDISK
  21. #pragma load "RAM Disk:eudora.load"
  22. #else
  23. #pragma load "eudora.load"
  24. #endif
  25. END_OF_DUMP
  26. foreach $seg (keys(%seglist))
  27. {
  28.     $count++;
  29.   printf CFILE "#pragma segment %s\n",$seg;
  30.   printf CFILE "void __Seg%s(void);\n",$seg;
  31.   printf CFILE "void __Seg%s(void){}\n",$seg;
  32. }
  33. print CFILE <<"EOF";
  34. #pragma segment Main
  35. void UnloadSegments(void)
  36. {
  37.   extern void _DataInit();
  38.   extern char *strchr();
  39.   UnloadSeg(_DataInit);
  40.   UnloadSeg(strchr);
  41. EOF
  42. foreach $seg (keys(%seglist))
  43. {
  44.   printf CFILE "  UnloadSeg(__Seg%s);\n",$seg;
  45. }
  46. print CFILE "}\n";
  47.  
  48. $count += 2;    # code 1 and code 0
  49. print HFILE "#define NUM_CODE $count\n";
  50.