X-Git-Url: http://git.linux-vserver.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=util-vserver%2Flib_internal%2Fmatchlist-initbyvserver.c;h=14584c99022eb4335806c4961495f74a8e100a6e;hb=8f6d0b27ae3d010574986b1b86b15f35e2fa800c;hp=13b28288e4256d416ecdb53ee187864fd132cb96;hpb=5269e9607d89ac4dbd34f9adb5b14fb5dfc9b1a5;p=util-vserver.git diff --git a/util-vserver/lib_internal/matchlist-initbyvserver.c b/util-vserver/lib_internal/matchlist-initbyvserver.c index 13b2828..14584c9 100644 --- a/util-vserver/lib_internal/matchlist-initbyvserver.c +++ b/util-vserver/lib_internal/matchlist-initbyvserver.c @@ -26,46 +26,26 @@ #include "vserver.h" - +#include bool -MatchList_initByVserver(struct MatchList *list, char const *vserver, - char const **res_appdir) +MatchList_initByVserver(struct MatchList *list, + struct MatchVserverInfo const *vserver) { - vcCfgStyle style; - char const *vdir; - char const *appdir; - - style = vc_getVserverCfgStyle(vserver); - vdir = vc_getVserverVdir( vserver, style, true); - appdir = vc_getVserverAppDir(vserver, style, "vunify"); - - if (vdir==0 || appdir==0) { - free((char *)appdir); - free((char *)vdir); - return false; - } - - { - size_t l1 = strlen(appdir); - char tmp[l1 + sizeof("/exclude")]; - char const * excl_list; - - memcpy(tmp, appdir, l1); - memcpy(tmp+l1, "/exclude", 9); + assert(vserver->appdir!=0 && vserver->vdir!=0); + + size_t const l = vserver->appdir.l; + char tmp[l + sizeof("/exclude")]; + char const * excl_list; - excl_list = tmp; - if (access(excl_list, R_OK)==-1) excl_list = CONFDIR "/.defaults/apps/vunify/exclude"; - if (access(excl_list, R_OK)==-1) excl_list = PKGLIBDIR "/defaults/vunify-exclude"; + memcpy(tmp, vserver->appdir.d, l); + memcpy(tmp+l, "/exclude", 9); - // 'vdir' is transferred to matchlist and must not be free'ed here - MatchList_initManually(list, vserver, vdir, excl_list); - } + excl_list = tmp; + if (access(excl_list, R_OK)==-1) excl_list = CONFDIR "/.defaults/apps/vunify/exclude"; + if (access(excl_list, R_OK)==-1) excl_list = PKGLIBDIR "/defaults/vunify-exclude"; - if (res_appdir!=0) - *res_appdir = appdir; - else - free((char *)appdir); + MatchList_initManually(list, vserver, 0, excl_list); return true; }