From cd9e7aa106e80c44bd526af74b616701b0772d05 Mon Sep 17 00:00:00 2001 From: Jan Engelhardt Date: Sun, 20 Jan 2008 13:18:54 +0000 Subject: Introduce strtonum(), which works like string_to_number(), but passes back the 'end' pointer. It is useful where you want to do boundary checking yet work with strings that are not entirely slurped by strtoul(), e.g.: s = "1/2"; /* one half */ if (!strtonum(s, &end, &value, 0, 5)) error("Zero-length string, or value out of bounds"); if (*end != '/') error("Malformed string"); info->param1 = value; if (!strtonum(end + 1, &end, &value, 2, 4)) error(".."); if (*end != '\0') error("Malformed string"); info->param2 = value; Signed-off-by: Jan Engelhardt --- include/xtables.h | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'include/xtables.h') diff --git a/include/xtables.h b/include/xtables.h index 577b3c6a..728b1aa3 100644 --- a/include/xtables.h +++ b/include/xtables.h @@ -5,6 +5,7 @@ #include #include #include +#include #ifndef XT_LIB_DIR #define XT_LIB_DIR "/usr/local/lib/iptables" @@ -206,6 +207,10 @@ extern int string_to_number(const char *s, unsigned int min, unsigned int max, unsigned int *ret); +extern bool strtonuml(const char *, char **, unsigned long *, + unsigned long, unsigned long); +extern bool strtonum(const char *, char **, unsigned int *, + unsigned int, unsigned int); extern int service_to_port(const char *name, const char *proto); extern u_int16_t parse_port(const char *port, const char *proto); extern void -- cgit v1.2.3