summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthew Booth <mbooth@redhat.com>2010-10-28 15:19:11 +0100
committerRichard W.M. Jones <rjones@redhat.com>2010-10-28 16:08:45 +0100
commit06fef60db5c7a96cb59aa92c4708e10333345e90 (patch)
tree8386ff20f31618b01babf924924ad36b2e737da4
parent0353688577a27749f40bcc060e5703102c5a9649 (diff)
downloadlibguestfs-06fef60db5c7a96cb59aa92c4708e10333345e90.tar.gz
libguestfs-06fef60db5c7a96cb59aa92c4708e10333345e90.tar.xz
libguestfs-06fef60db5c7a96cb59aa92c4708e10333345e90.zip
New internal function guestfs___print_timestamped_argv
This function generalises the existing print_cmdline used to output the qemu command line to output any given command line, and exports it to other modules. It also adds a timestamp to the old print_cmdline output for consistency with guestfs___print_timestamped_message.
-rw-r--r--src/guestfs-internal.h1
-rw-r--r--src/launch.c48
2 files changed, 25 insertions, 24 deletions
diff --git a/src/guestfs-internal.h b/src/guestfs-internal.h
index 6fc9412d..10c95038 100644
--- a/src/guestfs-internal.h
+++ b/src/guestfs-internal.h
@@ -201,6 +201,7 @@ extern void *guestfs_safe_realloc (guestfs_h *g, void *ptr, int nbytes);
extern char *guestfs_safe_strdup (guestfs_h *g, const char *str);
extern char *guestfs_safe_strndup (guestfs_h *g, const char *str, size_t n);
extern void *guestfs_safe_memdup (guestfs_h *g, void *ptr, size_t size);
+extern void guestfs___print_timestamped_argv (guestfs_h *g, const char *argv[]);
extern void guestfs___print_timestamped_message (guestfs_h *g, const char *fs, ...);
extern void guestfs___free_inspect_info (guestfs_h *g);
extern int guestfs___set_busy (guestfs_h *g);
diff --git a/src/launch.c b/src/launch.c
index 047a1e15..e5bca56e 100644
--- a/src/launch.c
+++ b/src/launch.c
@@ -302,7 +302,6 @@ guestfs__add_cdrom (guestfs_h *g, const char *filename)
}
static int is_openable (guestfs_h *g, const char *path, int flags);
-static void print_cmdline (guestfs_h *g);
int
guestfs__launch (guestfs_h *g)
@@ -546,7 +545,7 @@ guestfs__launch (guestfs_h *g)
g->cmdline[g->cmdline_size-1] = NULL;
if (g->verbose)
- print_cmdline (g);
+ guestfs___print_timestamped_argv (g, (const char **)g->cmdline);
if (!g->direct) {
/* Set up stdin, stdout. */
@@ -746,26 +745,41 @@ guestfs_tmpdir (void)
return tmpdir;
}
-/* This function is used to print the qemu command line before it gets
- * executed, when in verbose mode.
+/* Compute Y - X and return the result in milliseconds.
+ * Approximately the same as this code:
+ * http://www.mpp.mpg.de/~huber/util/timevaldiff.c
*/
-static void
-print_cmdline (guestfs_h *g)
+static int64_t
+timeval_diff (const struct timeval *x, const struct timeval *y)
+{
+ int64_t msec;
+
+ msec = (y->tv_sec - x->tv_sec) * 1000;
+ msec += (y->tv_usec - x->tv_usec) / 1000;
+ return msec;
+}
+
+void
+guestfs___print_timestamped_argv (guestfs_h *g, const char * argv[])
{
int i = 0;
int needs_quote;
- while (g->cmdline[i]) {
- if (g->cmdline[i][0] == '-') /* -option starts a new line */
+ struct timeval tv;
+ gettimeofday (&tv, NULL);
+ fprintf (stderr, "[%05" PRIi64 "ms] ", timeval_diff (&g->launch_t, &tv));
+
+ while (argv[i]) {
+ if (argv[i][0] == '-') /* -option starts a new line */
fprintf (stderr, " \\\n ");
if (i > 0) fputc (' ', stderr);
/* Does it need shell quoting? This only deals with simple cases. */
- needs_quote = strcspn (g->cmdline[i], " ") != strlen (g->cmdline[i]);
+ needs_quote = strcspn (argv[i], " ") != strlen (argv[i]);
if (needs_quote) fputc ('\'', stderr);
- fprintf (stderr, "%s", g->cmdline[i]);
+ fprintf (stderr, "%s", argv[i]);
if (needs_quote) fputc ('\'', stderr);
i++;
}
@@ -773,20 +787,6 @@ print_cmdline (guestfs_h *g)
fputc ('\n', stderr);
}
-/* Compute Y - X and return the result in milliseconds.
- * Approximately the same as this code:
- * http://www.mpp.mpg.de/~huber/util/timevaldiff.c
- */
-static int64_t
-timeval_diff (const struct timeval *x, const struct timeval *y)
-{
- int64_t msec;
-
- msec = (y->tv_sec - x->tv_sec) * 1000;
- msec += (y->tv_usec - x->tv_usec) / 1000;
- return msec;
-}
-
void
guestfs___print_timestamped_message (guestfs_h *g, const char *fs, ...)
{