Remove path length limit in DoConfig clone

This commit is contained in:
Clownacy 2020-08-31 19:56:27 +01:00
parent 9a79041c6c
commit d15e1b7f41

View file

@ -1,5 +1,6 @@
#include <stddef.h> #include <stddef.h>
#include <stdio.h> #include <stdio.h>
#include <stdlib.h>
#include <string.h> #include <string.h>
#include "glad/glad.h" #include "glad/glad.h"
@ -34,15 +35,25 @@ int main(int argc, char *argv[])
{ {
(void)argc; (void)argc;
char base_directory[0x400]; char *config_path;
strcpy(base_directory, argv[0]); for (size_t i = strlen(argv[0]);; --i)
for (size_t i = strlen(base_directory);; --i)
{ {
if (i == 0 || base_directory[i] == '\\' || base_directory[i] == '/') if (i == 0 || argv[0][i] == '\\' || argv[0][i] == '/')
{ {
base_directory[i] = '\0'; const char config_string[] = "Config.dat";
if (argv[0][i] == '\\' || argv[0][i] == '/')
++i; // Point to after the path separator
config_path = (char*)malloc(i + sizeof(config_string));
if (config_path == NULL)
return 1;
memcpy(config_path, argv[0], i);
memcpy(config_path + i, config_string, sizeof(config_string)); // Will copy null-character
break; break;
} }
} }
@ -104,9 +115,6 @@ int main(int argc, char *argv[])
Config configuration; Config configuration;
char config_path[0x400];
sprintf(config_path, "%s/Config.dat", base_directory);
FILE *file = fopen(config_path, "rb"); FILE *file = fopen(config_path, "rb");
if (file != NULL) if (file != NULL)
@ -315,5 +323,7 @@ int main(int argc, char *argv[])
glfwTerminate(); glfwTerminate();
} }
free(config_path);
return 0; return 0;
} }