X-Git-Url: http://git.annexia.org/?p=libguestfs.git;a=blobdiff_plain;f=src%2Fguestfs.c;h=204125b9e281edea8b88b5ca7f361fb5057fbaef;hp=6eae6929deb52d86060db2ac62453b616a9e1548;hb=005c82b8b89c50f9fb606ce3f5855a0c9b7b1c23;hpb=dd922bedb7c3e85fbbe1eed10e371aec47138a1d diff --git a/src/guestfs.c b/src/guestfs.c index 6eae692..204125b 100644 --- a/src/guestfs.c +++ b/src/guestfs.c @@ -64,10 +64,10 @@ #ifdef HAVE_GETTEXT #include "gettext.h" #define _(str) dgettext(PACKAGE, (str)) -#define N_(str) dgettext(PACKAGE, (str)) +//#define N_(str) dgettext(PACKAGE, (str)) #else #define _(str) str -#define N_(str) str +//#define N_(str) str #endif #define error guestfs_error @@ -75,7 +75,7 @@ #define safe_malloc guestfs_safe_malloc #define safe_realloc guestfs_safe_realloc #define safe_strdup guestfs_safe_strdup -#define safe_memdup guestfs_safe_memdup +//#define safe_memdup guestfs_safe_memdup static void default_error_cb (guestfs_h *g, void *data, const char *msg); static void stdout_event (struct guestfs_main_loop *ml, guestfs_h *g, void *data, int watch, int fd, int events); @@ -202,9 +202,9 @@ struct guestfs_h /* Messages sent and received from the daemon. */ char *msg_in; - int msg_in_size, msg_in_allocated; + unsigned int msg_in_size, msg_in_allocated; char *msg_out; - int msg_out_size, msg_out_pos; + unsigned int msg_out_size, msg_out_pos; int msg_next_serial; }; @@ -348,6 +348,10 @@ guestfs_close (guestfs_h *g) g->fd[1] = -1; g->sock = -1; + /* Wait for subprocess(es) to exit. */ + waitpid (g->pid, NULL, 0); + if (g->recoverypid > 0) waitpid (g->recoverypid, NULL, 0); + /* Remove tmpfiles. */ if (g->tmpdir) { snprintf (filename, sizeof filename, "%s/sock", g->tmpdir); @@ -1165,16 +1169,16 @@ guestfs_launch (guestfs_h *g) close (wfd[1]); close (rfd[0]); - int fail = 0; - fail |= dup (wfd[0]); - fail |= dup (rfd[1]); - close (wfd[0]); - close (rfd[1]); - - if (fail) { + if (dup (wfd[0]) == -1) { + dup_failed: perror ("dup failed"); _exit (1); } + if (dup (rfd[1]) == -1) + goto dup_failed; + + close (wfd[0]); + close (rfd[1]); #if 0 /* Set up a new process group, so we can signal this process @@ -1628,8 +1632,10 @@ guestfs_end_busy (guestfs_h *g) case CONFIG: case READY: break; + case LAUNCHING: case NO_HANDLE: + default: error (g, _("guestfs_end_busy: called when in state %d"), g->state); return -1; } @@ -2623,6 +2629,7 @@ select_remove_handle (guestfs_main_loop *mlv, guestfs_h *g, int fd) } static int +__attribute__((noreturn)) select_add_timeout (guestfs_main_loop *mlv, guestfs_h *g, int interval, guestfs_handle_timeout_cb cb, void *data) { @@ -2632,6 +2639,7 @@ select_add_timeout (guestfs_main_loop *mlv, guestfs_h *g, int interval, } static int +__attribute__((noreturn)) select_remove_timeout (guestfs_main_loop *mlv, guestfs_h *g, int timer) { //struct select_main_loop *ml = (struct select_main_loop *) mlv;