From 3f1e3223c491aa057d02c1da418ed896d09fff7c Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Wed, 23 Mar 2011 16:00:48 +0000 Subject: New API: guestfs_inspect_get_product_variant This returns a product variant for inspected operating systems. In practice this is a useful way to distinguish between consumer and enterprise/server versions of Windows that otherwise have the same version number. --- src/inspect.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'src/inspect.c') diff --git a/src/inspect.c b/src/inspect.c index 1129a53d..b4acf177 100644 --- a/src/inspect.c +++ b/src/inspect.c @@ -1558,6 +1558,14 @@ check_windows_software_registry (guestfs_h *g, struct inspect_fs *fs) free (version); } + else if (STRCASEEQ (key, "InstallationType")) { + fs->product_variant = hivex_value_string (h, values[i]); + if (!fs->product_variant) { + perrorf (g, "hivex_value_string"); + free (key); + goto out; + } + } free (key); } @@ -1965,6 +1973,16 @@ guestfs__inspect_get_product_name (guestfs_h *g, const char *root) return safe_strdup (g, fs->product_name ? : "unknown"); } +char * +guestfs__inspect_get_product_variant (guestfs_h *g, const char *root) +{ + struct inspect_fs *fs = search_for_root (g, root); + if (!fs) + return NULL; + + return safe_strdup (g, fs->product_variant ? : "unknown"); +} + char * guestfs__inspect_get_windows_systemroot (guestfs_h *g, const char *root) { @@ -2849,6 +2867,12 @@ guestfs__inspect_get_product_name (guestfs_h *g, const char *root) NOT_IMPL(NULL); } +char * +guestfs__inspect_get_product_variant (guestfs_h *g, const char *root) +{ + NOT_IMPL(NULL); +} + char * guestfs__inspect_get_windows_systemroot (guestfs_h *g, const char *root) { @@ -2924,6 +2948,7 @@ guestfs___free_inspect_info (guestfs_h *g) for (i = 0; i < g->nr_fses; ++i) { free (g->fses[i].device); free (g->fses[i].product_name); + free (g->fses[i].product_variant); free (g->fses[i].arch); free (g->fses[i].hostname); free (g->fses[i].windows_systemroot); -- cgit