X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;f=lib%2Fconf.c;h=50c3511a293d5a83ffd2f8a20c82c692426609dd;hb=e23b57dd8b0ac4da53451625be99ca1fa75caa48;hp=7f593d8e419d68f6c46288f439a083db7f73d216;hpb=6ef7d05283f9005e379e63a6f58c22302b8136a7;p=libucw.git diff --git a/lib/conf.c b/lib/conf.c index 7f593d8e..50c3511a 100644 --- a/lib/conf.c +++ b/lib/conf.c @@ -122,6 +122,7 @@ static const struct unit units[] = { { 0, 0, 0 } }; +#if 0 static const struct unit *cf_lookup_unit(byte *value, byte *end, char **msg) { if (end && *end) { @@ -218,6 +219,46 @@ byte *cf_parse_double(byte *value, double *varp) return msg; } +byte * +cf_parse_ip(byte **p, u32 *varp) +{ + while (Cspace(**p)) + (*p)++; + if (!**p) + return "Missing IP address"; + uns x = 0; + if (**p == '0' && *(*p + 1) | 32 == 'X') + { + errno = 0; + x = strtoul(*p + 2, (char **)p, 16); + if (errno == ERANGE || x > 0xffffffff) + goto error; + } + else + for (uns i = 0; i < 4; i++) + { + if (i) + { + while (Cspace(**p)) + (*p)++; + if (*(*p)++ != '.') + goto error; + } + while (Cspace(**p)) + (*p)++; + errno = 0; + uns y = strtoul(*p, (char **)p, 10); + if (errno == ERANGE || y > 255) + goto error; + x = (x << 8) + y; + } + *varp = x; + return NULL; +error: + return "Invalid IP address"; +} +#endif + byte *cf_set_item(byte *sect, byte *name, byte *value) { struct cfitem *item;