aboutsummaryrefslogtreecommitdiffstats
path: root/tools/xenstore/xs_lib.c
diff options
context:
space:
mode:
authorcl349@firebug.cl.cam.ac.uk <cl349@firebug.cl.cam.ac.uk>2005-09-12 21:42:26 +0000
committercl349@firebug.cl.cam.ac.uk <cl349@firebug.cl.cam.ac.uk>2005-09-12 21:42:26 +0000
commitbd843d47d8a4dbab1b273420b52d3e3eb290df9b (patch)
tree4c57d3e43999443f3dbfa1f1d917fc6d4152f803 /tools/xenstore/xs_lib.c
parent493519fd231c627f3356107ba0f819870090b180 (diff)
downloadxen-bd843d47d8a4dbab1b273420b52d3e3eb290df9b.tar.gz
xen-bd843d47d8a4dbab1b273420b52d3e3eb290df9b.tar.bz2
xen-bd843d47d8a4dbab1b273420b52d3e3eb290df9b.zip
Always allow overriding where clients connect through XENSTORED_PATH.
Detect if we're connecting to a socket or to the domain device and open accordingly. Signed-off-by: Christian Limpach <Christian.Limpach@cl.cam.ac.uk>
Diffstat (limited to 'tools/xenstore/xs_lib.c')
-rw-r--r--tools/xenstore/xs_lib.c30
1 files changed, 24 insertions, 6 deletions
diff --git a/tools/xenstore/xs_lib.c b/tools/xenstore/xs_lib.c
index 4c355b9902..5eb7fada6e 100644
--- a/tools/xenstore/xs_lib.c
+++ b/tools/xenstore/xs_lib.c
@@ -38,37 +38,55 @@ static const char *xs_daemon_rundir(void)
return (s ? s : "/var/run/xenstored");
}
-const char *xs_daemon_socket(void)
+static const char *xs_daemon_path(void)
{
static char buf[PATH_MAX];
- sprintf(buf, "%s/socket", xs_daemon_rundir());
+ char *s = getenv("XENSTORED_PATH");
+ if (s)
+ return s;
+ if (snprintf(buf, PATH_MAX, "%s/socket",
+ xs_daemon_rundir()) >= PATH_MAX)
+ return NULL;
return buf;
}
+const char *xs_daemon_socket(void)
+{
+ return xs_daemon_path();
+}
+
const char *xs_daemon_socket_ro(void)
{
static char buf[PATH_MAX];
- sprintf(buf, "%s/socket_ro", xs_daemon_rundir());
+ const char *s = xs_daemon_path();
+ if (s == NULL)
+ return NULL;
+ if (snprintf(buf, PATH_MAX, "%s_ro", s) >= PATH_MAX)
+ return NULL;
return buf;
}
const char *xs_daemon_store(void)
{
static char buf[PATH_MAX];
- sprintf(buf, "%s/store", xs_daemon_rootdir());
+ if (snprintf(buf, PATH_MAX, "%s/store",
+ xs_daemon_rootdir()) >= PATH_MAX)
+ return NULL;
return buf;
}
const char *xs_daemon_transactions(void)
{
static char buf[PATH_MAX];
- sprintf(buf, "%s/transactions", xs_daemon_rootdir());
+ if (snprintf(buf, PATH_MAX, "%s/transactions",
+ xs_daemon_rootdir()) >= PATH_MAX)
+ return NULL;
return buf;
}
const char *xs_domain_dev(void)
{
- char *s = getenv("XENSTORED_DOMAIN_DEV");
+ char *s = getenv("XENSTORED_PATH");
return (s ? s : "/proc/xen/xenbus");
}