* to-xml guest.img [guest.img ...]
*/
+#if HAVE_CONFIG_H
+# include <config.h>
+#endif
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
* to stderr already.
*/
#define CALL(call,errcode) \
- if ((call) == (errcode)) exit (1);
+ if ((call) == (errcode)) exit (EXIT_FAILURE);
static void display_partition (guestfs_h *g, const char *dev);
static void display_partitions (guestfs_h *g, const char *dev);
-static void display_ext23 (guestfs_h *g, const char *dev, const char *fstype);
+static void display_ext234 (guestfs_h *g, const char *dev, const char *fstype);
int
main (int argc, char *argv[])
if (argc < 2 || access (argv[1], F_OK) != 0) {
fprintf (stderr, "Usage: to-xml guest.img [guest.img ...]\n");
- exit (1);
+ exit (EXIT_FAILURE);
}
if (!(g = guestfs_create ())) {
fprintf (stderr, "Cannot create libguestfs handle.\n");
- exit (1);
+ exit (EXIT_FAILURE);
}
for (i = 1; i < argc; ++i)
CALL (guestfs_add_drive (g, argv[i]), -1);
CALL (guestfs_launch (g), -1);
- CALL (guestfs_wait_ready (g), -1);
printf ("<guestfs-system>\n");
int j;
for (j = 0; lvs[j] != NULL; ++j) {
if (strncmp (lvs[j], "/dev/", 5) == 0 &&
- strncmp (&lvs[j][5], vgs[i], len) == 0 &&
- lvs[j][len+5] == '/') {
- int64_t size;
- CALL (size = guestfs_blockdev_getsize64 (g, lvs[j]), -1);
- printf ("<logvol name=\"%s\" size=\"%" PRIi64 "\">\n", lvs[j], size);
- display_partition (g, lvs[j]);
- printf ("</logvol>\n");
- free (lvs[j]);
+ strncmp (&lvs[j][5], vgs[i], len) == 0 &&
+ lvs[j][len+5] == '/') {
+ int64_t size;
+ CALL (size = guestfs_blockdev_getsize64 (g, lvs[j]), -1);
+ printf ("<logvol name=\"%s\" size=\"%" PRIi64 "\">\n", lvs[j], size);
+ display_partition (g, lvs[j]);
+ printf ("</logvol>\n");
+ free (lvs[j]);
}
}
else if (strncmp (what, "LVM2", 4) == 0)
printf ("<physvol/>\n");
else if (strstr (what, "ext2 filesystem data") != NULL)
- display_ext23 (g, dev, "ext2");
+ display_ext234 (g, dev, "ext2");
else if (strstr (what, "ext3 filesystem data") != NULL)
- display_ext23 (g, dev, "ext3");
+ display_ext234 (g, dev, "ext3");
+ else if (strstr (what, "ext4 filesystem data") != NULL)
+ display_ext234 (g, dev, "ext4");
else if (strstr (what, "Linux/i386 swap file") != NULL)
printf ("<linux-swap/>\n");
else
printf ("</partitions>\n");
}
-/* Display some details on the ext2/3 filesystem on dev. */
+/* Display some details on the ext2/3/4 filesystem on dev. */
static void
-display_ext23 (guestfs_h *g, const char *dev, const char *fstype)
+display_ext234 (guestfs_h *g, const char *dev, const char *fstype)
{
char **sbfields;
int i;