OK, so here's my problem now. This whole bit of code works perfectly (as long as you're converting a certain type of file). However, when I package the whole thing and try to run it on any other computer, it stops responding. I have no clue why that would be. Any help?
Code:
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
#include <stdint.h>
#include <string.h>
main(int argc, char *argv[])
{
FILE* originalSave;
FILE* newSave;
long fileSize;
long finalSize;
uint32_t *buffer, result = 0;
int x;
char *originalSaveName = argv[1],
*newSaveName = malloc(MAX_PATH),
*chr;
originalSave = fopen(originalSaveName, "rb");
chr = strrchr(argv[0],'\\');
strncpy(newSaveName, (char*)argv[0], chr-argv[0]+1);
chr = strrchr(argv[1],'\\');
strcat(newSaveName, "Wii64 Saves");
strcat(newSaveName, chr);
newSave = fopen(newSaveName, "wb");
fseek(originalSave, 0, SEEK_END);
fileSize = ftell(originalSave);
rewind(originalSave);
if (fileSize < 16384)
finalSize = 16384;
else if (fileSize < 32768)
finalSize = 32768;
else if (fileSize < 65536)
finalSize = 65536;
else if (fileSize < 131072)
finalSize = 131072;
else if (fileSize < 262144)
finalSize = 262144;
else if (fileSize < 524288)
finalSize = 524288;
else if (fileSize > 524288){
printf("Error: invalid save size: %d", fileSize/1024);
return 1;}
buffer = (uint32_t*) malloc(sizeof(char)*fileSize);
for (x = 0; x < fileSize/4; x++)
{
fread(buffer, 1, 4, originalSave);
result = ((*buffer << 24) & 0xFF000000) |
((*buffer << 8) & 0x00FF0000) |
((*buffer >> 8) & 0x0000FF00) |
((*buffer >> 24) & 0x000000FF);
fwrite(&result, 1, 4, newSave);
}
result = 11111111;
for (x = 0; x < (finalSize-fileSize); x++)
{
fwrite(&result, 1, 1, newSave);
}
fclose(newSave);
fclose(originalSave);
free(buffer);
return 0;
}