Yes, I am trying to build the full path. That's why I was trying to pass all those different portions of the path in the first place.
Here's my whole code as it stands now:
Code:
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
#include <stdint.h>
main(int argc, char *argv[])
{
FILE* originalSave;
FILE* newSave;
long fileSize;
long finalSize;
uint32_t *buffer, result = 0;
int x;
char *savePath;
char *name;
char *ext;
char *saveText;
originalSave = fopen(argv[1], "rb");
if (originalSave == NULL){
printf("Original file unopened");
system("PAUSE");
return 1;
}
ext = argv[2];
name = argv[3];
savePath = argv[4];
//printf("savePath = %s\nname = %s\next = %s\n", savePath, name, ext);
//printf("%s\%s%s\n", savePath, name, ext);
//system("PAUSE");
//return(0);
sprintf(saveText, "%s%s(Wii64)%s", savePath, name, ext);
newSave = fopen(saveText, "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;
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;
}
P.S. Really sad you guys don't have the spoiler tags enabled...
And yes, this code actually works. I've converted a file and tested its use to determine it was a successful conversion. That was before I tried dynamically determining the full path and name, etc, of the new file.