summaryrefslogtreecommitdiffstats
path: root/src/guestfs-internal.h
diff options
context:
space:
mode:
authorRichard W.M. Jones <rjones@redhat.com>2012-10-17 14:31:33 +0100
committerRichard W.M. Jones <rjones@redhat.com>2012-10-18 21:52:08 +0100
commit2e90f4312928f332f8997b52be3fe54f20920242 (patch)
treefc5365fbcd79d5ba261bb7c72b251f5531fb75ce /src/guestfs-internal.h
parent2dab72794eef55f941cc61f1f34baa9fc7988298 (diff)
downloadlibguestfs-2e90f4312928f332f8997b52be3fe54f20920242.tar.gz
libguestfs-2e90f4312928f332f8997b52be3fe54f20920242.tar.xz
libguestfs-2e90f4312928f332f8997b52be3fe54f20920242.zip
lib: Add a new 'command' mini-library for running external commands.
This is a wrapper or mini-library for running external command, loosely based on libvirt's virCommand interface. Amongst the advantages are: - Can redirect errors into the error log (RHBZ#713678). - Can redirect output into a callback function. - Handles shell quoting properly. - Safely resets signal handlers, closes file descriptors, etc. - Single place where we can implement other improvements in future.
Diffstat (limited to 'src/guestfs-internal.h')
-rw-r--r--src/guestfs-internal.h18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/guestfs-internal.h b/src/guestfs-internal.h
index 90954f18..cf810e18 100644
--- a/src/guestfs-internal.h
+++ b/src/guestfs-internal.h
@@ -583,4 +583,22 @@ extern void guestfs___free_fuse (guestfs_h *g);
extern virConnectPtr guestfs___open_libvirt_connection (guestfs_h *g, const char *uri, unsigned int flags);
#endif
+/* command.c */
+struct command;
+typedef void (*cmd_stdout_callback) (guestfs_h *g, void *data, const char *line, size_t len);
+extern struct command *guestfs___new_command (guestfs_h *g);
+extern void guestfs___cmd_add_arg (struct command *, const char *arg);
+extern void guestfs___cmd_add_arg_format (struct command *, const char *fs, ...)
+ __attribute__((format (printf,2,3)));
+extern void guestfs___cmd_add_string_unquoted (struct command *, const char *str);
+extern void guestfs___cmd_add_string_quoted (struct command *, const char *str);
+extern void guestfs___cmd_set_stdout_callback (struct command *, cmd_stdout_callback stdout_callback, void *data, unsigned flags);
+#define CMD_STDOUT_FLAG_LINE_BUFFER 0
+#define CMD_STDOUT_FLAG_UNBUFFERED 1
+#define CMD_STDOUT_FLAG_WHOLE_BUFFER 2
+extern void guestfs___cmd_set_stderr_to_stdout (struct command *);
+extern void guestfs___cmd_clear_capture_errors (struct command *);
+extern int guestfs___cmd_run (struct command *);
+extern void guestfs___cmd_close (struct command *);
+
#endif /* GUESTFS_INTERNAL_H_ */