From 5ae4d543cb9b45ad6c6b82b78da1d6abc2291cdb Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 13 Jun 2014 19:45:52 +0200 Subject: os-release: define /usr/lib/os-release as fallback for /etc/os-release The file should have been in /usr/lib/ in the first place, since it describes the OS container in /usr (and not the configuration in /etc), hence, let's support os-release files in /usr/lib as fallback if no version in /etc exists, following the usual override logic. A prior commit already enabled tmpfiles to create /etc/os-release as a symlink to /usr/lib/os-release should it be missing, thus providing nice compatibility with applications only checking in /etc. While it's probably a good idea if all apps check both locations via a fallback logic, it is only necessary in the early boot process, as long as the /etc/os-release symlink has not been restored, in case we boot with an empty /etc. --- src/shared/path-util.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'src/shared') diff --git a/src/shared/path-util.c b/src/shared/path-util.c index 5863429c31..efe464d704 100644 --- a/src/shared/path-util.c +++ b/src/shared/path-util.c @@ -526,12 +526,18 @@ int path_is_os_tree(const char *path) { char *p; int r; - /* We use /etc/os-release as flag file if something is an OS */ + /* We use /usr/lib/os-release as flag file if something is an OS */ + p = strappenda(path, "/usr/lib/os-release"); + r = access(p, F_OK); + + if (r >= 0) + return 1; + /* Also check for the old location in /etc, just in case. */ p = strappenda(path, "/etc/os-release"); r = access(p, F_OK); - return r < 0 ? 0 : 1; + return r >= 0; } int find_binary(const char *name, char **filename) { -- cgit v1.2.3-54-g00ecf