X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=lib%2Fncaps-net.c;h=d8bcfef04271d4cf0c21f55ac5215bafef60f46e;hb=ec4370f7ebd7fb0ce7f002f5bf2c74f03acd3ec1;hp=a2105d060b2d300eb18d2a9615b3e7bb2900b79a;hpb=9234e6a7cb48373edec38284ba54a819037b79b2;p=util-vserver.git diff --git a/lib/ncaps-net.c b/lib/ncaps-net.c index a2105d0..d8bcfef 100644 --- a/lib/ncaps-net.c +++ b/lib/ncaps-net.c @@ -1,4 +1,4 @@ -// $Id: ncaps-net.c,v 1.2 2005/04/24 20:25:17 ensc Exp $ --*- c -*-- +// $Id: ncaps-net.c 2393 2006-11-23 18:30:29Z dhozac $ --*- c -*-- // Copyright (C) 2004 Enrico Scholz // @@ -25,6 +25,7 @@ #include #include +#include #include #define DECL(STR, VAL) { STR, sizeof(STR)-1, VAL } @@ -34,10 +35,23 @@ static struct Mapping_uint64 const VALUES[] = { DECL("", 0) }; +inline static char const * +removePrefix(char const *str, size_t *len) +{ + if ((len==0 || *len==0 || *len>4) && + strncasecmp("nxc_", str, 4)==0) { + if (len && *len>4) *len -= 4; + return str+4; + } + else + return str; +} + uint_least64_t vc_text2ncap(char const *str, size_t len) { - ssize_t idx = utilvserver_value2text_uint64(str, len, + char const * tmp = removePrefix(str, &len); + ssize_t idx = utilvserver_value2text_uint64(tmp, len, VALUES, DIM_OF(VALUES)); if (idx==-1) return 0; else return VALUES[idx].val;