chiark / gitweb /
util: rework in_initrd() logic
[elogind.git] / src / shared / util.c
index 5acddd3e0f9250c61a6bfc0a5be4d19c3fca5a53..4b841491aa2a73e4d9ea79bca62d31ce0bc44bae 100644 (file)
@@ -5654,16 +5654,10 @@ bool is_valid_documentation_url(const char *url) {
 }
 
 bool in_initrd(void) {
-        static bool checked=false;
-        static bool is_in_initrd=false;
-
-        if (!checked) {
-                struct stat sb;
-                if (stat("/", &sb) == 0) {
-                        is_in_initrd = (sb.st_dev == 1);
-                        checked = true;
-                }
-        }
+        static int saved = -1;
+
+        if (saved < 0)
+                saved = access("/etc/initrd-release", F_OK) >= 0;
 
-        return is_in_initrd;
+        return saved;
 }