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 <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "glad/glad.h"
@ -34,15 +35,25 @@ int main(int argc, char *argv[])
{
(void)argc;
char base_directory[0x400];
char *config_path;
strcpy(base_directory, argv[0]);
for (size_t i = strlen(argv[0]);; --i)
{
if (i == 0 || argv[0][i] == '\\' || argv[0][i] == '/')
{
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
for (size_t i = strlen(base_directory);; --i)
{
if (i == 0 || base_directory[i] == '\\' || base_directory[i] == '/')
{
base_directory[i] = '\0';
break;
}
}
@ -104,9 +115,6 @@ int main(int argc, char *argv[])
Config configuration;
char config_path[0x400];
sprintf(config_path, "%s/Config.dat", base_directory);
FILE *file = fopen(config_path, "rb");
if (file != NULL)
@ -315,5 +323,7 @@ int main(int argc, char *argv[])
glfwTerminate();
}
free(config_path);
return 0;
}