check_counter.c 818 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <stdint.h>
  4. int main(int argc, char *argv[]) {
  5. int block = 0;
  6. uint32_t value = 0;
  7. uint32_t buf[1024];
  8. if (argc < 2) {
  9. printf("Usage:\n\t\t%s <file-to-check>\n", argv[0]);
  10. exit(0);
  11. }
  12. FILE *f = fopen(argv[1], "r");
  13. if (!f) {
  14. printf("Failed to open file %s\n", argv[1]);
  15. exit(1);
  16. }
  17. while (!feof(f)) {
  18. int i, n = fread(buf, 4, 1024, f);
  19. if (block) i = 0;
  20. else {
  21. i = 1;
  22. value = (buf[0]);
  23. }
  24. for (; i < n; i++) {
  25. if ((buf[i]) != ++value) {
  26. printf("Pos %lx (Block %i, dword %i) expected %x, but got %x\n", block * 4096 + i * 4, block, i, value, (buf[i]));
  27. exit(1);
  28. }
  29. }
  30. if (n) block++;
  31. }
  32. fclose(f);
  33. printf("Checked %i blocks. All is fine\n", block);
  34. return 0;
  35. }