DLLIMPORT void cfg_opt_nprint_var(cfg_opt_t *opt, unsigned int index, FILE *fp) { const char *str; assert(opt && fp); switch(opt->type) { case CFGT_INT: fprintf(fp, "%ld", cfg_opt_getnint(opt, index)); break; case CFGT_FLOAT: fprintf(fp, "%lf", cfg_opt_getnfloat(opt, index)); break; case CFGT_STR: str = cfg_opt_getnstr(opt, index); fprintf(fp, "\"%s\"", str ? str : ""); break; case CFGT_BOOL: fprintf(fp, "%s", cfg_opt_getnbool(opt, index) ? "true" : "false"); break; case CFGT_NONE: case CFGT_SEC: case CFGT_FUNC: case CFGT_PTR: break; } }
/* validates a port option (must be positive) */ int conf_validate_port(cfg_t *cfg, cfg_opt_t *opt) { int value = cfg_opt_getnint(opt, 0); if(value <= 0) { cfg_error(cfg, "invalid port %d in section '%s'", value, cfg_name(cfg)); return -1; } return 0; }
/** * Check if the given opt value is non-negative */ static gint cf_validate_num(cfg_t *cfg, cfg_opt_t *opt) { gint value = cfg_opt_getnint(opt, 0); if (value < 0) { cfg_error(cfg, "'%s' in section '%s' must be a non-negative value", cfg_opt_name(opt), cfg_name(cfg)); return -1; } return 0; }
static int cfg_validate_port(cfg_t *cfg, cfg_opt_t *opt) { unsigned int port = cfg_opt_getnint(opt, cfg_opt_size(opt) - 1); if (port > USHRT_MAX) { cfg_error(cfg, "Invalid %s: %s", opt->name, port); return -1; } return 0; }
static gint cf_validate_num_zero(cfg_t *cfg, cfg_opt_t *opt) { gint value = cfg_opt_getnint(opt, 0); if (value < 0) { cfg_error(cfg, "'%s' in section '%s' cannot be a negative " "value.", cfg_opt_name(opt), cfg_name(cfg)); return -1; } return 0; }
int validate_unsigned_int(cfg_t *cfg, cfg_opt_t *opt) { int value = cfg_opt_getnint(opt, cfg_opt_size(opt) - 1); if(value < 0) { cfg_error(cfg, "integer option '%s' must be positive in section '%s'", opt->name, cfg->name); return -1; } return 0; }
int validate_speed(cfg_t *cfg, cfg_opt_t *opt) { unsigned int i; for (i = 0; i < cfg_opt_size(opt); i++) { if (cfg_opt_getnint(opt, i) <= 0) { /* cfg_error(cfg, "speed must be positive in section %s", cfg->name); */ return 1; } } return 0; }
void print_ask(cfg_opt_t *opt, unsigned int index, FILE *fp) { int value = cfg_opt_getnint(opt, index); switch(value) { case 1: fprintf(fp, "yes"); break; case 2: fprintf(fp, "no"); break; case 3: default: fprintf(fp, "maybe"); break; } }
static int validate_require_nonnegative(cfg_t *cfg, cfg_opt_t *opt) { if (opt->type == CFGT_INT) { long int value = cfg_opt_getnint(opt, cfg_opt_size(opt) - 1); if (value < 0) { cfg_error(cfg, "Value for option %s can't be negative in %s section \"%s\"", opt->name, cfg->name, cfg_title(cfg)); return -1; } } else if (opt->type == CFGT_FLOAT) { double value = cfg_opt_getnfloat(opt, cfg_opt_size(opt) - 1); if (value < 0.0) { cfg_error(cfg, "Value for option %s can't be negative in %s section \"%s\"", opt->name, cfg->name, cfg_title(cfg)); return -1; } } return 0; }
static void fwup_cfg_opt_nprint_var(cfg_opt_t *opt, unsigned int index, struct simple_string *s) { switch (opt->type) { case CFGT_INT: ssprintf(s, "%ld", cfg_opt_getnint(opt, index)); break; case CFGT_FLOAT: ssprintf(s, "%f", cfg_opt_getnfloat(opt, index)); break; case CFGT_STR: { const char *str = cfg_opt_getnstr(opt, index); ssprintf(s, "\""); while (str && *str) { if (*str == '"') ssprintf(s, "\\\""); else if (*str == '\\') ssprintf(s, "\\\\"); else ssprintf(s, "%c", *str); str++; } ssprintf(s, "\""); break; } case CFGT_BOOL: ssprintf(s, "%s", cfg_opt_getnbool(opt, index) ? "true" : "false"); break; case CFGT_NONE: case CFGT_SEC: case CFGT_FUNC: case CFGT_PTR: break; } }
DLLIMPORT void cfg_opt_nprint_var(cfg_opt_t *opt, unsigned int index, FILE *fp) { const char *str; assert(opt && fp); switch(opt->type) { case CFGT_INT: fprintf(fp, "%ld", cfg_opt_getnint(opt, index)); break; case CFGT_FLOAT: fprintf(fp, "%lf", cfg_opt_getnfloat(opt, index)); break; case CFGT_STR: str = cfg_opt_getnstr(opt, index); fprintf(fp, "\""); while (str && *str) { if(*str == '"') fprintf(fp, "\\\""); else if(*str == '\\') fprintf(fp, "\\\\"); else fprintf(fp, "%c", *str); str++; } fprintf(fp, "\""); break; case CFGT_BOOL: fprintf(fp, "%s", cfg_opt_getnbool(opt, index) ? "true" : "false"); break; case CFGT_NONE: case CFGT_SEC: case CFGT_FUNC: case CFGT_PTR: break; } }
DLLIMPORT signed long cfg_getnint(cfg_t *cfg, const char *name, unsigned int index) { return cfg_opt_getnint(cfg_getopt(cfg, name), index); }