#include <exec/types.h>
#include <stdio.h>
#include <proto/all.h>

struct New
{
 TEXT     Name[31],       // Name of Area
          What[41],       // Description of Area
          Path[51],       // Path
          Password[21],   // Password
          EChar[50];

 BYTE     ON,
          Sex,
          EBYTE[20];

 UBYTE    AccessLevel,
          Area,
          MinAge,
          MaxAge,
          EUBYTE[20];

 WORD     RollOver,
          WExtras[4];

 int      Eint[4];
 long     ELong[5];

 LONGBITS Flags,
          Flags2;
}New;

#define MA_ANONYMOUS 0x00000001  // All Msgs are Anonymous by default
#define MA_ALLOWANON 0x00000002  // Allow Anonymous Msgs

struct Old {

 TEXT Name[30],
      What[50],
      Path[50];

 int  Area,
      ON,
      RollOver;
}Old;


main()
{
 char s[255];
 printf("This program will upgrade your messages.data in your setup dir\n");

 printf("Enter Full Path to your setup directory: ");
 gets(s);
 if( Doit(s) )
  {
   printf("\n\n\n");
  }
 else printf("Something happened, that wasn't suppose to....\n");
}


int Doit(char PATH [])
{
 int in,out;
 char FILEOUT[255];
 int stat,x=0,y;
 char FILEIN[255],date[255],string[255];

 sprintf(FILEIN,"%sMessages.Data",PATH);
 if(access(FILEIN,0)==0)
  {
   in=Open(FILEIN,MODE_OLDFILE);
   if(in==0)
    {
     printf("*** Error, loading the messages.data file\n");
     return 0;
    }
   sprintf(FILEOUT,"%sMessages.Data-new",PATH);
   out=Open(FILEOUT,MODE_NEWFILE);
   if(out==0)
    {
     printf("*** Error, creating messages.data file.\n");
     Close(in);
     return 0;
    }
   for(y=0;y<40;y++)
    {
     stat=Read(in,(char *)&Old,sizeof(struct Old));
     if(stat!=sizeof(struct Old)) break;
     setmem(&New,(LONG)sizeof(struct New),NULL);

     strcpy(New.Name,Old.Name);
     strcpy(New.What,Old.What);
     strcpy(New.Path,Old.Path);

     New.Area=Old.Area;

     New.ON = Old.ON;

     New.Flags |= MA_ALLOWANON;
     New.Sex='B';

     New.RollOver = Old.RollOver;

     stat=Write(out,(char *)&New,sizeof(struct New));
    }
   Close(in);
   Close(out);
  }
 exit(0);
}
