[common] option: implement ability to dump config into ini

This is intended to be used for saving filter options into an ini file.
This commit is contained in:
Quantum 2021-08-27 02:30:17 -04:00 committed by Geoffrey McRae
parent e22a070dd3
commit f0624ccf89
2 changed files with 23 additions and 0 deletions

View File

@ -22,6 +22,7 @@
#define _H_COMMON_OPTION_ #define _H_COMMON_OPTION_
#include <stdbool.h> #include <stdbool.h>
#include <stdio.h>
#include "common/stringlist.h" #include "common/stringlist.h"
enum OptionType enum OptionType
@ -94,6 +95,9 @@ bool option_validate(void);
// print out the options, help, and their current values // print out the options, help, and their current values
void option_print(void); void option_print(void);
// dump the options in ini format into the file
bool option_dump(FILE * file, const char * module);
// final cleanup // final cleanup
void option_free(void); void option_free(void);

View File

@ -747,6 +747,25 @@ void option_print(void)
} }
} }
// dump the options in ini format into the file
bool option_dump(FILE * file, const char * module)
{
fprintf(file, "[%s]\n", module);
for (int i = 0; i < state.oCount; ++i)
{
struct Option * o = state.options[i];
if (strcasecmp(o->module, module) != 0)
continue;
char * value = o->toString(o);
fprintf(file, "%s=%s\n", o->name, value);
free(value);
}
fputc('\n', file);
return true;
}
struct Option * option_get(const char * module, const char * name) struct Option * option_get(const char * module, const char * name)
{ {
for(int i = 0; i < state.oCount; ++i) for(int i = 0; i < state.oCount; ++i)