summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorRichard W.M. Jones <rjones@redhat.com>2011-07-25 11:12:48 +0100
committerRichard W.M. Jones <rjones@redhat.com>2011-07-26 12:48:49 +0100
commit5d7dc0dfb65f367dab3560ee23e404fe21373f45 (patch)
tree3908ad8749f33863cdb3cc071d9dca2341189052 /src
parent41cd0e302d6554facd6b9f7daaa78304361efaef (diff)
downloadlibguestfs-5d7dc0dfb65f367dab3560ee23e404fe21373f45.tar.gz
libguestfs-5d7dc0dfb65f367dab3560ee23e404fe21373f45.tar.xz
libguestfs-5d7dc0dfb65f367dab3560ee23e404fe21373f45.zip
launch: Add qemu_supports_re function.
This function is like qemu_supports, but allows us to grep the help text using regular expressions. Note the function is not used yet.
Diffstat (limited to 'src')
-rw-r--r--src/launch.c43
1 files changed, 43 insertions, 0 deletions
diff --git a/src/launch.c b/src/launch.c
index c89c69f8..56aa288b 100644
--- a/src/launch.c
+++ b/src/launch.c
@@ -63,6 +63,7 @@
#include <netinet/in.h>
#include "c-ctype.h"
+#include "ignore-value.h"
#include "glthread/lock.h"
#include "guestfs.h"
@@ -75,6 +76,34 @@ static int64_t timeval_diff (const struct timeval *x, const struct timeval *y);
static int connect_unix_socket (guestfs_h *g, const char *sock);
static int qemu_supports (guestfs_h *g, const char *option);
+#if 0
+static int qemu_supports_re (guestfs_h *g, const pcre *option_regex);
+
+static void compile_regexps (void) __attribute__((constructor));
+static void free_regexps (void) __attribute__((destructor));
+
+static void
+compile_regexps (void)
+{
+ const char *err;
+ int offset;
+
+#define COMPILE(re,pattern,options) \
+ do { \
+ re = pcre_compile ((pattern), (options), &err, &offset, NULL); \
+ if (re == NULL) { \
+ ignore_value (write (2, err, strlen (err))); \
+ abort (); \
+ } \
+ } while (0)
+}
+
+static void
+free_regexps (void)
+{
+}
+#endif
+
/* Add a string to the current command line. */
static void
incr_cmdline_size (guestfs_h *g)
@@ -1130,6 +1159,20 @@ qemu_supports (guestfs_h *g, const char *option)
return strstr (g->qemu_help, option) != NULL;
}
+#if 0
+/* As above but using a regex instead of a fixed string. */
+static int
+qemu_supports_re (guestfs_h *g, const pcre *option_regex)
+{
+ if (!g->qemu_help) {
+ if (test_qemu (g) == -1)
+ return -1;
+ }
+
+ return match (g, g->qemu_help, option_regex);
+}
+#endif
+
/* Check if a file can be opened. */
static int
is_openable (guestfs_h *g, const char *path, int flags)