Begin to use validate function in config handling
This commit is contained in:
parent
214a5c4bfa
commit
9204066788
|
@ -33,8 +33,6 @@
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
#include <confuse.h>
|
|
||||||
|
|
||||||
#include <X11/Xutil.h>
|
#include <X11/Xutil.h>
|
||||||
|
|
||||||
#include "common/swindow.h"
|
#include "common/swindow.h"
|
||||||
|
@ -131,7 +129,7 @@ config_parse(int screen, const char *confpatharg,
|
||||||
else
|
else
|
||||||
confpath = a_strdup(confpatharg);
|
confpath = a_strdup(confpatharg);
|
||||||
|
|
||||||
cfg = cfg_init(awesome_opts, CFGF_NONE);
|
cfg = cfg_new();
|
||||||
|
|
||||||
switch((ret = cfg_parse(cfg, confpath)))
|
switch((ret = cfg_parse(cfg, confpath)))
|
||||||
{
|
{
|
||||||
|
|
|
@ -26,8 +26,6 @@
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
#include <confuse.h>
|
|
||||||
|
|
||||||
#include <X11/Xlib.h>
|
#include <X11/Xlib.h>
|
||||||
|
|
||||||
#include "common/swindow.h"
|
#include "common/swindow.h"
|
||||||
|
@ -75,7 +73,7 @@ config_parse(int screen, const char *confpatharg)
|
||||||
else
|
else
|
||||||
confpath = a_strdup(confpatharg);
|
confpath = a_strdup(confpatharg);
|
||||||
|
|
||||||
cfg = cfg_init(awesome_opts, CFGF_NONE);
|
cfg = cfg_new();
|
||||||
|
|
||||||
switch((ret = cfg_parse(cfg, confpath)))
|
switch((ret = cfg_parse(cfg, confpath)))
|
||||||
{
|
{
|
||||||
|
|
|
@ -363,6 +363,33 @@ config_file(void)
|
||||||
return confpath;
|
return confpath;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
config_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;
|
||||||
|
}
|
||||||
|
|
||||||
|
cfg_t *
|
||||||
|
cfg_new(void)
|
||||||
|
{
|
||||||
|
cfg_t *cfg;
|
||||||
|
|
||||||
|
cfg = cfg_init(awesome_opts, CFGF_NONE);
|
||||||
|
|
||||||
|
cfg_set_validate_func(cfg, "screen|general|snap", config_validate_unsigned_int);
|
||||||
|
cfg_set_validate_func(cfg, "screen|general|border", config_validate_unsigned_int);
|
||||||
|
|
||||||
|
return cfg;
|
||||||
|
}
|
||||||
|
|
||||||
/** Check configuration file syntax in regard of libconfuse parsing
|
/** Check configuration file syntax in regard of libconfuse parsing
|
||||||
* \param path to config file
|
* \param path to config file
|
||||||
* \return status returned by cfg_parse()
|
* \return status returned by cfg_parse()
|
||||||
|
@ -374,7 +401,7 @@ config_check(const char *confpatharg)
|
||||||
int ret;
|
int ret;
|
||||||
char *confpath;
|
char *confpath;
|
||||||
|
|
||||||
cfg = cfg_init(awesome_opts, CFGF_NONE);
|
cfg = cfg_new();
|
||||||
|
|
||||||
if(confpatharg)
|
if(confpatharg)
|
||||||
confpath = a_strdup(confpatharg);
|
confpath = a_strdup(confpatharg);
|
||||||
|
@ -395,6 +422,7 @@ config_check(const char *confpatharg)
|
||||||
}
|
}
|
||||||
|
|
||||||
p_delete(&confpath);
|
p_delete(&confpath);
|
||||||
|
cfg_free(cfg);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,6 +22,9 @@
|
||||||
#ifndef AWESOME_COMMON_CONFIGOPTS_H
|
#ifndef AWESOME_COMMON_CONFIGOPTS_H
|
||||||
#define AWESOME_COMMON_CONFIGOPTS_H
|
#define AWESOME_COMMON_CONFIGOPTS_H
|
||||||
|
|
||||||
|
#include <confuse.h>
|
||||||
|
|
||||||
|
cfg_t * cfg_new(void);
|
||||||
char * config_file(void);
|
char * config_file(void);
|
||||||
int config_check(const char *);
|
int config_check(const char *);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue