summaryrefslogtreecommitdiff
path: root/conf.c
diff options
context:
space:
mode:
authorJoel Rosdahl <joel@rosdahl.net>2011-07-14 21:35:28 +0200
committerJoel Rosdahl <joel@rosdahl.net>2011-07-17 11:57:51 +0200
commitebae5f7182b30d358eeb915f4edface74fb945ce (patch)
treed8a0a2e2ce6d439cc9307da9e1ab8301dec52708 /conf.c
parent2e0b674ea9e4d23e85f8f85e3f8757aeca1e4830 (diff)
downloadccache-ebae5f7182b30d358eeb915f4edface74fb945ce.tar.gz
config: Use cache_dir_levels from conf struct
Diffstat (limited to 'conf.c')
-rw-r--r--conf.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/conf.c b/conf.c
index ded2f18e..6bc8a85e 100644
--- a/conf.c
+++ b/conf.c
@@ -160,6 +160,19 @@ verify_absolute_path(void *value, char **errmsg)
}
}
+static bool
+verify_dir_levels(void *value, char **errmsg)
+{
+ unsigned *levels = (unsigned *)value;
+ assert(levels);
+ if (*levels >= 1 && *levels <= 8) {
+ return true;
+ } else {
+ *errmsg = format("cache directory levels must be between 1 and 8");
+ return false;
+ }
+}
+
#define ITEM(name, type) \
{#name, parse_##type, offsetof(struct conf, name), NULL}
#define ITEM_V(name, type, verification) \
@@ -168,7 +181,7 @@ verify_absolute_path(void *value, char **errmsg)
static const struct conf_item conf_items[] = {
ITEM_V(base_dir, env_string, absolute_path),
ITEM(cache_dir, env_string),
- ITEM(cache_dir_levels, unsigned),
+ ITEM_V(cache_dir_levels, unsigned, dir_levels),
ITEM(compiler, string),
ITEM(compiler_check, string),
ITEM(compression, bool),