summaryrefslogtreecommitdiffstats
path: root/fish/completion.c
diff options
context:
space:
mode:
authorRichard Jones <rjones@redhat.com>2009-04-14 15:52:04 +0100
committerRichard Jones <rjones@redhat.com>2009-04-14 15:52:04 +0100
commitd268e64fe76944dc042e7ec68a65e59a6cff16ce (patch)
tree7ec8cfe1d097c1eb17f37d08e1ae5baf636a8b67 /fish/completion.c
parent374af1d1c85580a7768967bf2f199f10182b011e (diff)
downloadlibguestfs-d268e64fe76944dc042e7ec68a65e59a6cff16ce.tar.gz
libguestfs-d268e64fe76944dc042e7ec68a65e59a6cff16ce.tar.xz
libguestfs-d268e64fe76944dc042e7ec68a65e59a6cff16ce.zip
Added bindings for GNU readline.
Diffstat (limited to 'fish/completion.c')
-rw-r--r--fish/completion.c142
1 files changed, 142 insertions, 0 deletions
diff --git a/fish/completion.c b/fish/completion.c
new file mode 100644
index 00000000..150b1aaa
--- /dev/null
+++ b/fish/completion.c
@@ -0,0 +1,142 @@
+/* libguestfs generated file
+ * WARNING: THIS FILE IS GENERATED BY 'src/generator.ml'.
+ * ANY CHANGES YOU MAKE TO THIS FILE WILL BE LOST.
+ *
+ * Copyright (C) 2009 Red Hat Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#include <config.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#ifdef HAVE_LIBREADLINE
+#include <readline/readline.h>
+#endif
+
+#include "fish.h"
+
+#ifdef HAVE_LIBREADLINE
+
+static const char *commands[] = {
+ "add",
+ "add-cdrom",
+ "add-drive",
+ "aug-close",
+ "aug-defnode",
+ "aug-defvar",
+ "aug-get",
+ "aug-init",
+ "aug-insert",
+ "aug-load",
+ "aug-ls",
+ "aug-match",
+ "aug-mv",
+ "aug-rm",
+ "aug-save",
+ "aug-set",
+ "autosync",
+ "cat",
+ "cdrom",
+ "chmod",
+ "chown",
+ "command",
+ "command-lines",
+ "config",
+ "exists",
+ "file",
+ "get-autosync",
+ "get-path",
+ "get-verbose",
+ "is-dir",
+ "is-file",
+ "kill-subprocess",
+ "launch",
+ "list-devices",
+ "list-partitions",
+ "ll",
+ "ls",
+ "lvcreate",
+ "lvm-remove-all",
+ "lvs",
+ "lvs-full",
+ "mkdir",
+ "mkdir-p",
+ "mkfs",
+ "mount",
+ "mounts",
+ "path",
+ "pvcreate",
+ "pvs",
+ "pvs-full",
+ "read-lines",
+ "rm",
+ "rm-rf",
+ "rmdir",
+ "run",
+ "set-autosync",
+ "set-path",
+ "set-verbose",
+ "sfdisk",
+ "sync",
+ "touch",
+ "umount",
+ "umount-all",
+ "unmount",
+ "unmount-all",
+ "verbose",
+ "vgcreate",
+ "vgs",
+ "vgs-full",
+ "write-file",
+ NULL
+};
+
+static char *
+generator (const char *text, int state)
+{
+ static int index, len;
+ const char *name;
+
+ if (!state) {
+ index = 0;
+ len = strlen (text);
+ }
+
+ while ((name = commands[index]) != NULL) {
+ index++;
+ if (strncasecmp (name, text, len) == 0)
+ return strdup (name);
+ }
+
+ return NULL;
+}
+
+#endif /* HAVE_LIBREADLINE */
+
+char **do_completion (const char *text, int start, int end)
+{
+ char **matches = NULL;
+
+#ifdef HAVE_LIBREADLINE
+ if (start == 0)
+ matches = rl_completion_matches (text, generator);
+#endif
+
+ return matches;
+}