home *** CD-ROM | disk | FTP | other *** search
/ Media Share 9 / MEDIASHARE_09.ISO / archiver / gus_170.zip / GUS_WCFG.PAS < prev    next >
Pascal/Delphi Source File  |  1993-04-14  |  6KB  |  130 lines

  1. {$A+,B-,D-,E-,F-,I+,L-,N-,O-,R+,S+,V-}
  2. {$IFDEF VER60}
  3.   {$G-,X-}
  4. {$ENDIF}
  5. {$IFDEF VER70}
  6.   {$G-,P-,Q-,T-,X-,Y-}
  7. {$ENDIF}
  8. {$M 1024, 0, 0}
  9.  
  10. program GUS_WriteConfig;    { Append or update configuration }
  11.                             { information to or in GUS.EXE    for v1.70 !!!  }
  12. uses DOS;
  13.  
  14. type
  15.     FNameStr = string[12];
  16.  
  17.     ArcType = (ARC, ARp, ARJ, DWC, HA, HAP, HPK, HYP, LZH, PAK, SQZ, ZIP, ZOO);
  18.     ArcCmds = (Extract, Replace, Display, Test);
  19.  
  20.     ArcData = record
  21.                 Ext : string[3];
  22.                 Prog: FNameStr;
  23.                 Cmd : array [ArcCmds] of string[10];
  24.                 Pth,
  25.                 Pwd : string[5];
  26.               end;
  27.  
  28.     ArcCfg  = record
  29.                 Marker  : longint;
  30.                 ArcTable: array [ArcType] of ArcData;
  31.               end;
  32.  
  33. const
  34.     GUSname     = 'GUS.EXE';
  35.     CfgMarker   = $AA535547;       {'GUS'+chr(170)}
  36.     Unsupported = '**********';
  37.     ArcInfo     : ArcCfg
  38.     = (Marker   : CfgMarker;
  39.        ArcTable :                         {     Extract       Replace       Display       Test        }
  40.        ((Ext: 'ARC'; Prog: 'PKUNPAK .EXE'; Cmd:('-n        ', '-r        ', '-c        ', '-t        '); Pth: Unsupported;
  41.                                                                                                        Pwd: 'g    '     ),
  42.         (Ext: 'A7+'; Prog: 'XARC    .EXE'; Cmd:('          ', '/o        ', Unsupported , Unsupported ); Pth: Unsupported;
  43.                                                                                                        Pwd: '/g   '     ),
  44.         (Ext: 'ARJ'; Prog: 'ARJ     .EXE'; Cmd:('e -uy     ', 'e -y      ', 'p         ', 't         '); Pth: '<x   '    ;
  45.                                                                                                        Pwd: ' -g  '     ),
  46.         (Ext: 'DWC'; Prog: 'DWC     .EXE'; Cmd:('xow       ', 'xw        ', 'p         ', 't         '); Pth: 'r    '    ;
  47.                                                                                                        Pwd: 'g    '     ),
  48.         (Ext: 'HA '; Prog: 'HA      .EXE'; Cmd:('et        ', 'ety       ', Unsupported , 't         '); Pth: '<x   '    ;
  49.                                                                                                        Pwd: Unsupported ),
  50.         (Ext: 'HAP'; Prog: 'PAH     .EXE'; Cmd:('e         ', 'e         ', Unsupported , Unsupported ); Pth: Unsupported;
  51.                                                                                                        Pwd: Unsupported ),
  52.         (Ext: 'HPK'; Prog: 'HPACK   .EXE'; Cmd:('x -on -r  ', 'x -oa -r  ', 'p -r      ', 't -r      '); Pth: ' -p  '    ;
  53.                                                                                                        Pwd: ' -c  '     ),
  54.         (Ext: 'HYP'; Prog: 'HYPER   .EXE'; Cmd:('-x        ', '-xo       ', Unsupported , Unsupported ); Pth: 'p    '    ;
  55.                                                                                                        Pwd: Unsupported ),
  56.         (Ext: 'LZH'; Prog: 'LHA     .EXE'; Cmd:('e /m+     ', 'e /m+c+   ', 'p /m+     ', 't /m+     '); Pth: 'x+   '    ;
  57.                                                                                                        Pwd: Unsupported ),
  58.         (Ext: 'PAK'; Prog: 'PAK     .EXE'; Cmd:('e/WO      ', 'e/WA      ', 'p         ', 't         '); Pth: '/PATH'    ;
  59.                                                                                                        Pwd: '/g=  '     ),
  60.         (Ext: 'SQZ'; Prog: 'SQZ     .EXE'; Cmd:('e /o0     ', 'e /o1     ', 'p         ', 't         '); Pth: '<x   '    ;
  61.                                                                                                        Pwd: Unsupported ),
  62.         (Ext: 'ZIP'; Prog: 'PKUNZIP .EXE'; Cmd:('-n        ', '-o        ', '-c        ', '-t        '); Pth: ' -d  '    ;
  63.                                                                                                        Pwd: ' -s  '     ),
  64.         (Ext: 'ZOO'; Prog: 'ZOO     .EXE'; Cmd:('e:O       ', 'e:OS      ', 'e:p       ', 'e:N       '); Pth: '//   '    ;
  65.                                                                                                        Pwd: Unsupported )
  66.        )
  67.       );  {NOTE: if the first character of an option string is a '<', then it means that the following letter
  68.            should REPLACE the first letter of the command string and not be added to it like the other options.}
  69. var
  70.     CfgData : ArcCfg;
  71.     GUSfile : file;
  72.  
  73.  
  74. procedure ReadData (var F   : file;
  75.                     var Data: ArcCfg);
  76.  begin
  77.   {$I-} reset(F, 1); {$I+}
  78.   if IOresult <> 0
  79.    then begin
  80.          writeln('Can''t open ', GUSname);
  81.          Halt(1);
  82.         end;
  83.   {$I-} seek(F, filesize(F)-sizeof(ArcCfg)); {$I+}
  84.   if IOresult <> 0
  85.    then begin
  86.          writeln('Problem: cannot seek to byte location ', filesize(F), ' - ', sizeof(ArcCfg));
  87.          Halt(1);
  88.         end;
  89.   {$I-} BlockRead(F, Data, sizeof(ArcCfg)); {$I+}
  90.   if IOresult <> 0
  91.    then begin
  92.          writeln('Problem: cannot read ', sizeof(ArcCfg), ' bytes in ', GUSname, ' at offset ', filepos(F));
  93.          Halt(1);
  94.         end;
  95.   close(F);
  96.   writeln('Reading configuration information from ', GUSname)
  97.  end; {ReadData}
  98.  
  99.  
  100. procedure AppendData (var F   : file;
  101.                       var Data: ArcCfg);
  102.  begin
  103.   Data.Marker:=CfgMarker;
  104.   reset(F, 1);
  105.   seek(F, filesize(F));
  106.   BlockWrite(F, Data, sizeof(ArcCfg));
  107.   close(F);
  108.   writeln('Appending configuration information to ', GUSname)
  109.  end; {AppendData}
  110.  
  111.  
  112. procedure UpdateData (var F   : file;
  113.                       var Data: ArcCfg);
  114.  begin
  115.   Data.Marker:=CfgMarker;
  116.   reset(F, 1);
  117.   seek(F, filesize(F)-sizeof(ArcCfg));
  118.   BlockWrite(F, Data, sizeof(ArcCfg));
  119.   close(F);
  120.   writeln('Updating configuration information in ', GUSname)
  121.  end; {UpdateData}
  122.  
  123. begin {=MAIN=}
  124.  assign(GUSfile, GUSname);
  125.  ReadData(GUSfile, CfgData);
  126.  if CfgData.Marker = CfgMarker
  127.   then UpdateData(GUSfile, ArcInfo)
  128.   else AppendData(GUSfile, ArcInfo)
  129. end.
  130.