Remove path length limit in DoConfig clone
This commit is contained in:
parent
9a79041c6c
commit
d15e1b7f41
1 changed files with 19 additions and 9 deletions
|
@ -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)
|
||||||
|
{
|
||||||
|
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;
|
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;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue