#include <errno.h>
#include <endian.h>
-#ifdef HAVE_PCRE
#include <pcre.h>
-#endif
#ifdef HAVE_HIVEX
#include <hivex.h>
#include "guestfs-internal-actions.h"
#include "guestfs_protocol.h"
-#if defined(HAVE_PCRE) && defined(HAVE_HIVEX)
+#if defined(HAVE_HIVEX)
/* Compile all the regular expressions once when the shared library is
* loaded. PCRE is thread safe so we're supposedly OK here if
static void check_package_format (guestfs_h *g, struct inspect_fs *fs);
static void check_package_management (guestfs_h *g, struct inspect_fs *fs);
static int extend_fses (guestfs_h *g);
-static int is_file_nocase (guestfs_h *g, const char *);
-static int is_dir_nocase (guestfs_h *g, const char *);
/* Find out if 'device' contains a filesystem. If it does, add
* another entry in g->fses.
guestfs_is_dir (g, "/run") > 0 &&
guestfs_is_dir (g, "/spool") > 0)
fs->content = FS_CONTENT_LINUX_VAR;
- /* Windows root?
- * Note that if a Windows guest has multiple disks and applications
- * are installed on those other disks, then those other disks will
- * contain "/Program Files" and "/System Volume Information". Those
- * would *not* be Windows root disks. (RHBZ#674130)
- */
- else if (is_file_nocase (g, "/AUTOEXEC.BAT") > 0 ||
- is_dir_nocase (g, "/WINDOWS") > 0 ||
- is_dir_nocase (g, "/WIN32") > 0 ||
- is_dir_nocase (g, "/WINNT") > 0 ||
- is_file_nocase (g, "/boot.ini") > 0 ||
- is_file_nocase (g, "/ntldr") > 0) {
+ /* Windows root? */
+ else if (guestfs___has_windows_systemroot (g) >= 0) {
fs->is_root = 1;
fs->content = FS_CONTENT_WINDOWS_ROOT;
fs->format = OS_FORMAT_INSTALLED;
return -1;
}
/* Windows volume with installed applications (but not root)? */
- else if (is_dir_nocase (g, "/System Volume Information") > 0 &&
- is_dir_nocase (g, "/Program Files") > 0)
+ else if (guestfs___is_dir_nocase (g, "/System Volume Information") > 0 &&
+ guestfs___is_dir_nocase (g, "/Program Files") > 0)
fs->content = FS_CONTENT_WINDOWS_VOLUME_WITH_APPS;
/* Windows volume (but not root)? */
- else if (is_dir_nocase (g, "/System Volume Information") > 0)
+ else if (guestfs___is_dir_nocase (g, "/System Volume Information") > 0)
fs->content = FS_CONTENT_WINDOWS_VOLUME;
/* Install CD/disk? Skip these checks if it's not a whole device
* (eg. CD) or the first partition (eg. bootable USB key).
return 0;
}
-static int
-is_file_nocase (guestfs_h *g, const char *path)
+int
+guestfs___is_file_nocase (guestfs_h *g, const char *path)
{
char *p;
int r;
return r > 0;
}
-static int
-is_dir_nocase (guestfs_h *g, const char *path)
+int
+guestfs___is_dir_nocase (guestfs_h *g, const char *path)
{
char *p;
int r;
case OS_DISTRO_REDHAT_BASED:
case OS_DISTRO_RHEL:
case OS_DISTRO_MANDRIVA:
+ case OS_DISTRO_CENTOS:
+ case OS_DISTRO_SCIENTIFIC_LINUX:
fs->package_format = OS_PACKAGE_FORMAT_RPM;
break;
break;
case OS_DISTRO_SLACKWARE:
+ case OS_DISTRO_TTYLINUX:
case OS_DISTRO_WINDOWS:
case OS_DISTRO_UNKNOWN:
default:
case OS_DISTRO_REDHAT_BASED:
case OS_DISTRO_RHEL:
+ case OS_DISTRO_CENTOS:
+ case OS_DISTRO_SCIENTIFIC_LINUX:
if (fs->major_version >= 5)
fs->package_management = OS_PACKAGE_MANAGEMENT_YUM;
else
break;
case OS_DISTRO_SLACKWARE:
+ case OS_DISTRO_TTYLINUX:
case OS_DISTRO_WINDOWS:
case OS_DISTRO_UNKNOWN:
default:
return 1;
}
-#endif /* defined(HAVE_PCRE) && defined(HAVE_HIVEX) */
+#endif /* defined(HAVE_HIVEX) */