X-Git-Url: http://git.linux-vserver.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=util-vserver%2Flib%2Fgetvservername.c;h=046f828c68c74e10586ce2303b74bf6d4545d8f4;hb=7d3d2df7f36ecdcba4bf081404dfaa2f2c3a06ee;hp=0c212bef44796071c7c490f9d8fb09197d39687d;hpb=33d39ecd58a6132f22508aa812766db4611e3c43;p=util-vserver.git diff --git a/util-vserver/lib/getvservername.c b/util-vserver/lib/getvservername.c index 0c212be..046f828 100644 --- a/util-vserver/lib/getvservername.c +++ b/util-vserver/lib/getvservername.c @@ -27,12 +27,15 @@ #include #include #include +#include +#include static char * getRecentName(char *start, char *end) { char *res = 0; int fd; + char buf[PATH_MAX]; strcpy(end, "/name"); fd = open(start, O_RDONLY); @@ -58,8 +61,21 @@ getRecentName(char *start, char *end) } if (res==0) { + int old_fd = open(".", O_RDONLY); + *end = '\0'; - res = basename(start); + + if (old_fd!=-1 && + chdir(start)!=-1 && + getcwd(buf, sizeof buf)==buf) + start = buf; + + res = basename(start); + + if (old_fd!=-1) { + fchdir(old_fd); + close(old_fd); + } } return strdup(res);