X-Git-Url: http://git.linux-vserver.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=util-vserver%2Flib%2Fgetvservername.c;h=212c9dff853de0c12bb590853ed59cb8ca572364;hb=38fe8b4a2dd28aebf52787c5b65cc79490fa53d3;hp=00dfd3afda631d38b6ec304c480a5f2e78de2695;hpb=f30fdcfd6caa637eaaee58301d1f67cf9901eb29;p=util-vserver.git diff --git a/util-vserver/lib/getvservername.c b/util-vserver/lib/getvservername.c index 00dfd3a..212c9df 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); @@ -46,6 +49,7 @@ getRecentName(char *start, char *end) if (TEMP_FAILURE_RETRY(read(fd, buf, len+1))==len) { while (len>0 && buf[len-1]=='\n') --len; + buf[len] = '\0'; if (len>0) res = buf; } @@ -58,7 +62,11 @@ getRecentName(char *start, char *end) if (res==0) { *end = '\0'; - res = basename(start); + res = realpath(start, buf); + //printf("start='%s', res='%s'\n", start,res); + if (res==0) res = start; + + res = basename(res); } return strdup(res);