aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorvhanquez@kneesa.uk.xensource.com <vhanquez@kneesa.uk.xensource.com>2006-05-11 15:01:54 +0100
committervhanquez@kneesa.uk.xensource.com <vhanquez@kneesa.uk.xensource.com>2006-05-11 15:01:54 +0100
commitacd5a62ae9c9fb33baf0314b659c9dce74176f49 (patch)
tree94cb7b0c6bbf5c11a36e45b43775f428ca336f2c
parent6cd2d711bee124a2305c7e75d642ed9f270bfdc5 (diff)
downloadxen-acd5a62ae9c9fb33baf0314b659c9dce74176f49.tar.gz
xen-acd5a62ae9c9fb33baf0314b659c9dce74176f49.tar.bz2
xen-acd5a62ae9c9fb33baf0314b659c9dce74176f49.zip
Try to create runtime xenstored's directories at startup time.
Signed-off-by: Vincent Hanquez <vincent@xensource.com>
-rw-r--r--tools/xenstore/xenstored_core.c15
-rw-r--r--tools/xenstore/xs_lib.c4
-rw-r--r--tools/xenstore/xs_lib.h2
3 files changed, 19 insertions, 2 deletions
diff --git a/tools/xenstore/xenstored_core.c b/tools/xenstore/xenstored_core.c
index a79e2dcf0c..2dcf9cf591 100644
--- a/tools/xenstore/xenstored_core.c
+++ b/tools/xenstore/xenstored_core.c
@@ -1811,6 +1811,21 @@ int main(int argc, char *argv[])
reopen_log();
+ /* make sure xenstored directory exists */
+ if (mkdir(xs_daemon_rundir(), 0755)) {
+ if (errno != EEXIST) {
+ perror("error: mkdir daemon rundir");
+ exit(-1);
+ }
+ }
+
+ if (mkdir(xs_daemon_rootdir(), 0755)) {
+ if (errno != EEXIST) {
+ perror("error: mkdir daemon rootdir");
+ exit(-1);
+ }
+ }
+
if (dofork) {
openlog("xenstored", 0, LOG_DAEMON);
daemonize();
diff --git a/tools/xenstore/xs_lib.c b/tools/xenstore/xs_lib.c
index 226a8487f7..750d1823cf 100644
--- a/tools/xenstore/xs_lib.c
+++ b/tools/xenstore/xs_lib.c
@@ -26,13 +26,13 @@
/* Common routines for the Xen store daemon and client library. */
-static const char *xs_daemon_rootdir(void)
+const char *xs_daemon_rootdir(void)
{
char *s = getenv("XENSTORED_ROOTDIR");
return (s ? s : "/var/lib/xenstored");
}
-static const char *xs_daemon_rundir(void)
+const char *xs_daemon_rundir(void)
{
char *s = getenv("XENSTORED_RUNDIR");
return (s ? s : "/var/run/xenstored");
diff --git a/tools/xenstore/xs_lib.h b/tools/xenstore/xs_lib.h
index c62c457e61..f55008281a 100644
--- a/tools/xenstore/xs_lib.h
+++ b/tools/xenstore/xs_lib.h
@@ -46,6 +46,8 @@ struct xs_permissions
#define MAX_STRLEN(x) ((sizeof(x) * CHAR_BIT + CHAR_BIT-1) / 10 * 3 + 2)
/* Path for various daemon things: env vars can override. */
+const char *xs_daemon_rootdir(void);
+const char *xs_daemon_rundir(void);
const char *xs_daemon_socket(void);
const char *xs_daemon_socket_ro(void);
const char *xs_domain_dev(void);