Program Emulex_to_Vision_Xfers_Convert;

Uses Configrt, Subs1, GenSubs, Gentypes, Crt;

Type EFrec=Record
       sentby:mstr;
       when,whenrated:longint;
       filename:sstr;
       path:String[50];
       points:Integer;
       FileSize:longint;
       descrip:lstr;
       downloaded:Integer;
       pass:sstr;
       unused:string[13];
       revision:byte;
       newfile,specialfile:Boolean
     End;

     EArec=Record
       name,xmodemdir:lstr;
       sponsor:mstr;
       Password:sstr;
       UploadHere,downloadhere:char;
       unused:string[61];
       slowdrive:boolean;
       File_List:lstr;
       Area_Type:Char;
       level:Integer
     End;

Var Areas:Integer;

Procedure AreaConvert;
Var EFile:File of EARec;
    AFile:File of AreaRec;
    EA:EARec;
    A:AreaRec;
Begin
  Assign (EFile,'AREADIR');
  Reset (EFile);
  If IOResult <> 0 Then Begin
    TextAttr:=9;
    Writeln ('AREADIR Not Found!');
    Halt;
  End;
  Rename (EFile,'AREADIR.EMU');
  Assign (AFile,'AREADIR');
  Rewrite (AFile);
  Seek (EFile,0);
  Areas:=0;
  While Not Eof(Afile) Do Begin
    Areas:=Areas + 1;
    Read (EFile,EA);
    FillChar (A,Sizeof(A),0);
    A.Name:=EA.Name;
    A.XmodemDir:=EA.XmodemDir;
    A.Sponsor:=EA.Sponsor;
    A.Pass:=EA.Password;
    A.UploadHere:=Upcase(EA.UploadHere) = 'Y';
    A.DownloadHere:=Upcase(EA.DownloadHere) = 'Y';
    A.Level:=EA.Level;
    Write (AFile,A);
  End;
  TextAttr:=7;
  Writeln ('Xfer Area List Converter Done!');
  Close (EFile);
  Close (AFile);
End;

Procedure FilesConvert;
Var EFile:File of EFRec;
    UFile:File of UDRec;
    EF:EFRec;
    UD:UDRec;
    Cnt:Integer;
Begin
  If Areas < 1 Then Begin
    Writeln ('No Transfer Areas to Convert!');
    Halt;
  End;
  For Cnt:=1 to Areas Do Begin
    Assign (EFile,'AREA'+Strr(Cnt));
    Reset (EFile);
    If IOResult <> 0 Then
     Writeln ('Area '+Strr(Cnt)+' Not Found!') Else Begin
       Rename (EFile,'AREA'+Strr(Cnt)+'.EMU');
       Assign (UFile,'AREA');
       Rewrite (UFile);
       FillChar (UD,Sizeof(UD),0);
       While not Eof (EFile) Do Begin
         Read (EFile,EF);
         UD.Sentby:=EF.Sentby;
         UD.When:=EF.When;
         UD.WhenRated:=EF.WhenRated;
         UD.FileName:=EF.Filename;
         UD.Path:=EF.Path;
         UD.Points:=EF.Points;
         UD.FileSize:=EF.FileSize;
         UD.Descrip:=EF.Descrip;
         UD.Downloaded:=EF.Downloaded;
         UD.SpecialFile:=EF.SpecialFile;
       End;
       Close (EFile);
       Close (UFile);
     End;
  End;
End;

Var K:Char;
Begin
  ClrScr;
  TextAttr:=9;
  Writeln (#13#10#13#10'File Transfer Converter!');
  Writeln ('From Emulex/2 to ViSiON');
  TextAttr:=12; Writeln ('Written by: The Elemental');
  Writeln;
  Repeat
   Write ('Run Conversion? ');
   K:=Upcase(ReadKey);
   Writeln;
  Until K in [#13,'Y','N'];
  If K <> 'Y' Then Exit;
  AreaConvert;
  FilesConvert;
End.


