--- /dev/null
+#include <stdio.h>\r
+#include <stdlib.h>\r
+\r
+int main(int argc, char *argv[])\r
+{\r
+ printf("HEXCMP 0.3\nHexadecimal Comparator\n<-Harvie 2oo7\n\n");\r
+ if(argc < 3) {\r
+ printf("Usage: hexcmp oldfile newfile [decimal_offset_to_start_at]\n");\r
+ printf("This will show what is new in \"newfile\",\n");\r
+ printf("this can be useful, when making binary patchers.\n\n");\r
+ system("pause");\r
+ return 0;\r
+ }\r
+ \r
+ printf("Comparing old \"%s\" with new \"%s\"\n", argv[1], argv[2]); \r
+ \r
+ FILE *forig, *fcrac;\r
+ forig = fopen(argv[1], "rb");\r
+ if(forig == NULL) { printf("Error while opening %s\n", argv[1]); return 0; }\r
+ fcrac = fopen(argv[2], "rb");\r
+ if(fcrac == NULL) { printf("Error while opening %s\n", argv[2]); return 0; }\r
+ \r
+ short found = 0;\r
+ unsigned long int offset = 0, last = 0, end = 0, dlen = 0;\r
+ int corig = 0, ccrac = 0;\r
+ \r
+ if(argc > 3) {\r
+ offset = atof(argv[3]);\r
+ printf("Comparing from offset D: %d H: 0x%x\n", offset, offset);\r
+ }\r
+ printf("\n");\r
+ \r
+ //Seek\r
+ fseek(forig, offset, SEEK_SET);\r
+ fseek(fcrac, offset, SEEK_SET);\r
+ \r
+ while((ccrac = fgetc(fcrac)) != EOF) {\r
+ if( (corig = fgetc(forig)) == EOF ) {\r
+ corig == -9999;\r
+ if(end == 0) {\r
+ end = 1; \r
+ }\r
+ }\r
+ if(corig != ccrac) {\r
+ \r
+ if(end == 1) {\r
+ if(dlen != 0) {\r
+ printf("\nLenght: %d Bytes", dlen);\r
+ dlen = 0;\r
+ }\r
+ printf("\n\n--- END OF OLDER FILE ---\n\n"); \r
+ end = 2;\r
+ }\r
+ \r
+ if(offset != (last+1)) {\r
+ if(dlen != 0) {\r
+ printf("\nLenght: %d Bytes", dlen);\r
+ dlen = 0;\r
+ printf("\n\n");\r
+ }\r
+ printf("Difference @ D: %d H: 0x%x\n", offset, offset);\r
+ }\r
+ \r
+ printf("\\x%x", ccrac);\r
+ \r
+ dlen++;\r
+ last = offset;\r
+ found = 1;\r
+ }\r
+ \r
+ offset++;\r
+ }\r
+ \r
+ if(dlen != 0) {\r
+ printf("\nLenght: %d Bytes", dlen);\r
+ }\r
+ \r
+ fclose(forig);\r
+ fclose(fcrac);\r
+ \r
+ if(found == 0) {\r
+ printf("No difference found!!!");\r
+ }\r
+ printf("\n");\r
+ //system("PAUSE"); //Debug\r
+ return 0;\r
+}\r