X-Git-Url: http://git.linux-vserver.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=util-vserver%2Flib%2Flistparser.hc;h=140b5f2415e773bed3477fefaead1e7194736ac3;hb=63adaf2f1a83840d06054022d44abc342e615d01;hp=4c5769af611b6c67853ec79b03fb71db6ac97910;hpb=9215c73e89c692ee2ce9abafe644d1a5b144e320;p=util-vserver.git diff --git a/util-vserver/lib/listparser.hc b/util-vserver/lib/listparser.hc index 4c5769a..140b5f2 100644 --- a/util-vserver/lib/listparser.hc +++ b/util-vserver/lib/listparser.hc @@ -27,13 +27,16 @@ #define TONUMBER_uint64(S,E,B) strtoll(S,E,B) #define TONUMBER_uint32(S,E,B) strtol (S,E,B) -#define ISNUMBER(TYPE,SHORT) \ - static inline ALWAYSINLINE bool \ - isNumber_##SHORT(char const *str,TYPE *res, char end_chr) \ - { \ - char *err_ptr; \ - *res = TONUMBER_##SHORT(str, &err_ptr, 0); \ - return err_ptr>str && *err_ptr==end_chr; \ +#define ISNUMBER(TYPE,SHORT) \ + static inline ALWAYSINLINE bool \ + isNumber_##SHORT(char const *str,TYPE *res, char end_chr) \ + { \ + char *err_ptr; \ + if (*str=='^') \ + *res = ((TYPE)(1)) << TONUMBER_##SHORT(str+1, &err_ptr, 0); \ + else \ + *res = TONUMBER_##SHORT(str, &err_ptr, 0); \ + return err_ptr>str && *err_ptr==end_chr; \ }