X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fconf-parser.c;h=02f740a04fb10b650c9514e02028854a4739c6a3;hp=b439d0ce7cac23e8a3c2b7ff0e63820f0d827696;hb=69fc152fc133172433d2bacb6a1fb8b97b866e9d;hpb=449648c430b38906fd8c8cd9cc3e4a5d05d7e0a9 diff --git a/src/conf-parser.c b/src/conf-parser.c index b439d0ce7..02f740a04 100644 --- a/src/conf-parser.c +++ b/src/conf-parser.c @@ -1,4 +1,4 @@ -/*-*- Mode: C; c-basic-offset: 8 -*-*/ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ /*** This file is part of systemd. @@ -31,8 +31,6 @@ #include "strv.h" #include "log.h" -#define COMMENTS "#;\n" - /* Run the user supplied parser for an assignment */ static int next_assignment( const char *filename, @@ -63,7 +61,7 @@ static int next_assignment( if (!t->parse) return 0; - return t->parse(filename, line, section, lvalue, rvalue, t->data, userdata); + return t->parse(filename, line, section, lvalue, t->ltype, rvalue, t->data, userdata); } /* Warn about unknown non-extension fields. */ @@ -228,6 +226,7 @@ int config_parse_int( unsigned line, const char *section, const char *lvalue, + int ltype, const char *rvalue, void *data, void *userdata) { @@ -248,11 +247,64 @@ int config_parse_int( return 0; } +int config_parse_long( + const char *filename, + unsigned line, + const char *section, + const char *lvalue, + int ltype, + const char *rvalue, + void *data, + void *userdata) { + + long *i = data; + int r; + + assert(filename); + assert(lvalue); + assert(rvalue); + assert(data); + + if ((r = safe_atoli(rvalue, i)) < 0) { + log_error("[%s:%u] Failed to parse numeric value: %s", filename, line, rvalue); + return r; + } + + return 0; +} + +int config_parse_uint64( + const char *filename, + unsigned line, + const char *section, + const char *lvalue, + int ltype, + const char *rvalue, + void *data, + void *userdata) { + + uint64_t *u = data; + int r; + + assert(filename); + assert(lvalue); + assert(rvalue); + assert(data); + + if ((r = safe_atou64(rvalue, u)) < 0) { + log_error("[%s:%u] Failed to parse numeric value: %s", filename, line, rvalue); + return r; + } + + return 0; +} + int config_parse_unsigned( const char *filename, unsigned line, const char *section, const char *lvalue, + int ltype, const char *rvalue, void *data, void *userdata) { @@ -278,6 +330,7 @@ int config_parse_size( unsigned line, const char *section, const char *lvalue, + int ltype, const char *rvalue, void *data, void *userdata) { @@ -305,6 +358,7 @@ int config_parse_bool( unsigned line, const char *section, const char *lvalue, + int ltype, const char *rvalue, void *data, void *userdata) { @@ -331,6 +385,7 @@ int config_parse_string( unsigned line, const char *section, const char *lvalue, + int ltype, const char *rvalue, void *data, void *userdata) { @@ -360,6 +415,7 @@ int config_parse_path( unsigned line, const char *section, const char *lvalue, + int ltype, const char *rvalue, void *data, void *userdata) { @@ -393,6 +449,7 @@ int config_parse_strv( unsigned line, const char *section, const char *lvalue, + int ltype, const char *rvalue, void *data, void *userdata) { @@ -445,6 +502,7 @@ int config_parse_path_strv( unsigned line, const char *section, const char *lvalue, + int ltype, const char *rvalue, void *data, void *userdata) {