vshost-util-vserver

Build script and sources for util-vserver.
git clone https://ccx.te2000.cz/git/vshost-util-vserver
Log | Files | Refs

xidopt2xid.c (1644B)


      1 // $Id$    --*- c -*--
      2 
      3 // Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
      4 //  
      5 // This program is free software; you can redistribute it and/or modify
      6 // it under the terms of the GNU General Public License as published by
      7 // the Free Software Foundation; version 2 of the License.
      8 //  
      9 // This program is distributed in the hope that it will be useful,
     10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
     11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     12 // GNU General Public License for more details.
     13 //  
     14 // You should have received a copy of the GNU General Public License
     15 // along with this program; if not, write to the Free Software
     16 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
     17 
     18 
     19 #ifdef HAVE_CONFIG_H
     20 #  include <config.h>
     21 #endif
     22 
     23 #include "vserver.h"
     24 #include <string.h>
     25 #include <stdlib.h>
     26 
     27 static xid_t
     28 getVserverXid(char const *id, bool honor_static, char const **err)
     29 {
     30   *err = "vc_getVserverCtx";
     31   return vc_getVserverCtx(id, vcCFG_AUTO, honor_static, 0, vcCTX_XID);
     32 }
     33 
     34 xid_t
     35 vc_xidopt2xid(char const *str, bool honor_static, char const **err_info)
     36 {
     37   char const *		err;
     38   xid_t			res = VC_NOCTX;
     39 
     40   err = "vc_get_task_xid()";
     41   if (strcmp(str,"self")==0) res = vc_get_task_xid(0);
     42   else if (str[0]==':')      res = getVserverXid(str+1, honor_static, &err);
     43   else {
     44     char *	endptr;
     45     xid_t	xid = strtol(str, &endptr, 10);
     46 
     47     if (endptr!=str && (*endptr=='\0' || *endptr=='\n'))
     48       res = xid;
     49     else
     50       res = getVserverXid(str, honor_static, &err);
     51   }
     52 
     53   if (res==VC_NOCTX && err_info) *err_info = err;
     54 
     55   return res;
     56 }