X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=lib%2Fgetvservervdir.c;fp=lib%2Fgetvservervdir.c;h=0000000000000000000000000000000000000000;hb=db5ef3f969fc6ad34aeb5903e44d0049b2e50791;hp=689a47b49cb65c4fd745a0859793c3b5ce5265d2;hpb=95e2774070e989fe9cf9f48dae5fa054e55e2a3e;p=util-vserver.git diff --git a/lib/getvservervdir.c b/lib/getvservervdir.c deleted file mode 100644 index 689a47b..0000000 --- a/lib/getvservervdir.c +++ /dev/null @@ -1,113 +0,0 @@ -// $Id: getvservervdir.c 1954 2005-03-22 14:59:46Z ensc $ --*- c -*-- - -// Copyright (C) 2003 Enrico Scholz -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; version 2 of the License. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - - -#ifdef HAVE_CONFIG_H -# include -#endif - -#include "vserver.h" -#include "internal.h" -#include "pathconfig.h" - -#include -#include -#include -#include - -static char * -getDir(char *dir, bool physical) -{ - int fd; - char tmp[PATH_MAX]; - - if (!physical) return strdup(dir); - - fd = open(".", O_RDONLY); - if (fd==-1) return 0; - - if (chdir(dir)!=-1 && - getcwd(tmp, sizeof tmp)!=0) - dir = strdup(tmp); - else - dir = 0; - - if (fchdir(fd)==-1) { - if (write(2, "FATAL error: failed to restore directory\n", 41)!=41) { /*...*/ } - abort(); - } - close(fd); - return dir; -} - -char * -vc_getVserverVdir(char const *id, vcCfgStyle style, bool physical) -{ - size_t l1 = strlen(id); - char *res = 0; - - if (style==vcCFG_NONE || style==vcCFG_AUTO) - style = vc_getVserverCfgStyle(id); - - switch (style) { - case vcCFG_NONE : return 0; - case vcCFG_LEGACY : - { - char buf[sizeof(DEFAULT_VSERVERDIR "/") + l1]; - - strcpy(buf, DEFAULT_VSERVERDIR "/"); - strcpy(buf+sizeof(DEFAULT_VSERVERDIR "/") - 1, id); - - res = getDir(buf, physical); - break; - } - - case vcCFG_RECENT_SHORT : - { - char buf[sizeof(CONFDIR) + l1 + sizeof("//vdir") - 1]; - - strcpy(buf, CONFDIR "/"); - strcpy(buf+sizeof(CONFDIR "/") - 1, id); - strcpy(buf+sizeof(CONFDIR "/")+l1 - 1, "/vdir"); - - res = getDir(buf, physical); - break; - } - - case vcCFG_RECENT_FULL : - { - char buf[l1 + sizeof("/vdir")]; - - strcpy(buf, id); - strcpy(buf+l1, "/vdir"); - - res = getDir(buf, physical); - break; - } - - default : return 0; - } - - // ignore physical-case; we went into the directory while determining - // the physical path so the directory exists - if (!physical && !utilvserver_isDirectory(res, true)) { - free(res); - res = 0; - } - - return res; -}