#include <stdio.h>
#include <strings.h>
#include <stdlib.h>
#include <clib/dos_protos.h>

FILE *DizOutput;
char buffer[200];

main(int argc ,char *argv[] )
{
    
    if(argc<1)
      {
	printf("Sorry This Program Requires At Least One Filename\n\a");
	Exit(0);
      }
    if(argc>3)
     {
       printf("Sorry you are only allowed togive one option at the moment\n\a");
       Exit(0);
     }
/*

dizzer File_To_Be_Dizzed [options] Output_File_Name

	options = /X for Express Style Output
		  C for commented output

*/    
    char *compare =".";
    char *filename;
    char *Suffix;
    BOOL Express = FALSE;
    BOOL Commented = FALSE;
/* Prototypes Start Here */

    static void DizToFile( char * );

    filename = argv[1];
  Suffix = strstr(filename,compare);

  if(!strcmp(strupr(argv[2]),"/X")
     {
	Express=TRUE;
     }
  if(!strcmp(strupr(argv[2]),"C")
     {
       Commented=TRUE;
     }
       

if(!strcmp(strupr(Suffix),".LHA"))
{    
    DizOutput = fopen(argv[1],"a+");
    Execute("cd ram: >nill",0,0);
    sprintf(buffer,"lha e %s FILE_ID.DIZ >nill:",argv[2]);
    Execute(buffer,0,0);
    DizToFile( argv[2] );
}

if(!strcmp(strupr(Suffix),".LZH"))
{
        DizOutput = fopen(argv[1],"a+");
        Execute("cd ram: >nill",0,0);
        sprintf(buffer,"lha e %s FILE_ID.DIZ >nill:",argv[2]);
        Execute(buffer,0,0);
        DizToFile( argv[2] );
}
if(!strcmp(strupr(Suffix),".DMS"))
{
    DizOutput = fopen(argv[1],"a+");
    Execute("cd ram: >nill",0,0);
    sprintf(buffer,"DMSDescript x FILE_ID.DIZ %s >nill:",argv[2]);
    Execute(buffer,0,0);
    DizToFile( argv[2] );
}
    
if(!strcmp(strupr(Suffix),".TXT"))
{
    DizOutput = fopen(argv[1],"a+");
    Execute("cd ram: >nill",0,0);
    sprintf(buffer,"TxtExtract e FILE_ID.DIZ %s >nill:",argv[2]);
    Execute(buffer,0,0);
    DizToFile( argv[2] );
}
if(!strcmp(strupr(Suffix),".EXE"))
{
       DizOutput = fopen(argv[1],"a+");
       Execute("cd ram: >nill",0,0);
       sprintf(buffer,"EXEDescript x FILE_ID.DIZ %s >nill:",argv[2]);
       Execute(buffer,0,0);
       DizToFile( argv[2] );
}

printf("\nUsage : Dizzer <OutputFileName> <Name of File>\n By Cray-1 For ReNeGaDe\n");
Exit(0);
}



void DizToFile( char fish[200] )
{
    FILE *DIZ;
    BOOL terminated=FALSE; 
    char single;
 if(Express)
  {
	fprintf(DizOutput,    

/* Ami-Express Style FileListing */
"
fprintf(dizOut,"%s P %d %s",name,size,date);
fprintf(dizout,"%s\n",line1ofdiz);
fprintf(

Name________ P Size__  Date____  DIZDIZDIZDIZDIZDIZDIZDIZDIZDIZDIZDIZDIZDIZDI
                                 DIZDIZDIZDIZDIZDIZDIZDIZDIZDIZDIZDIZDIZDIZDI
                                 DIZDIZDIZDIZDIZDIZDIZDIZDIZDIZDIZDIZDIZDIZDI
                                 DIZDIZDIZDIZDIZDIZDIZDIZDIZDIZDIZDIZDIZDIZDI
                                 DIZDIZDIZDIZDIZDIZDIZDIZDIZDIZDIZDIZDIZDIZDI
                                 DIZDIZDIZDIZDIZDIZDIZDIZDIZDIZDIZDIZDIZDIZDI
                                 DIZDIZDIZDIZDIZDIZDIZDIZDIZDIZDIZDIZDIZDIZDI
                                 DIZDIZDIZDIZDIZDIZDIZDIZDIZDIZDIZDIZDIZDIZDI
                                 DIZDIZDIZDIZDIZDIZDIZDIZDIZDIZDIZDIZDIZDIZDI
                                 DIZDIZDIZDIZDIZDIZDIZDIZDIZDIZDIZDIZDIZDIZDI
                                 DIZDIZDIZDIZDIZDIZDIZDIZDIZDIZDIZDIZDIZDIZDI
                                 DIZDIZDIZDIZDIZDIZDIZDIZDIZDIZDIZDIZDIZDIZDI
"
 
  }

/*
Lots of Options Controling The Output Style And Things Like FULL Path
and Stuff Like That From The Options Page.
*/

 if(!Express)
    {
    fprintf(DizOutput,"\n[33mThe File [0m[1m %s [0m[33mis : \n\n",fish);
    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_______________________________Custom_Version_For_Renegade_[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);
             
       }            
    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);
}

