int guestfs__launch (guestfs_h *g) { /* Configured? */ if (g->state != CONFIG) { error (g, _("the libguestfs handle has already been launched")); return -1; } /* Start the clock ... */ gettimeofday (&g->launch_t, NULL); TRACE0 (launch_start); /* Make the temporary directory. */ if (guestfs___lazy_make_tmpdir (g) == -1) return -1; /* Allow anyone to read the temporary directory. The socket in this * directory won't be readable but anyone can see it exists if they * want. (RHBZ#610880). */ if (chmod (g->tmpdir, 0755) == -1) warning (g, "chmod: %s: %m (ignored)", g->tmpdir); /* Some common debugging information. */ if (g->verbose) { CLEANUP_FREE_VERSION struct guestfs_version *v = guestfs_version (g); struct backend *b; CLEANUP_FREE char *backend = guestfs_get_backend (g); debug (g, "launch: program=%s", g->program); debug (g, "launch: version=%"PRIi64".%"PRIi64".%"PRIi64"%s", v->major, v->minor, v->release, v->extra); for (b = backends; b != NULL; b = b->next) debug (g, "launch: backend registered: %s", b->name); debug (g, "launch: backend=%s", backend); debug (g, "launch: tmpdir=%s", g->tmpdir); debug (g, "launch: umask=0%03o", get_umask (g)); debug (g, "launch: euid=%d", geteuid ()); } /* Launch the appliance. */ if (g->backend_ops->launch (g, g->backend_data, g->backend_arg) == -1) return -1; /* If network is enabled, upload /etc/resolv.conf from the host so * the guest will know how to reach the nameservers. */ if (g->enable_network && access ("/etc/resolv.conf", F_OK) == 0) { guestfs_internal_upload (g, "/etc/resolv.conf", "/etc/resolv.conf", 0644); } return 0; }
int guestfs_impl_launch (guestfs_h *g) { /* Configured? */ if (g->state != CONFIG) { error (g, _("the libguestfs handle has already been launched")); return -1; } /* Start the clock ... */ gettimeofday (&g->launch_t, NULL); TRACE0 (launch_start); /* Make the temporary directory. */ if (guestfs_int_lazy_make_tmpdir (g) == -1) return -1; /* Some common debugging information. */ if (g->verbose) { CLEANUP_FREE_VERSION struct guestfs_version *v = guestfs_version (g); struct backend *b; CLEANUP_FREE char *backend = guestfs_get_backend (g); int mask; debug (g, "launch: program=%s", g->program); if (STRNEQ (g->identifier, "")) debug (g, "launch: identifier=%s", g->identifier); debug (g, "launch: version=%"PRIi64".%"PRIi64".%"PRIi64"%s", v->major, v->minor, v->release, v->extra); for (b = backends; b != NULL; b = b->next) debug (g, "launch: backend registered: %s", b->name); debug (g, "launch: backend=%s", backend); debug (g, "launch: tmpdir=%s", g->tmpdir); mask = guestfs_int_getumask (g); if (mask >= 0) debug (g, "launch: umask=0%03o", (unsigned) mask); debug (g, "launch: euid=%ju", (uintmax_t) geteuid ()); } /* Launch the appliance. */ if (g->backend_ops->launch (g, g->backend_data, g->backend_arg) == -1) return -1; return 0; }