home *** CD-ROM | disk | FTP | other *** search
/ Shareware 1 2 the Maxx / sw_1.zip / sw_1 / UTILS / GUS_150.ZIP / GUS_WCFG.PAS next >
Pascal/Delphi Source File  |  1992-04-13  |  5KB  |  121 lines

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