git.annexia.org
/
libguestfs.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
inspector: Add detection of Slackware.
[libguestfs.git]
/
src
/
inspect.c
diff --git
a/src/inspect.c
b/src/inspect.c
index
1129a53
..
3a8ede6
100644
(file)
--- a/
src/inspect.c
+++ b/
src/inspect.c
@@
-645,6
+645,15
@@
check_linux_root (guestfs_h *g, struct inspect_fs *fs)
if (parse_major_minor (g, fs) == -1)
return -1;
}
if (parse_major_minor (g, fs) == -1)
return -1;
}
+ else if (guestfs_exists (g, "/etc/slackware-version") > 0) {
+ fs->distro = OS_DISTRO_SLACKWARE;
+
+ if (parse_release_file (g, fs, "/etc/slackware-version") == -1)
+ return -1;
+
+ if (parse_major_minor (g, fs) == -1)
+ return -1;
+ }
skip_release_checks:;
skip_release_checks:;
@@
-1558,6
+1567,14
@@
check_windows_software_registry (guestfs_h *g, struct inspect_fs *fs)
free (version);
}
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);
}
free (key);
}
@@
-1776,6
+1793,7
@@
check_package_format (guestfs_h *g, struct inspect_fs *fs)
fs->package_format = OS_PACKAGE_FORMAT_PISI;
break;
fs->package_format = OS_PACKAGE_FORMAT_PISI;
break;
+ case OS_DISTRO_SLACKWARE:
case OS_DISTRO_WINDOWS:
case OS_DISTRO_UNKNOWN:
default:
case OS_DISTRO_WINDOWS:
case OS_DISTRO_UNKNOWN:
default:
@@
-1820,6
+1838,7
@@
check_package_management (guestfs_h *g, struct inspect_fs *fs)
fs->package_management = OS_PACKAGE_MANAGEMENT_URPMI;
break;
fs->package_management = OS_PACKAGE_MANAGEMENT_URPMI;
break;
+ case OS_DISTRO_SLACKWARE:
case OS_DISTRO_WINDOWS:
case OS_DISTRO_UNKNOWN:
default:
case OS_DISTRO_WINDOWS:
case OS_DISTRO_UNKNOWN:
default:
@@
-1927,6
+1946,7
@@
guestfs__inspect_get_distro (guestfs_h *g, const char *root)
case OS_DISTRO_PARDUS: ret = safe_strdup (g, "pardus"); break;
case OS_DISTRO_REDHAT_BASED: ret = safe_strdup (g, "redhat-based"); break;
case OS_DISTRO_RHEL: ret = safe_strdup (g, "rhel"); break;
case OS_DISTRO_PARDUS: ret = safe_strdup (g, "pardus"); break;
case OS_DISTRO_REDHAT_BASED: ret = safe_strdup (g, "redhat-based"); break;
case OS_DISTRO_RHEL: ret = safe_strdup (g, "rhel"); break;
+ case OS_DISTRO_SLACKWARE: ret = safe_strdup (g, "slackware"); break;
case OS_DISTRO_WINDOWS: ret = safe_strdup (g, "windows"); break;
case OS_DISTRO_UBUNTU: ret = safe_strdup (g, "ubuntu"); break;
case OS_DISTRO_UNKNOWN: default: ret = safe_strdup (g, "unknown"); break;
case OS_DISTRO_WINDOWS: ret = safe_strdup (g, "windows"); break;
case OS_DISTRO_UBUNTU: ret = safe_strdup (g, "ubuntu"); break;
case OS_DISTRO_UNKNOWN: default: ret = safe_strdup (g, "unknown"); break;
@@
-1966,6
+1986,16
@@
guestfs__inspect_get_product_name (guestfs_h *g, const char *root)
}
char *
}
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)
{
struct inspect_fs *fs = search_for_root (g, root);
guestfs__inspect_get_windows_systemroot (guestfs_h *g, const char *root)
{
struct inspect_fs *fs = search_for_root (g, root);
@@
-2850,6
+2880,12
@@
guestfs__inspect_get_product_name (guestfs_h *g, const char *root)
}
char *
}
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)
{
NOT_IMPL(NULL);
guestfs__inspect_get_windows_systemroot (guestfs_h *g, const char *root)
{
NOT_IMPL(NULL);
@@
-2924,6
+2960,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);
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);
free (g->fses[i].arch);
free (g->fses[i].hostname);
free (g->fses[i].windows_systemroot);