diff options
author | cl349@firebug.cl.cam.ac.uk <cl349@firebug.cl.cam.ac.uk> | 2005-09-12 21:42:26 +0000 |
---|---|---|
committer | cl349@firebug.cl.cam.ac.uk <cl349@firebug.cl.cam.ac.uk> | 2005-09-12 21:42:26 +0000 |
commit | bd843d47d8a4dbab1b273420b52d3e3eb290df9b (patch) | |
tree | 4c57d3e43999443f3dbfa1f1d917fc6d4152f803 /tools/xenstore/xs_lib.c | |
parent | 493519fd231c627f3356107ba0f819870090b180 (diff) | |
download | xen-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.c | 30 |
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"); } |