home *** CD-ROM | disk | FTP | other *** search
/ SDN¹ Plus / SDN1_.cdr / sdn / util1 / gus_150.sdn / 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.