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