mirror of
https://github.com/libretro/RetroArch
synced 2025-03-29 22:20:21 +00:00
Appends the terminating nul to parsing strings.
This commit is contained in:
parent
743da9300b
commit
50abb14d96
@ -18,7 +18,7 @@ struct config_file
|
||||
|
||||
static char *getaline(FILE *file)
|
||||
{
|
||||
char *newline = malloc(8);
|
||||
char *newline = malloc(9);
|
||||
size_t cur_size = 8;
|
||||
size_t index = 0;
|
||||
|
||||
@ -28,12 +28,13 @@ static char *getaline(FILE *file)
|
||||
if (index == cur_size)
|
||||
{
|
||||
cur_size *= 2;
|
||||
newline = realloc(newline, cur_size);
|
||||
newline = realloc(newline, cur_size + 1);
|
||||
}
|
||||
|
||||
newline[index++] = in;
|
||||
in = getc(file);
|
||||
}
|
||||
newline[index] = '\0';
|
||||
return newline;
|
||||
}
|
||||
|
||||
@ -48,7 +49,7 @@ static bool parse_line(struct entry_list *list, char *line)
|
||||
while (isspace(*line))
|
||||
line++;
|
||||
|
||||
char *key = malloc(8);
|
||||
char *key = malloc(9);
|
||||
size_t cur_size = 8;
|
||||
size_t index = 0;
|
||||
|
||||
@ -57,11 +58,12 @@ static bool parse_line(struct entry_list *list, char *line)
|
||||
if (index == cur_size)
|
||||
{
|
||||
cur_size *= 2;
|
||||
key = realloc(key, cur_size);
|
||||
key = realloc(key, cur_size + 1);
|
||||
}
|
||||
|
||||
key[index++] = *line++;
|
||||
}
|
||||
key[index] = '\0';
|
||||
list->key = key;
|
||||
|
||||
while (isspace(*line))
|
||||
|
@ -6,13 +6,28 @@
|
||||
|
||||
typedef struct config_file config_file_t;
|
||||
|
||||
/////
|
||||
// Config file format
|
||||
// - # are treated as comments. Rest of the line is ignored.
|
||||
// - Format is: key = value. There can be as many spaces as you like in-between.
|
||||
// - Value can be wrapped inside "" for multiword strings. (foo = "hai u")
|
||||
|
||||
// Loads a config file. Returns NULL if file doesn't exist.
|
||||
config_file_t *config_file_new(const char *path);
|
||||
// Frees config file.
|
||||
void config_file_free(config_file_t *conf);
|
||||
|
||||
// All extract functions return true when value is valid and exists. Returns false otherwise.
|
||||
|
||||
// Extracts a double from config file.
|
||||
bool config_get_double(config_file_t *conf, const char *entry, double *in);
|
||||
// Extracts an int from config file.
|
||||
bool config_get_int(config_file_t *conf, const char *entry, int *in);
|
||||
// Extracts a single char. If value consists of several chars, this is an error.
|
||||
bool config_get_char(config_file_t *conf, const char *entry, char *in);
|
||||
// Extracts an allocated string in *in. This must be free()-d if this function succeeds.
|
||||
bool config_get_string(config_file_t *conf, const char *entry, char **in);
|
||||
// Extracts a boolean from config. Valid boolean true are "true" and "1". Valid false are "false" and "0". Other values will be treated as an error.
|
||||
bool config_get_bool(config_file_t *conf, const char *entry, bool *in);
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user