/* virt-inspector
- * Copyright (C) 2010 Red Hat Inc.
+ * Copyright (C) 2010-2011 Red Hat Inc.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
#include <inttypes.h>
#include <unistd.h>
#include <getopt.h>
+#include <locale.h>
#include <assert.h>
#include <libxml/xmlIO.h>
guestfs_h *g;
int read_only = 1;
+int live = 0;
int verbose = 0;
int keys_from_stdin = 0;
int echo_keys = 0;
" --keys-from-stdin Read passphrases from stdin\n"
" -v|--verbose Verbose messages\n"
" -V|--version Display version and exit\n"
- " -x Echo each command before executing it\n"
+ " -x Trace libguestfs API calls\n"
"For more information, see the manpage %s(1).\n"),
program_name, program_name, program_name,
program_name);
};
struct drv *drvs = NULL;
struct drv *drv;
- char *p, *file = NULL;
const char *format = NULL;
int c;
int option_index;
- int next_prepared_drive = 1;
g = guestfs_create ();
if (g == NULL) {
*/
assert (read_only == 1);
assert (inspector == 1);
+ assert (live == 0);
/* Must be no extra arguments on the command line. */
if (optind != argc)
output_root (xmlTextWriterPtr xo, char *root)
{
char *str;
- int i;
+ int i, r;
char buf[32];
char canonical_root[strlen (root) + 1];
xmlTextWriterWriteElement (xo, BAD_CAST "product_name", BAD_CAST str));
free (str);
+ str = guestfs_inspect_get_product_variant (g, root);
+ if (!str) exit (EXIT_FAILURE);
+ if (STRNEQ (str, "unknown"))
+ XMLERROR (-1,
+ xmlTextWriterWriteElement (xo, BAD_CAST "product_variant", BAD_CAST str));
+ free (str);
+
i = guestfs_inspect_get_major_version (g, root);
snprintf (buf, sizeof buf, "%d", i);
XMLERROR (-1,
free (str);
);
+ str = guestfs_inspect_get_format (g, root);
+ if (!str) exit (EXIT_FAILURE);
+ if (STRNEQ (str, "unknown"))
+ XMLERROR (-1,
+ xmlTextWriterWriteElement (xo, BAD_CAST "format",
+ BAD_CAST str));
+ free (str);
+
+ r = guestfs_inspect_is_live (g, root);
+ if (r > 0) {
+ XMLERROR (-1,
+ xmlTextWriterStartElement (xo, BAD_CAST "live"));
+ XMLERROR (-1, xmlTextWriterEndElement (xo));
+ }
+
+ r = guestfs_inspect_is_netinst (g, root);
+ if (r > 0) {
+ XMLERROR (-1,
+ xmlTextWriterStartElement (xo, BAD_CAST "netinst"));
+ XMLERROR (-1, xmlTextWriterEndElement (xo));
+ }
+
+ r = guestfs_inspect_is_multipart (g, root);
+ if (r > 0) {
+ XMLERROR (-1,
+ xmlTextWriterStartElement (xo, BAD_CAST "multipart"));
+ XMLERROR (-1, xmlTextWriterEndElement (xo));
+ }
+
output_mountpoints (xo, root);
output_filesystems (xo, root);
(dev[5] == 'h' || dev[5] == 'v') &&
dev[6] == 'd' &&
c_isalpha (dev[7]) &&
- c_isdigit (dev[8]))
+ (c_isdigit (dev[8]) || dev[8] == '\0'))
dev[5] = 's';
}