diff --git a/src/librc/librc-depend.c b/src/librc/librc-depend.c index c9c06ad1..14cf2979 100644 --- a/src/librc/librc-depend.c +++ b/src/librc/librc-depend.c @@ -753,7 +753,7 @@ rc_deptree_update(void) char *depend, *depends, *service, *type, *nosys, *onosys; size_t i, k, l; bool retval = true; - const char *sys = rc_sys(); + const char *sys = NULL; struct utsname uts; /* Some init scripts need RC_LIBEXECDIR to source stuff @@ -860,6 +860,9 @@ rc_deptree_update(void) /* Phase 2 - if we're a special system, remove services that don't * work for them. This doesn't stop them from being run directly. */ + sys = detect_container(); + if (!sys) + sys = detect_vm(); if (sys) { len = strlen(sys); nosys = xmalloc(len + 2); diff --git a/src/rc/_usage.c b/src/rc/_usage.c index 2ab0fa6d..a6bad4db 100644 --- a/src/rc/_usage.c +++ b/src/rc/_usage.c @@ -56,7 +56,10 @@ show_version(void) const char *systype = NULL; printf("%s (OpenRC", applet); - if ((systype = rc_sys())) + systype = detect_container(); + if (!systype) + systype = detect_vm(); + if (systype) printf(" [%s]", systype); printf(") %s", VERSION); #ifdef BRANDING diff --git a/src/rc/rc-misc.c b/src/rc/rc-misc.c index 1e2af0ab..263c0eda 100644 --- a/src/rc/rc-misc.c +++ b/src/rc/rc-misc.c @@ -139,7 +139,7 @@ env_config(void) char *np; char *npp; char *tok; - const char *sys = rc_sys(); + const char *sys = NULL; char buffer[PATH_MAX]; /* Ensure our PATH is prefixed with the system locations first @@ -190,7 +190,9 @@ env_config(void) } else setenv("RC_DEFAULTLEVEL", RC_LEVEL_DEFAULT, 1); - if (sys) + sys = detect_container(); + if (!sys) + sys = detect_vm(); setenv("RC_SYS", sys, 1); #ifdef PREFIX diff --git a/src/rc/rc.c b/src/rc/rc.c index 8f69333c..ddc3c789 100644 --- a/src/rc/rc.c +++ b/src/rc/rc.c @@ -274,7 +274,11 @@ open_shell(void) struct passwd *pw; #ifdef __linux__ - const char *sys = rc_sys(); + const char *sys = NULL; + + sys = detect_container(); + if (!sys) + sys = detect_vm(); /* VSERVER and OPENVZ systems cannot really drop to shells */ if (sys && @@ -480,7 +484,10 @@ do_sysinit() uts.machine); #endif - if ((sys = rc_sys())) + sys = detect_container(); + if (!sys) + sys = detect_vm(); + if (sys) printf(" [%s]", sys); printf("%s\n\n", ecolor(ECOLOR_NORMAL)); @@ -495,7 +502,10 @@ do_sysinit() /* init may have mounted /proc so we can now detect or real * sys */ - if ((sys = rc_sys())) + sys = detect_container(); + if (!sys) + sys = detect_vm(); + if (sys) setenv("RC_SYS", sys, 1); } @@ -846,7 +856,9 @@ main(int argc, char **argv) eerrorx("%s: %s", applet, strerror(errno)); /* NOTREACHED */ case 'S': - systype = rc_sys(); + systype = detect_container(); + if (!systype) + systype = detect_vm(); if (systype) printf("%s\n", systype); exit(EXIT_SUCCESS);