/* Program to dump a file to the screen */

#include<stdio.h>

FILE *file_ptr;
char file_name[81];
int array[16];

void file_open() 
  {
    printf ("Enter the name of the file to be dumped:\n");
    scanf ("%s", file_name);

    file_ptr = fopen (file_name, "r");

    if ( file_ptr == NULL )
     {
      printf ("Could not open %s for reading.\n", file_name);
      exit (file_ptr);
     }
  } 
 
void display_address( int z )
  {
     printf ("%04X %05d\t", z, z);
  }
 
void display_hex( int a )
  {
    int x;
    for ( x = 0; x < a; ++x )
     {
      if ( x % 4 == 0 )
       printf (" ");
      printf ("%2X", array[x]);
     }
    printf ("\t");
  }
 
void display_text( int b )
  {
    int x;
    for ( x = 0; x < b; ++x )
     {
       if ( array[x] == 0X9 ||
            array[x] == 0XA ||
            array[x] == 0XB ||
            array[x] == 0XC ||
            array[x] == 0XD ||
            array[x] == 0XE ||
            array[x] == 0XF ) 
        array[x] = 0X20;
       printf ("%c", array[x]);
     }
    printf ("\n");
  }
 
main ()
  {
    int c, d, r;
    int h = 0;
    int loop_flag = 1;

    file_open();

    while ( loop_flag )
    {
     for ( r = 0; r < 20; ++r )                                    
      {
       for ( c = 0; c < 16; ++c )                                      
	{
         if ((d = getc (file_ptr))  ==  EOF )
          {
           if ( h == 0 )
            {
             printf("File is empty!!!\n");
             exit(0);
            }
           else
            {
             display_hex(c); 
             display_text(c);
             exit(0);
            }
          }
         if ( c == 0 )
           display_address(h);
         array[c] = d;
         ++h;
	}
       display_hex(c); 
       display_text(c);
      }
     printf ("Enter 0 to quit; 1 to continue: ");
     scanf ("%d", &loop_flag);
    }
}
 
 
 
