conf: Minor --help improvements

This commit is contained in:
Luke Dashjr 2025-03-16 03:54:46 +00:00
parent 8fdf69c644
commit 2666ff70b8
No known key found for this signature in database
GPG Key ID: A291A2C45D0C504A
3 changed files with 27 additions and 31 deletions

View File

@ -461,58 +461,54 @@ int datum_read_config(const char *conffile) {
return 1; return 1;
} }
void datum_gateway_help(void) { void datum_gateway_help(const char * const argv0) {
unsigned int i;
int p; int p;
char lastcat[512] = { 0 }; const char *lastcat = "";
char paddots[64];
strcpy(paddots, "..............................................................."); static const char * const paddots = "..............................................................";
printf("usage: datum_gateway [OPTION...]\n\n"); printf("Usage: %s [OPTION]...\n\n", argv0);
printf("Command line options:\n\n"); puts("Command line options:\n");
printf(" -c, --config=FILE ..................... Path to configuration JSON file (default: ./datum_gateway_config.json)\n"); puts(" -c, --config=FILE ..................... Path to configuration JSON file (default: ./datum_gateway_config.json)");
printf(" -?, --help ............................ Print this help\n"); puts(" -?, --help ............................ Print this help");
printf(" --version ............................. Print this software's name and version\n"); puts(" --version ............................. Print this software's name and version");
puts(""); puts("");
printf("Configuration file options:\n\n{\n"); puts("Configuration file options:\n\n{");
for (i=0;i<NUM_CONFIG_ITEMS;i++) { for (unsigned int i = 0; i < NUM_CONFIG_ITEMS; ++i) {
if (strcmp(datum_config_options[i].category, lastcat)) { const T_DATUM_CONFIG_ITEM * const opt = &datum_config_options[i];
if (i) { printf(" },\n"); } if (strcmp(opt->category, lastcat)) {
printf(" \"%s\": {\n", datum_config_options[i].category); if (i) { puts(" },"); }
strcpy(lastcat, datum_config_options[i].category); printf(" \"%s\": {\n", opt->category);
lastcat = opt->category;
} }
p = 30 - strlen(datum_config_options[i].name); p = 30 - strlen(opt->name);
if (p < 0) p = 0; if (p < 0) p = 0;
if (p > 62) p = 62; printf(" \"%s\": %.*s %s (%s", opt->name, p, paddots, opt->description, datum_conf_var_type_text[opt->var_type]);
paddots[p] = 0; if (opt->required) {
printf(" \"%s\": %s %s (%s", datum_config_options[i].name, paddots, datum_config_options[i].description, datum_conf_var_type_text[datum_config_options[i].var_type]); puts(", REQUIRED)");
paddots[p] = '.';
if (datum_config_options[i].required) {
printf(", REQUIRED)\n");
} else { } else {
switch(datum_config_options[i].var_type) { switch (opt->var_type) {
case DATUM_CONF_INT: { case DATUM_CONF_INT: {
printf(", default: %d)\n",datum_config_options[i].default_int); printf(", default: %d)\n", opt->default_int);
break; break;
} }
case DATUM_CONF_BOOL: { case DATUM_CONF_BOOL: {
printf(", default: %s)\n",datum_config_options[i].default_bool?"true":"false"); printf(", default: %s)\n", opt->default_bool ? "true" : "false");
break; break;
} }
case DATUM_CONF_STRING: { case DATUM_CONF_STRING: {
printf(", default: \"%s\")\n",datum_config_options[i].default_string[0]); printf(", default: \"%s\")\n", opt->default_string[0]);
break; break;
} }
default: { default: {
printf(")\n"); puts(")");
break; break;
} }
} }
} }
} }
printf(" }\n}\n\n"); puts(" }\n}\n");
} }

View File

@ -146,6 +146,6 @@ typedef struct {
extern global_config_t datum_config; extern global_config_t datum_config;
int datum_read_config(const char *conffile); int datum_read_config(const char *conffile);
void datum_gateway_help(void); void datum_gateway_help(const char *argv0);
#endif #endif

View File

@ -83,7 +83,7 @@ static error_t parse_opt(int key, char *arg, struct argp_state *state) {
struct arguments *arguments = state->input; struct arguments *arguments = state->input;
switch (key) { switch (key) {
case '?': { case '?': {
datum_gateway_help(); datum_gateway_help(state->argv[0]);
exit(0); exit(0);
break; break;
} }