X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;f=examples%2Fto-xml.c;h=ee1b3bff2e1d7b745d3c85954422bfdc6f4a4fb4;hb=28d74ee234bebaab552a662eb0700a36413b68b5;hp=5c438f32ebcd0b6781e63cc9ad9efb7e878b1dbc;hpb=92c2c33d6162ae0781be47472051305bae332252;p=libguestfs.git diff --git a/examples/to-xml.c b/examples/to-xml.c index 5c438f3..ee1b3bf 100644 --- a/examples/to-xml.c +++ b/examples/to-xml.c @@ -7,6 +7,9 @@ * to-xml guest.img [guest.img ...] */ +#if HAVE_CONFIG_H +# include +#endif #include #include #include @@ -26,7 +29,7 @@ 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[]) @@ -48,7 +51,6 @@ main (int argc, char *argv[]) CALL (guestfs_add_drive (g, argv[i]), -1); CALL (guestfs_launch (g), -1); - CALL (guestfs_wait_ready (g), -1); printf ("\n"); @@ -85,15 +87,15 @@ main (int argc, char *argv[]) int len = strlen (vgs[i]); 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 ("\n", lvs[j], size); - display_partition (g, lvs[j]); - printf ("\n"); - free (lvs[j]); + if (STREQLEN (lvs[j], "/dev/", 5) && + STREQLEN (&lvs[j][5], vgs[i], len) && + lvs[j][len+5] == '/') { + int64_t size; + CALL (size = guestfs_blockdev_getsize64 (g, lvs[j]), -1); + printf ("\n", lvs[j], size); + display_partition (g, lvs[j]); + printf ("\n"); + free (lvs[j]); } } @@ -118,17 +120,19 @@ display_partition (guestfs_h *g, const char *dev) CALL (what = guestfs_file (g, dev), NULL); - if (strcmp (what, "x86 boot sector") == 0) + if (STREQ (what, "x86 boot sector")) /* This is what 'file' program shows for Windows/NTFS partitions. */ printf ("\n"); else if (strstr (what, "boot sector") != NULL) display_partitions (g, dev); - else if (strncmp (what, "LVM2", 4) == 0) + else if (STREQLEN (what, "LVM2", 4)) printf ("\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 ("\n"); else @@ -145,7 +149,7 @@ display_partitions (guestfs_h *g, const char *dev) * That's a limitation of sorts of the Linux kernel. (Actually, * we could do this if we add the kpartx program to libguestfs). */ - if (strncmp (dev, "/dev/sd", 7) != 0 || isdigit (dev[strlen(dev)-1])) { + if (STRNEQLEN (dev, "/dev/sd", 7) || isdigit (dev[strlen(dev)-1])) { printf ("\n", dev); return; } @@ -158,7 +162,7 @@ display_partitions (guestfs_h *g, const char *dev) len = strlen (dev); for (i = 0; parts[i] != NULL; ++i) { /* Only display partition if it's in the device. */ - if (strncmp (parts[i], dev, len) == 0) { + if (STREQLEN (parts[i], dev, len)) { int64_t size; CALL (size = guestfs_blockdev_getsize64 (g, parts[i]), -1); printf ("\n", parts[i], size); @@ -172,9 +176,9 @@ display_partitions (guestfs_h *g, const char *dev) printf ("\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; @@ -186,9 +190,9 @@ display_ext23 (guestfs_h *g, const char *dev, const char *fstype) /* Just pick out a few important fields to display. There * is much more that could be displayed here. */ - if (strcmp (sbfields[i], "Filesystem UUID") == 0) + if (STREQ (sbfields[i], "Filesystem UUID")) printf ("%s\n", sbfields[i+1]); - else if (strcmp (sbfields[i], "Block size") == 0) + else if (STREQ (sbfields[i], "Block size")) printf ("%s\n", sbfields[i+1]); free (sbfields[i]);