Exemple #1
0
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;
    }
}
Exemple #2
0
/* 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;
}
Exemple #3
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;
}
Exemple #4
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;
}
Exemple #5
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;
}
Exemple #8
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;
    }
}
Exemple #9
0
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;
}
Exemple #10
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;
    }
}
Exemple #11
0
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;
    }
}
Exemple #12
0
DLLIMPORT signed long cfg_getnint(cfg_t *cfg, const char *name,
                                  unsigned int index)
{
    return cfg_opt_getnint(cfg_getopt(cfg, name), index);
}