
See script directory for method. The script to run in the top level MaxScale directory is called maxscale-uncrustify.sh, which uses another script, list-src, from the same directory (so you need to set your PATH). The uncrustify version was 0.66.
55 lines
1.2 KiB
C
55 lines
1.2 KiB
C
/* Parse a configuration file into a struct using X-Macros */
|
|
|
|
#include <stdio.h>
|
|
#include <string.h>
|
|
#include "../ini.h"
|
|
|
|
/* define the config struct type */
|
|
typedef struct
|
|
{
|
|
#define CFG(s, n, default) char* s##_##n;
|
|
#include "config.def"
|
|
} config;
|
|
|
|
/* create one and fill in its default values */
|
|
config Config = {
|
|
#define CFG(s, n, default) default,
|
|
#include "config.def"
|
|
};
|
|
|
|
/* process a line of the INI file, storing valid values into config struct */
|
|
int handler(void* user,
|
|
const char* section,
|
|
const char* name,
|
|
const char* value)
|
|
{
|
|
config* cfg = (config*)user;
|
|
|
|
if (0)
|
|
{
|
|
}
|
|
#define CFG(s, n, default) \
|
|
else if (strcmp(section, #s) == 0 \
|
|
&& strcmp(name, #n) == 0) {cfg->s##_##n = strdup(value);}
|
|
#include "config.def"
|
|
|
|
return 1;
|
|
}
|
|
|
|
/* print all the variables in the config, one per line */
|
|
void dump_config(config* cfg)
|
|
{
|
|
#define CFG(s, n, default) printf("%s_%s = %s\n", #s, #n, cfg->s##_##n);
|
|
#include "config.def"
|
|
}
|
|
|
|
int main(int argc, char* argv[])
|
|
{
|
|
if (ini_parse("test.ini", handler, &Config) < 0)
|
|
{
|
|
printf("Can't load 'test.ini', using defaults\n");
|
|
}
|
|
dump_config(&Config);
|
|
return 0;
|
|
}
|