#endif
static char *
-vc_getVserverByCtx_compat(xid_t ctx, vcCfgStyle *style, char const *revdir)
+vc_getVserverByCtx_compat(xid_t ctx, vcCfgStyle *style, char const *revdir,
+ bool validate_result)
{
if (revdir==0) revdir = DEFAULT_PKGSTATEREVDIR;
switch (cur_style) {
case vcCFG_RECENT_SHORT :
case vcCFG_RECENT_FULL :
- // check if expected ctx == actual ctx
- if (vc_getVserverCtx(path, vcCFG_RECENT_FULL, false, 0)!=ctx) return 0;
+ // check if expected ctx == actual ctx (but only when this check is
+ // request)
+ if (validate_result &&
+ vc_getVserverCtx(path, vcCFG_RECENT_FULL, false, 0)!=ctx) return 0;
if (style) *style = vcCFG_RECENT_FULL;
return strdup(path);
#endif
static char *
-vc_getVserverByCtx_v13(xid_t ctx, vcCfgStyle *style, char const UNUSED *revdir)
+vc_getVserverByCtx_v13(xid_t ctx, vcCfgStyle *style, char const UNUSED *revdir,
+ bool validate_result)
{
char buf[128];
if (vc_get_vhi_name(ctx, vcVHI_CONTEXT, buf, sizeof buf)!=-1 &&
- vc_getVserverCtx(buf, vcCFG_RECENT_FULL, false, 0)==ctx) {
+ (!validate_result ||
+ vc_getVserverCtx(buf, vcCFG_RECENT_FULL, false, 0)==ctx)) {
if (style) *style = vcCFG_RECENT_FULL;
return strdup(buf);
}
#include "getvserverbyctx-compat.hc"
#include "getvserverbyctx-v13.hc"
+
char *
-vc_getVserverByCtx(xid_t ctx, vcCfgStyle *style, char const *revdir)
+vc_getVserverByCtx_Internal(xid_t ctx, /*@null@*/vcCfgStyle *style,
+ /*@null@*/char const *revdir,
+ bool validate_result)
{
if (vc_isSupported(vcFEATURE_MIGRATE))
- return vc_getVserverByCtx_v13(ctx, style, revdir);
+ return vc_getVserverByCtx_v13(ctx, style, revdir, validate_result);
else
- return vc_getVserverByCtx_compat(ctx, style, revdir);
+ return vc_getVserverByCtx_compat(ctx, style, revdir, validate_result);
+}
+
+char *
+vc_getVserverByCtx(xid_t ctx, vcCfgStyle *style, char const *revdir)
+{
+ return vc_getVserverByCtx_Internal(ctx, style, revdir, true);
+
}