home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 9 Archive / 09-Archive.zip / lxlt121s.zip / lxLite_src / lxLite_Global.pas < prev    next >
Pascal/Delphi Source File  |  1997-08-17  |  10KB  |  401 lines

  1. {&AlignCode-,AlignData-,AlignRec-,G3+,Speed-,Frame-}
  2. Unit lxLite_Global;
  3.  
  4. Interface uses use32, exe286, exe386, os2exe, Collect, SysLib, Country;
  5.  
  6. const
  7.  Version          : string[6] = '1.2.1 ';
  8.  
  9. { Message Identifiers }
  10.  msgProgHeader1   = 100;
  11.  msgProgHeader2   = 101;
  12.  msgDone          = 102;
  13.  msgMore          = 103;
  14.  msgInvalidSwitch = 104;
  15.  msgAborted       = 105;
  16.  msgRuntime1      = 106;
  17.  msgRuntime2      = 107;
  18.  
  19.  msgCantLoadStub  = 151;
  20.  msgFatalIOerror  = 152;
  21.  msgInvalidStub   = 153;
  22.  msgCannotLoadCFG = 154;
  23.  msgCannotOpenLog = 155;
  24.  msgNoCountryInfo = 156;
  25.  msgBadFileMask   = 157;
  26.  msgEqualFilename = 158;
  27.  msgCantWriteOut  = 159;
  28.  msgRecursiveCfg  = 160;
  29.  msgCantCreateDir = 161;
  30.  msgCantCopyBackup= 162;
  31.  msgCfgLoadFailed = 163;
  32.  
  33.  msgEmpty         = 192;
  34.  
  35.  msgPageFlags     = 193;
  36.  
  37.  msgEntryPoints   = 200;
  38.  
  39.  msgCPU           = 206;
  40.  
  41.  msgNameTableHdr  = 224;
  42.  msgImpTableHdr   = 225;
  43.  msgExported      = 226;
  44.  msgSharedData    = 227;
  45.  msgParamCount    = 228;
  46.  msgProcOffs      = 229;
  47.  msgApplication   = 230;
  48.  msgFullScreen    = 231;
  49.  msgWindowed      = 232;
  50.  msgPMapplication = 233;
  51.  msgUnknownType   = 234;
  52.  msgDLL           = 235;
  53.  msgProtDLL       = 236;
  54.  msgPDD           = 237;
  55.  msgVDD           = 238;
  56.  msgPerProcInit   = 239;
  57.  msgPerProcTerm   = 240;
  58.  msgUnknownModType= 241;
  59.  msgNoIntFixups   = 242;
  60.  msgNoExtFixups   = 243;
  61.  msgNotLoadable   = 244;
  62.  msgModuleType    = 250;
  63.  msgReqCPU        = 251;
  64.  msgReqOS         = 252;
  65.  msgPageSize      = 253;
  66.  msgObjects       = 254;
  67.  msgObjTableOfs   = 255;
  68.  msgMapTableOfs   = 256;
  69.  msgNResTableOfs  = 257;
  70.  msgImpProcOfs    = 258;
  71.  msgPageDataOfs   = 259;
  72.  msgPageFixOfs    = 260;
  73.  msgFixupSize     = 261;
  74.  msgResidentSize  = 262;
  75.  msgImpTableOfs   = 263;
  76.  msgImpEntries    = 264;
  77.  msgStartEIP      = 265;
  78.  msgAutoData      = 266;
  79.  msgStackSize     = 267;
  80.  msgModuleName    = 268;
  81.  msgDescription   = 269;
  82.  msgObjectTable   = 270;
  83.  msgObjTableHdr   = 271;
  84.  msgPageTableHdr  = 272;
  85.  msgResTableHdr   = 273;
  86.  msgNResTableHdr  = 274;
  87.  msgImportTable   = 275;
  88.  msgImpProcHdr    = 276;
  89.  msgEntryTable    = 277;
  90.  msgEntryTblHdr   = 278;
  91.  msgRelocTable    = 279;
  92.  msgRelocTblHdr   = 280;
  93.  msgFixByte       = 281;
  94.  msgFixSelector   = 282;
  95.  msgFixPtr16      = 283;
  96.  msgFixOfs16      = 284;
  97.  msgFixPtr48      = 285;
  98.  msgFixOfs32      = 286;
  99.  msgFixRelOfs32   = 287;
  100.  msgFixOf         = 288;
  101.  msgFixObject     = 289;
  102.  msgFixOffset     = 290;
  103.  msgFixImport     = 291;
  104.  msgFixModEntry   = 292;
  105.  
  106.  msgConfigHeader  = 300;
  107.  msgShowInfo      = 301;
  108.  msgForceIdle     = 302;
  109.  msgUnpack        = 303;
  110.  msgBackup        = 304;
  111.  msgPause         = 305;
  112.  msgReplaceStub   = 306;
  113.  msgRemoveStub    = 307;
  114.  msgAlignFO       = 308;
  115.  msgAlignFONone   = 309;
  116.  msgAlignFOShift  = 310;
  117.  msgAlignFOSect   = 311;
  118.  msgAlignObj      = 312;
  119.  msgAlignObjShift = 313;
  120.  msgAlignObjSect  = 314;
  121.  msgSetPageShift  = 315;
  122.  msgDontChange    = 316;
  123.  msgRunLength     = 317;
  124.  msgRLoff         = 318;
  125.  msgRLmin         = 319;
  126.  msgRLmed         = 320;
  127.  msgRLmax         = 321;
  128.  msgLempelZiv     = 322;
  129.  msgExcludedFiles = 323;
  130.  msgFixupsPack    = 324;
  131.  msgFXoff         = 325;
  132.  msgFXv2          = 326;
  133.  msgFXv4          = 327;
  134.  msgFXmax         = 328;
  135.  
  136.  msgLXerror       = 350;
  137.  
  138.  msgModInUse      = 400;
  139.  msgModInUseAsk   = 401;
  140.  msgModInUseRpl   = 402;
  141.  msgModInUseCant  = 403;
  142.  msgProcessing    = 410;
  143.  msgModDebugInfo  = 411;
  144.  msgModDebugAsk   = 412;
  145.  msgModDebugRpl   = 413;
  146.  msgAlreadyProc   = 414;
  147.  msgModOverlay    = 415;
  148.  msgModOvrAsk     = 416;
  149.  msgModOvrRpl     = 417;
  150.  msgBackupExists  = 418;
  151.  msgBackupAsk     = 419;
  152.  msgBackupRpl     = 420;
  153.  msgBackingUp     = 421;
  154.  msgBackupError   = 422;
  155.  msgSaving        = 423;
  156.  msgCompRate      = 424;
  157.  msgOverall       = 425;
  158.  msgCurDir        = 426;
  159.  msgNResTable     = 427;
  160.  msgNResAsk       = 428;
  161.  msgNResRpl       = 429;
  162.  
  163.  msgLogStart      = 430;
  164.  msgLogOp         = 431;
  165.  msgLogDebug      = 432;
  166.  msgLogDebugRmv   = 433;
  167.  msgLogDebugKept  = 434;
  168.  msgLogXtra       = 435;
  169.  msgLogXtraRmv    = 436;
  170.  msgLogXtraKept   = 437;
  171.  msgLogBackOverw  = 438;
  172.  msgLogBackSkip   = 439;
  173.  msgLogModLocked  = 440;
  174.  msgLogStubOut    = 441;
  175.  msgLogError      = 442;
  176.  msgLogCurDir     = 443;
  177.  msgLogOverall    = 444;
  178.  msgLogNResRmv    = 445;
  179.  msgLogNResKept   = 446;
  180.  
  181.  msgCantFindFile  = 450;
  182.  msgConfirmAsk    = 451;
  183.  msgConfirmRpl    = 452;
  184.  
  185.  msgDbgSkip       = 460;
  186.  msgDbgAbort      = 461;
  187.  msgOverlaySkip   = 462;
  188.  msgOverlayAbort  = 463;
  189.  msgFileInUse     = 464;
  190.  msgBackupSkip    = 465;
  191.  msgBackupAbort   = 466;
  192.  msgNResSkip      = 467;
  193.  msgNResAbort     = 468;
  194.  
  195.  msgListCfg       = 480;
  196.  msgListSel       = 481;
  197.  
  198.  msgHelpFirst     = 500;
  199.  msgHelpLast      = 600;
  200.  
  201. {-Backup flags-}
  202.  bkfIfDebug       = $0001;
  203.  bkfIfXtra        = $0002;
  204.  bkfIfNE          = $0004;
  205.  bkfAlways        = $FFFF;
  206.  
  207. {-Log condition flags-}
  208.  lcfSucc          = $0001;
  209.  lcfUnsucc        = $0002;
  210.  lcfAlways        = $FFFF;
  211.  
  212. {-NEloadMode flags (except that in OS2EXE.PAS)-}
  213.  lneAlways        = $FFFF;
  214.  
  215. {-FinalWrite flags-}
  216.  fwfWrite         = $0001;
  217.  fwfSimulate      = $0002;
  218.  fwfAlways        = $FFFF;
  219.  
  220. {-NewType conditions-}
  221.  ntfExecutable    = $0001;
  222.  ntfLibrary       = $0002;
  223.  ntfPhysDriver    = $0004;
  224.  ntfVirtDriver    = $0008;
  225.  ntfNEmodule      = $0010;
  226.  ntfLXmodule      = $0020;
  227.  ntfAlways        = $FFFF;
  228.  
  229. {-ForceOut bit flags-}
  230.  fofDebug         = $0001;
  231.  fofXtra          = $0002;
  232.  fofStub          = $0004;
  233.  fofAlways        = $0008;
  234.  fofAnything      = $FFFF;
  235.  
  236. {-Confirmation query subsystem constants-}
  237.  askInUse         = 1;
  238.  askExtraData     = 2;
  239.  askOverBak       = 3;
  240.  askConfirm       = 4;
  241.  askDbgInfo       = 5;
  242.  askNResTable     = 6;
  243.  askFirst         = askInUse;
  244.  askLast          = askNResTable;
  245.  
  246. {-Verbose Information flags-}
  247.  vfHeaderL0       = $00000001;
  248.  vfHeaderL1       = $00000002;
  249.  vfHeaderL2       = $00000004;
  250.  vfHeaderL3       = $00000008;
  251.  vfObjects        = $00000010;
  252.  vfPageMap        = $00000030;
  253.  vfResName        = $00000100;
  254.  vfNResName       = $00000200;
  255.  vfImpName        = $00000400;
  256.  vfImpProc        = $00000800;
  257.  vfEntTable       = $00001000;
  258.  vfFixups         = $00010000;
  259.  vfAnything       = $FFFFFFFF;
  260.  
  261.  cfgFname         = 'lxLite.cfg';
  262.  logFname         = 'lxLite.log';
  263. {-Configuration parameters-}
  264.  Opt              : record
  265.   Verbose      : Longint;
  266.   NewType      : Longint;
  267.   NewTypeCond  : Longint;                               {ntfXXXX flags}
  268.   doUnpack     : boolean;             {Unpack LX and save unpacked}
  269.   Unpack       : boolean;                 {Unpack LX before packing}
  270.   Backup       : longint;
  271.   Pause        : boolean;
  272.   ApplyFixups  : boolean;
  273.   SaveMode     : longint;
  274.   PackMode     : longint;
  275.   NEloadMode   : longint;
  276.   Realign      : longint;
  277.   ForceOut     : longint;
  278.   Log          : longint;
  279.   FinalWrite   : longint;
  280.   ForceRepack  : boolean;
  281.   ForceIdle    : boolean;
  282.   ShowConfig   : boolean;
  283.   RecurSearch  : boolean;
  284.   QueryCfgList : boolean;
  285.   DiscardXOpts : boolean;
  286.   ColoredOutput: boolean;
  287.   UseStdOut    : boolean;
  288.   tresholdStub : Longint;
  289.   tresholdXtra : Longint;
  290.   tresholdDbug : Longint;
  291.   stubName     : string;
  292.   logFileName  : string;
  293.   backupDir    : string;
  294.   xdFileMask   : string;
  295.   ddFileMask   : string;
  296.   sdFileMask   : string;
  297.   AskStatus    : array[askFirst..askLast] of record
  298.                   ID    : char; {The /Y# character}
  299.                   Reply : char; {What to answer}
  300.                  end;
  301.  end =
  302.  (Verbose      : 0;
  303.   NewType      : 0;
  304.   NewTypeCond  : 0;                               {ntfXXXX flags}
  305.   doUnpack     : FALSE;             {Unpack LX and save unpacked}
  306.   Unpack       : TRUE;                 {Unpack LX before packing}
  307.   Backup       : 0;
  308.   Pause        : FALSE;
  309.   ApplyFixups  : TRUE;
  310.   SaveMode     : svfFOalnNone + svfEOalnShift;
  311.   PackMode     : pkfLempelZiv + pkfFixups + pkfFixupsVer2;
  312.   NEloadMode   : 0;
  313.   Realign      : 0;
  314.   ForceOut     : 0;
  315.   Log          : lcfSucc;
  316.   FinalWrite   : fwfWrite;
  317.   ForceRepack  : FALSE;
  318.   ForceIdle    : TRUE;
  319.   ShowConfig   : FALSE;
  320.   RecurSearch  : FALSE;
  321.   QueryCfgList : FALSE;
  322.   DiscardXOpts : FALSE;
  323.   ColoredOutput: TRUE;
  324.   UseStdOut    : FALSE;
  325.   tresholdStub : 0;
  326.   tresholdXtra : 1024;
  327.   tresholdDbug : $7FFFFFFF;
  328.   stubName     : '';
  329.   logFileName  : '';
  330.   backupDir    : '';
  331.   xdFileMask   : '';
  332.   ddFileMask   : '';
  333.   sdFileMask   : '';
  334.   AskStatus    : ((ID : 'U'; Reply : #0),  {module in Use}
  335.                   (ID : 'X'; Reply : #0),  {eXtra data}
  336.                   (ID : 'B'; Reply : #0),  {overwrite Backup}
  337.                   (ID : 'C'; Reply : #0),  {Confirmation}
  338.                   (ID : 'D'; Reply : #0),  {Debug info}
  339.                   (ID : 'N'; Reply : #0))  {Non-resident name table}
  340.  );
  341.  
  342. type
  343.  pModuleDef = ^tModuleDef;
  344.  tModuleDef = record
  345.   ModuleName : string;
  346.   defStart,
  347.   defLength  : Longint;
  348.  end;
  349.  pModuleCollection = ^tModuleCollection;
  350.  tModuleCollection = object(tStringCollection)
  351.   procedure FreeItem(Item: Pointer); virtual;
  352.  end;
  353.  
  354. var
  355.  fNames,
  356.  loadCFG   : pStringCollection;
  357.  exclude   : pFileMatch;
  358.  newStub   : Pointer;
  359.  newStubSz : Longint;
  360.  
  361. procedure SetColor(Color : Byte);
  362. procedure ClearToEOL;
  363.  
  364. Implementation uses Crt, StrOp;
  365.  
  366. procedure SetColor;
  367. const
  368.  ColorTranslate : array[0..15] of Byte =
  369.  (0, 7, 7, 7, 7, 7, 7, 7, 8, 7, 15, 15, 15, 15, 15, 15);
  370. var
  371.  B,F : Byte;
  372. begin
  373.  if opt.ColoredOutput
  374.   then textAttr := Color
  375.   else begin
  376.         B := Color shr 4;
  377.         F := Color and $0F;
  378.         textAttr := ColorTranslate[B] * 16 + ColorTranslate[F];
  379.        end;
  380. end;
  381.  
  382. procedure ClearToEOL;
  383. var
  384.  Spaces : Integer;
  385. begin
  386.  if not RedirOutput
  387.   then if opt.UseStdOut
  388.         then begin
  389.               Spaces := succ(lo(WindMax)) - WhereX;
  390.               Write(strg(' ', Spaces), strg(#8, Spaces));
  391.              end
  392.         else ClrEOL;
  393. end;
  394.  
  395. procedure tModuleCollection.FreeItem;
  396. begin
  397.  Dispose(pModuleDef(Item));
  398. end;
  399.  
  400. end.
  401.