summaryrefslogtreecommitdiffstats
path: root/src/guestfs.c
diff options
context:
space:
mode:
authorRichard Jones <rjones@redhat.com>2010-06-10 12:38:57 +0100
committerRichard Jones <rjones@redhat.com>2010-06-10 14:30:36 +0100
commitdbfd93b72f99ebdded394541a48177c415db8cbf (patch)
tree5bfe6e3aa6a8f33ab80d268064799985a5f1249b /src/guestfs.c
parent91b00dc092be17a309f14fc35f41dbf1e41c4c58 (diff)
downloadlibguestfs-dbfd93b72f99ebdded394541a48177c415db8cbf.tar.gz
libguestfs-dbfd93b72f99ebdded394541a48177c415db8cbf.tar.xz
libguestfs-dbfd93b72f99ebdded394541a48177c415db8cbf.zip
Add error callback (RHBZ#602599).
Read the note in the man page before using this feature.
Diffstat (limited to 'src/guestfs.c')
-rw-r--r--src/guestfs.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/guestfs.c b/src/guestfs.c
index 0e4cb73b..1439361d 100644
--- a/src/guestfs.c
+++ b/src/guestfs.c
@@ -183,6 +183,8 @@ struct guestfs_h
void * subprocess_quit_cb_data;
guestfs_launch_done_cb launch_done_cb;
void * launch_done_cb_data;
+ guestfs_close_cb close_cb;
+ void * close_cb_data;
int msg_next_serial;
};
@@ -294,6 +296,10 @@ guestfs_close (guestfs_h *g)
if (g->verbose)
fprintf (stderr, "closing guestfs handle %p (state %d)\n", g, g->state);
+ /* Run user close callback before anything else. */
+ if (g->close_cb)
+ g->close_cb (g, g->close_cb_data);
+
/* Try to sync if autosync flag is set. */
if (g->autosync && g->state == READY) {
guestfs_umount_all (g);
@@ -1927,6 +1933,14 @@ guestfs_set_launch_done_callback (guestfs_h *g,
g->launch_done_cb_data = opaque;
}
+void
+guestfs_set_close_callback (guestfs_h *g,
+ guestfs_close_cb cb, void *opaque)
+{
+ g->close_cb = cb;
+ g->close_cb_data = opaque;
+}
+
/*----------------------------------------------------------------------*/
/* This is the code used to send and receive RPC messages and (for