/* Program to zap a file on disk */

#include <stdio.h>

main ()
  {
    char file_name[81], y_n;
    FILE *file_ptr;
    int d, x, loc, num, file_mode = 0;
    long zap_loc, zap_beg;
    int ver_data[16], zap_data[16], loop_flag = 1;

    printf ("\nEnter the name of the file to be zapped:\n");
    scanf ("%s", file_name);

    file_ptr = fopen (file_name, "r+");
    zap_beg = ftell(file_ptr);

    if ( file_ptr == NULL )
     {
      printf ("Could not open %s for I/O.\n", file_name);
      exit (file_ptr);
     }

   while (loop_flag)
   {
    printf ("\nEnter the location (in decimal) to zap: ");
    scanf ("%d", &loc);
    printf ("\nEnter the number of characters (in decimal) to zap: ");
    scanf ("%d", &num);

    for ( x = 0; x < loc; ++x )
     d = getc (file_ptr);
    zap_loc = ftell(file_ptr);

    for ( x = 0; x < num; ++x )
     ver_data[x] = getc (file_ptr);

    printf ("\nEnter the zap data:\n");
    for ( x = 0; x < num; ++x )
     scanf ("%2X", &zap_data[x]);

    printf ("\nOld data: ");
    for ( x = 0; x < num; ++x )
     printf ("%X ", ver_data[x]);
    printf ("\n          ");
    for ( x = 0; x < num; ++x )
     printf (" %c ", ver_data[x]);

    printf ("\nNew data: ");
    for ( x = 0; x < num; ++x )
     printf ("%X ", zap_data[x]);
    printf ("\n          ");
    for ( x = 0; x < num; ++x )
     printf (" %c ", zap_data[x]);

    printf ("\nVerify the zap data (y/n): ");
    fflush(stdin);
    y_n = getchar ();
    if ( y_n == 'n' || y_n == 'N' )
      printf ("\nZAP UNSUCCESSFUL!\n");
    else
     {
      fseek (file_ptr, zap_loc, file_mode);
      for ( x = 0; x < num; ++x )
       fprintf (file_ptr, "%c", zap_data[x]);
      printf ("\nZAP COMPLETED SUCCESSFULLY!\n");
     }

    printf ("\nWould you like to zap again (y/n): ");
    fflush(stdin);
    y_n = getchar ();
    if ( y_n == 'n' || y_n == 'N' )
     exit (0);
    fseek (file_ptr, zap_beg, file_mode);
   }
}
 
 
 
/*         Program Output
 
Script started on Mon Apr 28 14:37:19 1997
poly.nss being added to access control list
strauss.udel.edu% cat zap.txt
 0048 CT 250944    FRPRD.FRD2700.DFDSS.OFFSITE.G0481V00                        
 0059 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% 
strauss.udel.edu% 
strauss.udel.edu% 
strauss.udel.edu% a.out

Enter the name of the file to be zapped:
zap.txt

Enter the location (in decimal) to zap: 3

Enter the number of characters (in decimal) to zap: 2

Enter the zap data:
33 37

Old data: 34 38 
           4  8 
New data: 33 37 
           3  7 
Verify the zap data (y/n): y

ZAP COMPLETED SUCCESSFULLY!

Would you like to zap again (y/n): y

Enter the location (in decimal) to zap: 83

Enter the number of characters (in decimal) to zap: 2

Enter the zap data:
33 37

Old data: 35 39 
           5  9 
New data: 33 37 
           3  7 
Verify the zap data (y/n): y

ZAP COMPLETED SUCCESSFULLY!

Would you like to zap again (y/n): n
strauss.udel.edu% 
strauss.udel.edu% 
strauss.udel.edu% 
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% exit
strauss.udel.edu% 
script done on Mon Apr 28 14:39:04 1997
*/ 
