home *** CD-ROM | disk | FTP | other *** search
/ Piper's Pit BBS/FTP: ibm 0000 - 0009 / ibm0000-0009 / ibm0003.tar / ibm0003 / C_DISK5.ZIP / DUMP.C < prev    next >
Encoding:
C/C++ Source or Header  |  1986-07-31  |  1.1 KB  |  55 lines

  1. /*_ dump.c   Thu Jul 31 1986   Modified by: Walter Bright */
  2. /* Copyright (C) 1985 by Northwest Software    */
  3. /* All Rights Reserved                */
  4. /* Written by Walter Bright            */
  5.  
  6. #include    <stdio.h>
  7. #include    <ctype.h>
  8.  
  9. main(argc,argv)
  10. int argc;
  11. char *argv[];
  12. { FILE *f;
  13.   int i, buffer[16];
  14.   unsigned long offset = 0;
  15.  
  16.   if (argc < 2 || argc > 3)
  17.   {    printf("Error: wrong number of arguments\n");
  18.     printf("Use: dump file [starting offset in hex]\n");
  19.     exit(1);
  20.   }
  21.   f = fopen(argv[1],"rb");        /* open file for binary read    */
  22.   if (!f)
  23.   {    printf("Can't open file '%s'\n",argv[1]);
  24.     exit(1);
  25.   }
  26.  
  27.   if (argc == 3)
  28.   {    sscanf(argv[2],"%lx",&offset);
  29.     fseek(f,offset,0);
  30.   }
  31.   while (1)
  32.   {    for (i = 0; i < 16; i++)
  33.         buffer[i] = fgetc(f);
  34.     if (buffer[0] == -1) break;    /* done                */
  35.     printf("%04lx: ",offset);
  36.     for (i = 0; i < 16; i++)
  37.         if (buffer[i] != -1)
  38.             printf("%2x ",buffer[i]);
  39.         else
  40.             printf("   ");
  41.     printf("   ");
  42.     for (i = 0; i < 16; i++)
  43.     {
  44.         if (buffer[i] != -1)
  45.         {    if (!isprint(buffer[i])) buffer[i] = '.';
  46.             putchar(buffer[i]);
  47.         }
  48.         else
  49.             putchar(' ');
  50.     }
  51.     putchar('\n');
  52.     offset += 16;
  53.   }
  54. }
  55.