/*         Program Output
 
Script started on Mon Apr 28 16:06:32 1997
poly.nss being added to access control list
strauss.udel.edu% cat zap.txt
 0037 CT 250944    FRPRD.FRD2700.DFDSS.OFFSITE.G0481V00                        
 0037 CT 251665    FRPRD.FRD2800.DFDSS.OFFSITE.G0488V00                        
 0037 CT 252490    LMPRD.LMD0910.ADAULD.PRD171.G1004V00                        
 0037 CT 261578    DFHSM.DMP.DAILY.VPROD08.D97079.T1804                        
 0037 CT 261604    DFHSM.DMP.DAILY.VPROD06.D97079.T1804                        
 0037 CT 261688    DFHSM.DMP.DAILY.VPROD07.D97079.T1804                        
 0037 CT 261816    DFHSM.DMP.DAILY.VPROD08.D97079.T1804                        
 0037 CT 261918    DFHSM.DMP.DAILY.VPROD06.D97079.T1804                        
 0037 CT 261957    DFHSM.DMP.DAILY.VPROD09.D97079.T1804                        
 0037 CT 261996    DFHSM.DMP.DAILY.VPROD07.D97079.T1804                        
strauss.udel.edu% a.out
Enter the name of the file to be dumped:
zap.txt
0000 00000	 20303033 37204354 20323530 39343420	 0037 CT 250944 
0010 00016	 20202046 52505244 2E465244 32373030	   FRPRD.FRD2700
0020 00032	 2E444644 53532E4F 46465349 54452E47	.DFDSS.OFFSITE.G
0030 00048	 30343831 56303020 20202020 20202020	0481V00         
0040 00064	 20202020 20202020 20202020 202020 A	                
0050 00080	 20303033 37204354 20323531 36363520	 0037 CT 251665 
0060 00096	 20202046 52505244 2E465244 32383030	   FRPRD.FRD2800
0070 00112	 2E444644 53532E4F 46465349 54452E47	.DFDSS.OFFSITE.G
0080 00128	 30343838 56303020 20202020 20202020	0488V00         
0090 00144	 20202020 20202020 20202020 202020 A	                
00A0 00160	 20303033 37204354 20323532 34393020	 0037 CT 252490 
00B0 00176	 2020204C 4D505244 2E4C4D44 30393130	   LMPRD.LMD0910
00C0 00192	 2E414441 554C442E 50524431 37312E47	.ADAULD.PRD171.G
00D0 00208	 31303034 56303020 20202020 20202020	1004V00         
00E0 00224	 20202020 20202020 20202020 202020 A	                
00F0 00240	 20303033 37204354 20323631 35373820	 0037 CT 261578 
0100 00256	 20202044 4648534D 2E444D50 2E444149	   DFHSM.DMP.DAI
0110 00272	 4C592E56 50524F44 30382E44 39373037	LY.VPROD08.D9707
0120 00288	 392E5431 38303420 20202020 20202020	9.T1804         
0130 00304	 20202020 20202020 20202020 202020 A	                
Enter 0 to quit; 1 to continue: 1
0140 00320	 20303033 37204354 20323631 36303420	 0037 CT 261604 
0150 00336	 20202044 4648534D 2E444D50 2E444149	   DFHSM.DMP.DAI
0160 00352	 4C592E56 50524F44 30362E44 39373037	LY.VPROD06.D9707
0170 00368	 392E5431 38303420 20202020 20202020	9.T1804         
0180 00384	 20202020 20202020 20202020 202020 A	                
0190 00400	 20303033 37204354 20323631 36383820	 0037 CT 261688 
01A0 00416	 20202044 4648534D 2E444D50 2E444149	   DFHSM.DMP.DAI
01B0 00432	 4C592E56 50524F44 30372E44 39373037	LY.VPROD07.D9707
01C0 00448	 392E5431 38303420 20202020 20202020	9.T1804         
01D0 00464	 20202020 20202020 20202020 202020 A	                
01E0 00480	 20303033 37204354 20323631 38313620	 0037 CT 261816 
01F0 00496	 20202044 4648534D 2E444D50 2E444149	   DFHSM.DMP.DAI
0200 00512	 4C592E56 50524F44 30382E44 39373037	LY.VPROD08.D9707
0210 00528	 392E5431 38303420 20202020 20202020	9.T1804         
0220 00544	 20202020 20202020 20202020 202020 A	                
0230 00560	 20303033 37204354 20323631 39313820	 0037 CT 261918 
0240 00576	 20202044 4648534D 2E444D50 2E444149	   DFHSM.DMP.DAI
0250 00592	 4C592E56 50524F44 30362E44 39373037	LY.VPROD06.D9707
0260 00608	 392E5431 38303420 20202020 20202020	9.T1804         
0270 00624	 20202020 20202020 20202020 202020 A	                
Enter 0 to quit; 1 to continue: 1
0280 00640	 20303033 37204354 20323631 39353720	 0037 CT 261957 
0290 00656	 20202044 4648534D 2E444D50 2E444149	   DFHSM.DMP.DAI
02A0 00672	 4C592E56 50524F44 30392E44 39373037	LY.VPROD09.D9707
02B0 00688	 392E5431 38303420 20202020 20202020	9.T1804         
02C0 00704	 20202020 20202020 20202020 202020 A	                
02D0 00720	 20303033 37204354 20323631 39393620	 0037 CT 261996 
02E0 00736	 20202044 4648534D 2E444D50 2E444149	   DFHSM.DMP.DAI
02F0 00752	 4C592E56 50524F44 30372E44 39373037	LY.VPROD07.D9707
0300 00768	 392E5431 38303420 20202020 20202020	9.T1804         
0310 00784	 20202020 20202020 20202020 202020 A	                
	
strauss.udel.edu% exit
strauss.udel.edu% 
script done on Mon Apr 28 16:07:18 1997
*/
