X-Git-Url: http://git.linux-vserver.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=util-vserver%2Flib%2Fflags-v13.c;h=3b8b83f2b49ed8049baaf9c8d82c852f1b23e694;hb=8382ff249d7fb0b65e02e695f52f1671a5ea4907;hp=5b02a90ad5426043af1e21b3eae96bc73ab301f3;hpb=4df0e41e254d190fdbc8290ee38bfd31bd4342e8;p=util-vserver.git diff --git a/util-vserver/lib/flags-v13.c b/util-vserver/lib/flags-v13.c index 5b02a90..3b8b83f 100644 --- a/util-vserver/lib/flags-v13.c +++ b/util-vserver/lib/flags-v13.c @@ -21,45 +21,50 @@ #endif #include "vserver.h" -#include "lib_internal/util-dimof.h" +#include "internal.h" +#include #include #include #define DECL(STR, VAL) { STR, sizeof(STR)-1, VAL } -static struct { - char const * const id; - size_t len; - unsigned char val; -} const FLAGVALUES[] = { - DECL("fakeinit", S_CTX_INFO_INIT), +static struct Mapping_uint64 const VALUES[] = { + DECL("lock", VC_VXF_INFO_LOCK), + DECL("nproc", VC_VXF_INFO_NPROC), + DECL("private", VC_VXF_INFO_PRIVATE), + DECL("fakeinit", VC_VXF_INFO_INIT), + + DECL("hide", VC_VXF_INFO_HIDE), + DECL("ulimit", VC_VXF_INFO_ULIMIT), + DECL("nspace", VC_VXF_INFO_NSPACE), + + DECL("hard", VC_VXF_SCHED_HARD), + DECL("prio", VC_VXF_SCHED_PRIO), + DECL("pause", VC_VXF_SCHED_PAUSE), + + DECL("mem", VC_VXF_VIRT_MEM), + DECL("uptime", VC_VXF_VIRT_UPTIME), + + DECL("setup", VC_VXF_STATE_SETUP), + DECL("init", VC_VXF_STATE_INIT), }; uint_least64_t vc_text2flag(char const *str, size_t len) { - size_t i; - if (len==0) len=strlen(str); - - for (i=0; i0 && idx>0; i/=2) { - --idx; - if (val & i) return FLAGVALUES[idx].id; - } + ssize_t idx = utilvserver_text2value_uint64(val, + VALUES, DIM_OF(VALUES)); - return 0; + if (idx==-1) return 0; + else return VALUES[idx].id; }