#include <Includes/Main_Global.h>

LZX_Describe( char *FileName)
{
     char buffer[200];
     sprintf(buffer,"LZX -m x %s FILE_ID.DIZ T: >NIL: ",FileName);
     Execute(buffer,0,0);
     return(Read_FILEID());
}

LZX_Find(char *FileName,char *SearchString)
{
 //printf("Looking Inside an LZX!\n");
return(FALSE);
}

LZX_Information( void)
{
    
    FILE                        *Archive_Name;
    char                        *Archive_Buffer;
    char                        *Primary_Buffer;
    char                        *FileName = "work:Test.lzx";
    struct      FileInfoBlock   *FileInfo;
    int                         Index=0x14;
    int                         Delta=0;
    int                         Files=0;
    long                        Cheese=0;
    int                         FileNameLength=0;
    int                         CommentLength=0;
    int                         Incidental_Lock;
    
    FileInfo = malloc(sizeof(struct FileInfoBlock));
    Primary_Buffer = malloc(200);
    Incidental_Lock = Lock(FileName,ACCESS_READ);
    if(Incidental_Lock)
     {
        Examine(Incidental_Lock,FileInfo);
     }
     else
      printf("Unable To Examine %s\n",FileName);
     UnLock(Incidental_Lock); 
    Archive_Name = fopen(FileName,"r");
    if(Archive_Name)
     {
        printf("Opened The LZX.\n");
        Archive_Buffer = malloc(FileInfo->fib_Size);
        if(Archive_Buffer)
         {
            fread(Archive_Buffer,FileInfo->fib_Size,1,Archive_Name);            
            if(Archive_Buffer[0]=='L'&&Archive_Buffer[1]=='Z'&&Archive_Buffer[2]=='X')
              {
                printf("Total File Size: %d\n\n",FileInfo->fib_Size);
               while(Index!=FileInfo->fib_Size)
                {
                  // Index+1 Is A Directory thing
    if(Archive_Buffer[Index]==0x0A && Archive_Buffer[Index+5]==0x0A
       && Archive_Buffer[Index+3]==0x00)//&&(Archive_Buffer[Index+4]==0x00||Archive_Buffer[Index+4]==0x1D)) 
                     {
                        Files++;
                        printf("%3d - ",Files); 
                        CommentLength = Archive_Buffer[Index+4];
                        FileNameLength = Archive_Buffer[Index+20];
                        while(FileNameLength!=0)
                         {
                            Primary_Buffer[Delta]=Archive_Buffer[Index+21+Delta];
                            FileNameLength--;
                            Delta++;
                           }
                         FileNameLength=Delta;
                         while(Delta<60)
                          {
                            Primary_Buffer[Delta]=32;
                            Delta++;
                          }
                        Primary_Buffer[Delta]=0000;
                        printf("%s ",Primary_Buffer);
                        Delta=0;
                        if(Archive_Buffer[Index+1]==0x02&&Archive_Buffer[Index+2]==0x01)
                           printf("Compressed       ");
                        if(Archive_Buffer[Index+1]==0x02&&Archive_Buffer[Index+2]==0x00)                        
                           printf("Scrambled        ");                        
                        if(Archive_Buffer[Index+1]==0x00&&Archive_Buffer[Index+2]==0x00)        
                           printf("UnCompressed     ");
                         
sprintf(Primary_Buffer,"%x%x%x%x",Archive_Buffer[Index-5],Archive_Buffer[Index-6],Archive_Buffer[Index-7],Archive_Buffer[Index-8]);
                        
                        stch_l(Primary_Buffer,&Cheese); 
                        printf("Size - %ld/",Cheese);
sprintf(Primary_Buffer,"%x%x%x%x",Archive_Buffer[Index-1],Archive_Buffer[Index-2],Archive_Buffer[Index-3],Archive_Buffer[Index-4]);
                        stch_l(Primary_Buffer,&Cheese);
                        printf("%ld ",Cheese);
 
                       /*      while(CommentLength!=0)
                              {
                         
                                Primary_Buffer[Delta]=Archive_Buffer[Index+21+FileNameLength+Delta];
                                CommentLength--;
                                Delta++;
                               }
                             Primary_Buffer[Delta]=0000;
                             printf("%s\n",Primary_Buffer);
                        */
                        printf("\n");
                        Delta=0;
                        
                    
                        
                     }
                  Index++;
                 
                }
                printf("\n");
                printf("%d files.\n",Files);

                printf("Valid LZX File Detected\n");
              }
              
             
          
          free(Archive_Buffer);  
          free(Primary_Buffer);
         }
         else
          printf("Unable To Allocate %d Bytes For Archive\n",FileInfo->fib_Size);
          

      fclose(Archive_Name);
     }
     else
      printf("Couldn't Open The Archive File\n");
   free(FileInfo);
     

}
