# HG changeset patch
# User cl349@xxxxxxxxxxxxxxxxxxxx
# Node ID 282d5698ea40f40dc09871f0c92dc691b10b7269
# Parent d22091179975853b0438c937aaea239d92b83832
Add xenstore-list and xenstore-exists clients
Signed-off-by: Christian Limpach <Christian.Limpach@xxxxxxxxxxxx>
diff -r d22091179975 -r 282d5698ea40 tools/xenstore/Makefile
--- a/tools/xenstore/Makefile Mon Sep 12 20:24:58 2005
+++ b/tools/xenstore/Makefile Mon Sep 12 20:46:37 2005
@@ -25,7 +25,8 @@
TESTFLAGS= -DTESTING
TESTENV = XENSTORED_ROOTDIR=$(TESTDIR) XENSTORED_RUNDIR=$(TESTDIR)
-CLIENTS := xenstore-read xenstore-rm xenstore-write
+CLIENTS := xenstore-exists xenstore-list xenstore-read xenstore-rm
+CLIENTS += xenstore-write
CLIENTS_OBJS := $(patsubst xenstore-%,xenstore_%.o,$(CLIENTS))
all: libxenstore.so xenstored $(CLIENTS)
diff -r d22091179975 -r 282d5698ea40 tools/xenstore/xenstore_client.c
--- a/tools/xenstore/xenstore_client.c Mon Sep 12 20:24:58 2005
+++ b/tools/xenstore/xenstore_client.c Mon Sep 12 20:46:37 2005
@@ -22,7 +22,7 @@
errx(1, "Usage: %s [-h] [-p] key [...]", progname);
#elif defined(CLIENT_write)
errx(1, "Usage: %s [-h] key value [...]", progname);
-#elif defined(CLIENT_rm)
+#elif defined(CLIENT_rm) || defined(CLIENT_exists) || defined(CLIENT_list)
errx(1, "Usage: %s [-h] key [...]", progname);
#endif
}
@@ -33,8 +33,7 @@
struct xs_handle *xsh;
bool success;
int ret = 0;
-#if defined(CLIENT_read)
- char *val;
+#if defined(CLIENT_read) || defined(CLIENT_list)
int prefix = 0;
#endif
@@ -46,14 +45,14 @@
int c, index = 0;
static struct option long_options[] = {
{"help", 0, 0, 'h'},
-#if defined(CLIENT_read)
+#if defined(CLIENT_read) || defined(CLIENT_list)
{"prefix", 0, 0, 'p'},
#endif
{0, 0, 0, 0}
};
c = getopt_long(argc, argv, "h"
-#if defined(CLIENT_read)
+#if defined(CLIENT_read) || defined(CLIENT_list)
"p"
#endif
, long_options, &index);
@@ -64,7 +63,7 @@
case 'h':
usage(argv[0]);
/* NOTREACHED */
-#if defined(CLIENT_read)
+#if defined(CLIENT_read) || defined(CLIENT_list)
case 'p':
prefix = 1;
break;
@@ -90,7 +89,7 @@
while (optind < argc) {
#if defined(CLIENT_read)
- val = xs_read(xsh, argv[optind], NULL);
+ char *val = xs_read(xsh, argv[optind], NULL);
if (val == NULL) {
warnx("couldn't read path %s", argv[optind]);
ret = 1;
@@ -118,6 +117,29 @@
goto out;
}
optind++;
+#elif defined(CLIENT_exists)
+ char *val = xs_read(xsh, argv[optind], NULL);
+ if (val == NULL) {
+ ret = 1;
+ goto out;
+ }
+ free(val);
+ optind++;
+#elif defined(CLIENT_list)
+ unsigned int i, num;
+ char **list = xs_directory(xsh, argv[optind], &num);
+ if (list == NULL) {
+ warnx("could not list path %s", argv[optind]);
+ ret = 1;
+ goto out;
+ }
+ for (i = 0; i < num; i++) {
+ if (prefix)
+ printf("%s/", argv[optind]);
+ printf("%s\n", list[i]);
+ }
+ free(list);
+ optind++;
#endif
}
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|