extra-tests: Add an extra suppression for OCaml 3.11.2 in RHEL 6.
[libguestfs.git] / fish / reopen.c
index b076982..585bbd2 100644 (file)
@@ -13,7 +13,7 @@
  *
  * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
 #include <config.h>
@@ -31,6 +31,8 @@ run_reopen (const char *cmd, size_t argc, char *argv[])
   guestfs_h *g2;
   int r;
   const char *p;
+  guestfs_error_handler_cb cb;
+  void *cb_data;
 
   if (argc > 0) {
     fprintf (stderr, _("'reopen' command takes no parameters\n"));
@@ -50,6 +52,9 @@ run_reopen (const char *cmd, size_t argc, char *argv[])
   /* Now copy some of the settings from the old handle.  The settings
    * we copy are those which are set by guestfish itself.
    */
+  cb = guestfs_get_error_handler (g, &cb_data);
+  guestfs_set_error_handler (g2, cb, cb_data);
+
   r = guestfs_get_verbose (g);
   if (r >= 0)
     guestfs_set_verbose (g2, r);
@@ -66,12 +71,24 @@ run_reopen (const char *cmd, size_t argc, char *argv[])
   if (p)
     guestfs_set_path (g2, p);
 
+  r = guestfs_get_pgroup (g);
+  if (r >= 0)
+    guestfs_set_pgroup (g2, r);
+
   if (progress_bars)
-    guestfs_set_progress_callback (g2, progress_callback, NULL);
+    guestfs_set_event_callback (g2, progress_callback,
+                                GUESTFS_EVENT_PROGRESS, 0, NULL);
 
   /* Close the original handle. */
   guestfs_close (g);
   g = g2;
 
+  /* We don't bother copying event handlers over to the new handle,
+   * but we have to reset the list because they were registered
+   * against the old handle.
+   */
+  free_event_handlers ();
+  init_event_handlers ();
+
   return 0;
 }