#include <stdio.h>
#include <strings.h>
#include <stdlib.h>
#include <clib/dos_protos.h>
#include <clib/intuition_protos.h>
#include <clib/asl_protos.h>
Cray-1 Was Here!!!!
FILE *DizOutput;
char buffer[200];

void NormalDiz( char *, char *);  /* Oldstyle Dizzer */
void DizToFile( char * ); // Out Old Diz to file 
void X_Diz( void ); // New X dizzing!

char    *Handy;
char    *Compare = ".";

main(int argc ,char *argv[])
{
    
if(argc==3)
   {
    NormalDiz(argv[2],argv[1]); 
   }
if(argc>3)
   { 
    printf("\nUsage : Dizzer <OutputFileName> <Name of File>\n By Cray-1 For ReNeGaDe\n");
    exit(0);
   }
 if(argc==1)
   {
    X_Diz();
   }

}


void X_Diz( void )
{
   struct FileRequester *Requester;
   struct TagItem MyTags[6]; 
   struct WBArg *Files;
   struct FileInfoBlock Info;
   int    Number;

   MyTags[0].ti_Tag=ASL_Hail;
   MyTags[0].ti_Data=(unsigned long)"Please Select Files For /X-Dizzing\0";
   MyTags[1].ti_Tag=ASLFR_PositiveText;
   MyTags[1].ti_Data=(unsigned long)"Open..\0";
   MyTags[2].ti_Tag=ASLFR_NegativeText;
   MyTags[2].ti_Data=(unsigned long)"Abort..\0";;
   MyTags[3].ti_Tag=ASL_FuncFlags;
   MyTags[3].ti_Data=FILF_MULTISELECT;
   MyTags[4].ti_Tag=TAG_DONE;
   Requester = AllocAslRequest(ASL_FileRequest,MyTags);
      if(!AslRequest(Requester,NULL))
      {
       DisplayBeep(0);
      }
      
      Number = Requester->rf_NumArgs;
   Files  = Requester->rf_ArgList;

   while(Number!=0)
     {
/* Right Each File Must Be Examined() And The Result Stored, In An ARRAY
   A Sort Of Some Sort Must Be Done. On The Dates, And A Table 
   Built Up Of The Order Of The Files.        
*/ 
        strcpy(buffer,Requester->rf_Dir);
        strcat(buffer,Files[Number].wa_Name);
        if(!Examine(Lock(buffer,ACCESS_READ),&Info))printf("Examine Failed\n");
        Number--;
        printf("File Number %d is %s, Size is %d\n",Number,Files[Number].wa_Name,Info.fib_Size);
    }
    
      FreeAslRequest(Requester);
}




void NormalDiz( char *FileName , char *OutName)
{
  Handy = strstr(FileName,Compare);    
  
 if(!strcmp(strupr(Handy),".LHA"))
    {    
     DizOutput = fopen(OutName,"a+");   //Open The Output
     sprintf(buffer,"lha e %s FILE_ID.DIZ >nil:",FileName);
     Execute(buffer,0,0);
     DizToFile( FileName );
    }
       
 if(!strcmp(strupr(Handy),".LZH"))
    {
     DizOutput = fopen(OutName,"a+");
     sprintf(buffer,"lha e %s FILE_ID.DIZ >nil:",FileName);
     Execute(buffer,0,0);
     DizToFile( FileName );
    }

 if(!strcmp(strupr(Handy),".DMS"))
    {
     DizOutput = fopen(OutName,"a+");
     sprintf(buffer,"DMSDescript x FILE_ID.DIZ %s >nil:",FileName);
     Execute(buffer,0,0);
     DizToFile( FileName );
    }
    
 if(!strcmp(strupr(Handy),".TXT"))
    {
     DizOutput = fopen(OutName,"a+");
     sprintf(buffer,"TxtExtract e FILE_ID.DIZ %s >nil:",FileName);
     Execute(buffer,0,0);
     DizToFile( FileName );
    }
 if(!strcmp(strupr(Handy),".EXE"))
    {
      DizOutput = fopen(OutName,"a+");
      sprintf(buffer,"EXEDescript x FILE_ID.DIZ %s >nil:",FileName);
      Execute(buffer,0,0);
      DizToFile( FileName );
    }



}


void DizToFile( char *FileName )
{
	FILE *DIZ;
	BOOL terminated=FALSE; 
	char single;

fprintf(DizOutput,"[33mThe File [0m[1m %s [0m[33mis : \n\n",FileName);

    if((DIZ = fopen("FILE_ID.DIZ", "r"))==NULL)
       {
        fprintf(DizOutput,"[1m[33m\nSorry This File Does Not Contain FILE_ID.DIZ[0m\n");
        fprintf(DizOutput,"[1m[32m__________________________________________[0m[3m[4mDizzer[0m[4m [33mBy [1mCray-1[0m\n");       
        fclose( DizOutput );
        exit( 0);
       }

    while(!terminated)
       {
             single = fgetc( DIZ );
             if( single == EOF)
                {
                    terminated = TRUE;
                    break;
                }
             fputc( single, DizOutput);
             
       }            
    fputc(10,DizOutput);
    fclose( DIZ );
    Execute("Delete File_ID.DIZ >nil:",0,0);   
    fprintf(DizOutput,"[1m[32m___________________________________________________________[0m[3m[4mDizzer[0m[4m [33mBy [1mCray-1[0m\n");        
    fclose( DizOutput );    
    exit(0);
}

