home *** CD-ROM | disk | FTP | other *** search
/ Complete Linux / Complete Linux.iso / docs / system / linux_bo / netboot.zoo / dosum.c < prev    next >
Encoding:
C/C++ Source or Header  |  1993-05-05  |  884 b   |  49 lines

  1. #include <stdio.h>
  2. #include <fcntl.h>
  3.  
  4. unsigned char buffer[0x8000];
  5.  
  6. main(int argc, char **argv)
  7. {
  8. int fp;
  9. unsigned int i, len;
  10. unsigned char x;
  11.     if (argc != 2)
  12.     {
  13.         fprintf(stderr, "Usage: dosum file\n");
  14.         exit(1);
  15.     }
  16.     for(i = 0; i < sizeof(buffer); i++)
  17.         buffer[i] = 0xff;
  18.     fp = open(argv[1], O_RDWR | O_BINARY, 0);
  19.     
  20.     if (fp == -1)
  21.     {
  22.         fprintf(stderr, "Can't open %s\n", argv[1]);
  23.         exit(2);
  24.     }
  25.     len = read(fp, buffer, sizeof(buffer));
  26.     if (len < 10)
  27.     {
  28.         close(fp);
  29.         fprintf(stderr, "%s not a sensible file\n", argv[1]);
  30.         exit(3);
  31.     }
  32.     x = 0;
  33.     for(i = 0; i < sizeof(buffer) - 1; i++)
  34.         x += buffer[i];
  35.     x = 0 - x;
  36.     buffer[i] = x;
  37.     lseek(fp, 0L, 0);
  38.     len = write(fp, buffer, sizeof(buffer));
  39.     if (len != sizeof(buffer))
  40.     {
  41.         close(fp);
  42.         fprintf(stderr, "could not write %s\n", argv[1]);
  43.         exit(4);
  44.     }
  45.     close(fp);
  46.     exit(0);
  47. }
  48.     
  49.