summaryrefslogtreecommitdiffstats
path: root/daemon/daemon.h
diff options
context:
space:
mode:
Diffstat (limited to 'daemon/daemon.h')
-rw-r--r--daemon/daemon.h33
1 files changed, 27 insertions, 6 deletions
diff --git a/daemon/daemon.h b/daemon/daemon.h
index b515fe4f..b973a7f9 100644
--- a/daemon/daemon.h
+++ b/daemon/daemon.h
@@ -47,14 +47,35 @@ extern int xwrite (int sock, const void *buf, size_t len)
extern int xread (int sock, void *buf, size_t len)
__attribute__((__warn_unused_result__));
-extern int add_string_nodup (char ***argv, int *size, int *alloc, char *str);
-extern int add_string (char ***argv, int *size, int *alloc, const char *str);
+/* Growable strings buffer. */
+struct stringsbuf {
+ char **argv;
+ size_t size;
+ size_t alloc;
+};
+#define DECLARE_STRINGSBUF(v) \
+ struct stringsbuf (v) = { .argv = NULL, .size = 0, .alloc = 0 }
+
+/* Append a string to the strings buffer.
+ *
+ * add_string_nodup: don't copy the string.
+ * add_string: copy the string.
+ * end_stringsbuf: NULL-terminate the buffer.
+ *
+ * All functions may fail. If these functions return -1, then
+ * reply_with_* has been called, the strings have been freed and the
+ * buffer should no longer be used.
+ */
+extern int add_string_nodup (struct stringsbuf *sb, char *str);
+extern int add_string (struct stringsbuf *sb, const char *str);
+extern int end_stringsbuf (struct stringsbuf *sb);
+
extern size_t count_strings (char *const *argv);
-extern void sort_strings (char **argv, int len);
+extern void sort_strings (char **argv, size_t len);
extern void free_strings (char **argv);
-extern void free_stringslen (char **argv, int len);
+extern void free_stringslen (char **argv, size_t len);
-extern int is_power_of_2 (unsigned long v);
+extern char **split_lines (char *str);
#define command(out,err,name,...) commandf((out),(err),0,(name),__VA_ARGS__)
#define commandr(out,err,name,...) commandrf((out),(err),0,(name),__VA_ARGS__)
@@ -74,7 +95,7 @@ extern int commandvf (char **stdoutput, char **stderror, int flags,
extern int commandrvf (char **stdoutput, char **stderror, int flags,
char const* const *argv);
-extern char **split_lines (char *str);
+extern int is_power_of_2 (unsigned long v);
extern void trim (char *str);