From: Juergen Gross <jgross@suse.com>
To: xen-devel@lists.xenproject.org
Cc: Juergen Gross <jgross@suse.com>,
sstabellini@kernel.org, wei.liu2@citrix.com,
George.Dunlap@eu.citrix.com, andrew.cooper3@citrix.com,
ian.jackson@eu.citrix.com, tim@xen.org, jbeulich@suse.com
Subject: [PATCH v4 09/12] xenstore: make functions static
Date: Mon, 5 Dec 2016 08:48:50 +0100 [thread overview]
Message-ID: <20161205074853.13268-10-jgross@suse.com> (raw)
In-Reply-To: <20161205074853.13268-1-jgross@suse.com>
Move functions used in only one source to the file where they are used
and make them static.
Remove some prototypes from headers which are no longer in use.
Signed-off-by: Juergen Gross <jgross@suse.com>
---
V4: don't remove functions of libxenstore as requested by Andrew Cooper
---
tools/xenstore/xenstored_core.c | 55 ++++++-------------
tools/xenstore/xenstored_core.h | 14 -----
tools/xenstore/xenstored_watch.c | 27 ++++++++++
tools/xenstore/xenstored_watch.h | 2 -
tools/xenstore/xs.c | 111 ++++++++++++++++++++++++++++++++++++++
tools/xenstore/xs_lib.c | 112 ---------------------------------------
6 files changed, 153 insertions(+), 168 deletions(-)
diff --git a/tools/xenstore/xenstored_core.c b/tools/xenstore/xenstored_core.c
index 938b652..438a8ce 100644
--- a/tools/xenstore/xenstored_core.c
+++ b/tools/xenstore/xenstored_core.c
@@ -365,22 +365,6 @@ static void initialize_fds(int sock, int *p_sock_pollfd_idx,
}
}
-/* Is child a subnode of parent, or equal? */
-bool is_child(const char *child, const char *parent)
-{
- unsigned int len = strlen(parent);
-
- /* / should really be "" for this algorithm to work, but that's a
- * usability nightmare. */
- if (streq(parent, "/"))
- return true;
-
- if (strncmp(child, parent, len) != 0)
- return false;
-
- return child[len] == '/' || child[len] == '\0';
-}
-
/*
* If it fails, returns NULL and sets errno.
* Temporary memory allocations will be done with ctx.
@@ -638,6 +622,21 @@ unsigned int get_strings(struct buffered_data *data,
return i;
}
+static void send_error(struct connection *conn, int error)
+{
+ unsigned int i;
+
+ for (i = 0; error != xsd_errors[i].errnum; i++) {
+ if (i == ARRAY_SIZE(xsd_errors) - 1) {
+ eprintf("xenstored: error %i untranslatable", error);
+ i = 0; /* EINVAL */
+ break;
+ }
+ }
+ send_reply(conn, XS_ERROR, xsd_errors[i].errstring,
+ strlen(xsd_errors[i].errstring) + 1);
+}
+
void send_reply(struct connection *conn, enum xsd_sockmsg_type type,
const void *data, unsigned int len)
{
@@ -675,21 +674,6 @@ void send_ack(struct connection *conn, enum xsd_sockmsg_type type)
send_reply(conn, type, "OK", sizeof("OK"));
}
-void send_error(struct connection *conn, int error)
-{
- unsigned int i;
-
- for (i = 0; error != xsd_errors[i].errnum; i++) {
- if (i == ARRAY_SIZE(xsd_errors) - 1) {
- eprintf("xenstored: error %i untranslatable", error);
- i = 0; /* EINVAL */
- break;
- }
- }
- send_reply(conn, XS_ERROR, xsd_errors[i].errstring,
- strlen(xsd_errors[i].errstring) + 1);
-}
-
static bool valid_chars(const char *node)
{
/* Nodes can have lots of crap. */
@@ -761,15 +745,6 @@ char *canonicalize(struct connection *conn, const char *node)
return (char *)node;
}
-bool check_event_node(const char *node)
-{
- if (!node || !strstarts(node, "@")) {
- errno = EINVAL;
- return false;
- }
- return true;
-}
-
static int send_directory(struct connection *conn, struct buffered_data *in)
{
struct node *node;
diff --git a/tools/xenstore/xenstored_core.h b/tools/xenstore/xenstored_core.h
index 089625f..3872dab 100644
--- a/tools/xenstore/xenstored_core.h
+++ b/tools/xenstore/xenstored_core.h
@@ -132,24 +132,15 @@ const char *onearg(struct buffered_data *in);
unsigned int get_strings(struct buffered_data *data,
char *vec[], unsigned int num);
-/* Is child node a child or equal to parent node? */
-bool is_child(const char *child, const char *parent);
-
void send_reply(struct connection *conn, enum xsd_sockmsg_type type,
const void *data, unsigned int len);
/* Some routines (write, mkdir, etc) just need a non-error return */
void send_ack(struct connection *conn, enum xsd_sockmsg_type type);
-/* Send an error: error is usually "errno". */
-void send_error(struct connection *conn, int error);
-
/* Canonicalize this path if possible. */
char *canonicalize(struct connection *conn, const char *node);
-/* Check if node is an event node. */
-bool check_event_node(const char *node);
-
/* Get this node, checking we have permissions. */
struct node *get_node(struct connection *conn,
const void *ctx,
@@ -159,9 +150,6 @@ struct node *get_node(struct connection *conn,
/* Get TDB context for this connection */
TDB_CONTEXT *tdb_context(struct connection *conn);
-/* Destructor for tdbs: required for transaction code */
-int destroy_tdb(void *_tdb);
-
/* Replace the tdb: required for transaction code */
bool replace_tdb(const char *newname, TDB_CONTEXT *newtdb);
@@ -174,11 +162,9 @@ bool is_valid_nodename(const char *node);
/* Tracing infrastructure. */
void trace_create(const void *data, const char *type);
void trace_destroy(const void *data, const char *type);
-void trace_watch_timeout(const struct connection *conn, const char *node, const char *token);
void trace(const char *fmt, ...);
void dtrace_io(const struct connection *conn, const struct buffered_data *data, int out);
-extern int event_fd;
extern int dom0_domid;
extern int dom0_event;
extern int priv_domid;
diff --git a/tools/xenstore/xenstored_watch.c b/tools/xenstore/xenstored_watch.c
index 8cfc5b0..e1146ed 100644
--- a/tools/xenstore/xenstored_watch.c
+++ b/tools/xenstore/xenstored_watch.c
@@ -47,6 +47,33 @@ struct watch
char *node;
};
+static bool check_event_node(const char *node)
+{
+ if (!node || !strstarts(node, "@")) {
+ errno = EINVAL;
+ return false;
+ }
+ return true;
+}
+
+/* Is child a subnode of parent, or equal? */
+static bool is_child(const char *child, const char *parent)
+{
+ unsigned int len = strlen(parent);
+
+ /*
+ * / should really be "" for this algorithm to work, but that's a
+ * usability nightmare.
+ */
+ if (streq(parent, "/"))
+ return true;
+
+ if (strncmp(child, parent, len) != 0)
+ return false;
+
+ return child[len] == '/' || child[len] == '\0';
+}
+
/*
* Send a watch event.
* Temporary memory allocations are done with ctx.
diff --git a/tools/xenstore/xenstored_watch.h b/tools/xenstore/xenstored_watch.h
index 546a5c3..c72ea6a 100644
--- a/tools/xenstore/xenstored_watch.h
+++ b/tools/xenstore/xenstored_watch.h
@@ -28,8 +28,6 @@ int do_unwatch(struct connection *conn, struct buffered_data *in);
void fire_watches(struct connection *conn, void *tmp, const char *name,
bool recurse);
-void dump_watches(struct connection *conn);
-
void conn_delete_all_watches(struct connection *conn);
#endif /* _XENSTORED_WATCH_H */
diff --git a/tools/xenstore/xs.c b/tools/xenstore/xs.c
index 40e3275..e462a20 100644
--- a/tools/xenstore/xs.c
+++ b/tools/xenstore/xs.c
@@ -1307,6 +1307,117 @@ static void *read_thread(void *arg)
}
#endif
+char *expanding_buffer_ensure(struct expanding_buffer *ebuf, int min_avail)
+{
+ int want;
+ char *got;
+
+ if (ebuf->avail >= min_avail)
+ return ebuf->buf;
+
+ if (min_avail >= INT_MAX/3)
+ return 0;
+
+ want = ebuf->avail + min_avail + 10;
+ got = realloc(ebuf->buf, want);
+ if (!got)
+ return 0;
+
+ ebuf->buf = got;
+ ebuf->avail = want;
+ return ebuf->buf;
+}
+
+char *sanitise_value(struct expanding_buffer *ebuf,
+ const char *val, unsigned len)
+{
+ int used, remain, c;
+ unsigned char *ip;
+
+#define ADD(c) (ebuf->buf[used++] = (c))
+#define ADDF(f,c) (used += sprintf(ebuf->buf+used, (f), (c)))
+
+ assert(len < INT_MAX/5);
+
+ ip = (unsigned char *)val;
+ used = 0;
+ remain = len;
+
+ if (!expanding_buffer_ensure(ebuf, remain + 1))
+ return NULL;
+
+ while (remain-- > 0) {
+ c= *ip++;
+
+ if (c >= ' ' && c <= '~' && c != '\\') {
+ ADD(c);
+ continue;
+ }
+
+ if (!expanding_buffer_ensure(ebuf, used + remain + 5))
+ /* for "<used>\\nnn<remain>\0" */
+ return 0;
+
+ ADD('\\');
+ switch (c) {
+ case '\t': ADD('t'); break;
+ case '\n': ADD('n'); break;
+ case '\r': ADD('r'); break;
+ case '\\': ADD('\\'); break;
+ default:
+ if (c < 010) ADDF("%03o", c);
+ else ADDF("x%02x", c);
+ }
+ }
+
+ ADD(0);
+ assert(used <= ebuf->avail);
+ return ebuf->buf;
+
+#undef ADD
+#undef ADDF
+}
+
+void unsanitise_value(char *out, unsigned *out_len_r, const char *in)
+{
+ const char *ip;
+ char *op;
+ unsigned c;
+ int n;
+
+ for (ip = in, op = out; (c = *ip++); *op++ = c) {
+ if (c == '\\') {
+ c = *ip++;
+
+#define GETF(f) do { \
+ n = 0; \
+ sscanf(ip, f "%n", &c, &n); \
+ ip += n; \
+ } while (0)
+
+ switch (c) {
+ case 't': c= '\t'; break;
+ case 'n': c= '\n'; break;
+ case 'r': c= '\r'; break;
+ case '\\': c= '\\'; break;
+ case 'x': GETF("%2x"); break;
+ case '0': case '4':
+ case '1': case '5':
+ case '2': case '6':
+ case '3': case '7': --ip; GETF("%3o"); break;
+ case 0: --ip; break;
+ default:;
+ }
+#undef GETF
+ }
+ }
+
+ *op = 0;
+
+ if (out_len_r)
+ *out_len_r = op - out;
+}
+
/*
* Local variables:
* c-file-style: "linux"
diff --git a/tools/xenstore/xs_lib.c b/tools/xenstore/xs_lib.c
index 6568e82..5ef3d6d 100644
--- a/tools/xenstore/xs_lib.c
+++ b/tools/xenstore/xs_lib.c
@@ -21,7 +21,6 @@
#include <string.h>
#include <stdlib.h>
#include <errno.h>
-#include <assert.h>
#include "xenstore_lib.h"
/* Common routines for the Xen store daemon and client library. */
@@ -184,114 +183,3 @@ unsigned int xs_count_strings(const char *strings, unsigned int len)
return num;
}
-
-char *expanding_buffer_ensure(struct expanding_buffer *ebuf, int min_avail)
-{
- int want;
- char *got;
-
- if (ebuf->avail >= min_avail)
- return ebuf->buf;
-
- if (min_avail >= INT_MAX/3)
- return 0;
-
- want = ebuf->avail + min_avail + 10;
- got = realloc(ebuf->buf, want);
- if (!got)
- return 0;
-
- ebuf->buf = got;
- ebuf->avail = want;
- return ebuf->buf;
-}
-
-char *sanitise_value(struct expanding_buffer *ebuf,
- const char *val, unsigned len)
-{
- int used, remain, c;
- unsigned char *ip;
-
-#define ADD(c) (ebuf->buf[used++] = (c))
-#define ADDF(f,c) (used += sprintf(ebuf->buf+used, (f), (c)))
-
- assert(len < INT_MAX/5);
-
- ip = (unsigned char *)val;
- used = 0;
- remain = len;
-
- if (!expanding_buffer_ensure(ebuf, remain + 1))
- return NULL;
-
- while (remain-- > 0) {
- c= *ip++;
-
- if (c >= ' ' && c <= '~' && c != '\\') {
- ADD(c);
- continue;
- }
-
- if (!expanding_buffer_ensure(ebuf, used + remain + 5))
- /* for "<used>\\nnn<remain>\0" */
- return 0;
-
- ADD('\\');
- switch (c) {
- case '\t': ADD('t'); break;
- case '\n': ADD('n'); break;
- case '\r': ADD('r'); break;
- case '\\': ADD('\\'); break;
- default:
- if (c < 010) ADDF("%03o", c);
- else ADDF("x%02x", c);
- }
- }
-
- ADD(0);
- assert(used <= ebuf->avail);
- return ebuf->buf;
-
-#undef ADD
-#undef ADDF
-}
-
-void unsanitise_value(char *out, unsigned *out_len_r, const char *in)
-{
- const char *ip;
- char *op;
- unsigned c;
- int n;
-
- for (ip = in, op = out; (c = *ip++); *op++ = c) {
- if (c == '\\') {
- c = *ip++;
-
-#define GETF(f) do { \
- n = 0; \
- sscanf(ip, f "%n", &c, &n); \
- ip += n; \
- } while (0)
-
- switch (c) {
- case 't': c= '\t'; break;
- case 'n': c= '\n'; break;
- case 'r': c= '\r'; break;
- case '\\': c= '\\'; break;
- case 'x': GETF("%2x"); break;
- case '0': case '4':
- case '1': case '5':
- case '2': case '6':
- case '3': case '7': --ip; GETF("%3o"); break;
- case 0: --ip; break;
- default:;
- }
-#undef GETF
- }
- }
-
- *op = 0;
-
- if (out_len_r)
- *out_len_r = op - out;
-}
--
2.10.2
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel
next prev parent reply other threads:[~2016-12-05 7:49 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-12-05 7:48 [PATCH v4 00/12] xenstore: support reading directory with many children Juergen Gross
2016-12-05 7:48 ` [PATCH v4 01/12] xenstore: modify add_change_node() parameter types Juergen Gross
2016-12-05 7:48 ` [PATCH v4 02/12] xenstore: call add_change_node() directly when writing node Juergen Gross
2016-12-05 10:01 ` Wei Liu
2016-12-05 7:48 ` [PATCH v4 03/12] xenstore: use common tdb record header in xenstore Juergen Gross
2016-12-05 7:48 ` [PATCH v4 04/12] xenstore: add per-node generation counter Juergen Gross
2017-01-09 14:38 ` Jan Beulich
[not found] ` <5873AE81020000780012E350@suse.com>
2017-01-09 16:02 ` Juergen Gross
2017-01-09 16:10 ` Jan Beulich
[not found] ` <5873C3ED020000780012E4D5@suse.com>
2017-01-09 16:20 ` Juergen Gross
2016-12-05 7:48 ` [PATCH v4 05/12] xenstore: add support for reading directory with many children Juergen Gross
2017-01-09 16:40 ` Ian Jackson
2017-01-09 18:01 ` Juergen Gross
2016-12-05 7:48 ` [PATCH v4 06/12] xenstore: support XS_DIRECTORY_PART in libxenstore Juergen Gross
2016-12-05 7:48 ` [PATCH v4 07/12] xenstore: use array for xenstore wire command handling Juergen Gross
2016-12-05 8:43 ` Jan Beulich
2016-12-05 9:41 ` Wei Liu
2016-12-05 7:48 ` [PATCH v4 08/12] xenstore: let command functions return error or success Juergen Gross
2016-12-05 7:48 ` Juergen Gross [this message]
2016-12-05 10:02 ` [PATCH v4 09/12] xenstore: make functions static Wei Liu
2016-12-05 7:48 ` [PATCH v4 10/12] xenstore: add helper functions for wire argument parsing Juergen Gross
2016-12-05 7:48 ` [PATCH v4 11/12] xenstore: add small default data buffer to internal struct Juergen Gross
2016-12-05 7:48 ` [PATCH v4 12/12] xenstore: handle memory allocation failures in xenstored Juergen Gross
2016-12-05 10:03 ` Wei Liu
2016-12-05 10:15 ` Juergen Gross
2016-12-05 10:16 ` Wei Liu
2016-12-05 10:45 ` Wei Liu
2016-12-05 12:05 ` [PATCH v4 00/12] xenstore: support reading directory with many children Wei Liu
2016-12-05 18:19 ` Andrew Cooper
2016-12-06 6:30 ` Juergen Gross
2016-12-06 11:25 ` Andrew Cooper
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20161205074853.13268-10-jgross@suse.com \
--to=jgross@suse.com \
--cc=George.Dunlap@eu.citrix.com \
--cc=andrew.cooper3@citrix.com \
--cc=ian.jackson@eu.citrix.com \
--cc=jbeulich@suse.com \
--cc=sstabellini@kernel.org \
--cc=tim@xen.org \
--cc=wei.liu2@citrix.com \
--cc=xen-devel@lists.xenproject.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).