summaryrefslogtreecommitdiff
path: root/4hexchat.c
diff options
context:
space:
mode:
Diffstat (limited to '4hexchat.c')
-rw-r--r--4hexchat.c40
1 files changed, 40 insertions, 0 deletions
diff --git a/4hexchat.c b/4hexchat.c
new file mode 100644
index 0000000..956a4a7
--- /dev/null
+++ b/4hexchat.c
@@ -0,0 +1,40 @@
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+
+int main(int argc, char *argv[]) {
+ if(argc < 3){puts("Syntax: 4Hexchat Input Output"); return -1;}
+
+ FILE *File = fopen(argv[1],"rb");
+ if(File == NULL) {
+ fputs("Couldn't open file for reading",stderr); return 0;
+ }
+ fseek(File, 0, SEEK_END);
+ long FileSize = ftell(File);
+ rewind(File);
+ char *Buffer = (char*)malloc(sizeof(char)*FileSize);
+ if(Buffer == NULL) {
+ fclose(File);
+ fputs("Can't allocate memory",stderr); return 0;
+ }
+ if(FileSize != fread(Buffer,1,FileSize,File)) {
+ fclose(File);
+ fputs("Can't read from file",stderr); return 0;
+ }
+ fclose(File);
+ File = fopen(argv[2],"wb");
+ if(File == NULL) {
+ fputs("Couldn't open file for writing",stderr); return 0;
+ }
+
+ int i;
+ for(i=0;i<FileSize;i++) {
+ if(!memcmp(&Buffer[i], "xchat_", 6) && Buffer[i-1] != 'e') fprintf(File, "he");
+ if(!memcmp(&Buffer[i], "xchat-", 6) && Buffer[i-1] != 'e') fprintf(File, "he");
+ if(!memcmp(&Buffer[i], "XCHAT_", 6) && Buffer[i-1] != 'E') fprintf(File, "HE");
+ fputc(Buffer[i], File);
+ }
+ fclose(File);
+ free(Buffer);
+ return 1;
+}