]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
agetty: support /usr/lib/os-release too
authorKarel Zak <kzak@redhat.com>
Thu, 5 Mar 2015 11:25:28 +0000 (12:25 +0100)
committerKarel Zak <kzak@redhat.com>
Thu, 5 Mar 2015 11:25:28 +0000 (12:25 +0100)
http://www.freedesktop.org/software/systemd/man/os-release.html

The file /etc/os-release takes precedence over /usr/lib/os-release.
Applications should check for the former, and exclusively use its data
if it exists, and only fall back to /usr/lib/os-release if it is
missing.

Reported-by: Dimitri John Ledkov <dimitri.j.ledkov@intel.com>
Signed-off-by: Karel Zak <kzak@redhat.com>
include/pathnames.h
term-utils/agetty.8
term-utils/agetty.c

index 37f010997b05eef0958ae937a54a2c28fa56887f..e68ac7df2d17f1052c76fa94613e147c591c93ea 100644 (file)
@@ -79,7 +79,9 @@
 
 /* used in term-utils/agetty.c */
 #define _PATH_ISSUE            "/etc/issue"
-#define _PATH_OS_RELEASE       "/etc/os-release"
+#define _PATH_OS_RELEASE_ETC   "/etc/os-release"
+#define _PATH_OS_RELEASE_USR   "/usr/lib/os-release"
+
 #define _PATH_NUMLOCK_ON       _PATH_LOCALSTATEDIR "/numlock-on"
 
 #define _PATH_LOGINDEFS                "/etc/login.defs"
index c4b7f13e2eb144ad4673d874a07403484108d626..66f1a038959f2e0167c46ae8627d3258b49ab655 100644 (file)
@@ -338,8 +338,9 @@ Insert the system name, the name of the operating system. Same as `uname \-s'.
 See also \\S escape code.
 .TP
 S or S{VARIABLE}
-Insert the VARIABLE data from \fI/etc/os-release\fP.  If the VARIABLE argument
-is not specified then use PRETTY_NAME from the file or the system name (see \\s).
+Insert the VARIABLE data from \fI/etc/os-release\fP, if the file does not exist
+then fallback to \fI/usr/lib/os-release\fP.  If the VARIABLE argument is not
+specified then use PRETTY_NAME from the file or the system name (see \\s).
 This escape code allows to keep \fI/etc/issue\fP distribution and release
 independent.  Note that \\S{ANSI_COLOR} is converted to the real terminal
 escape sequence.
@@ -401,7 +402,7 @@ the system status file.
 .B /etc/issue
 printed before the login prompt.
 .TP
-.B /etc/os-release
+.B /etc/os-release /usr/lib/os-release
 operating system identification data.
 .TP
 .B /dev/console
index 7c97faffa3ee6008478fb700add2bdb30cb6868f..0d7bd1db72bb8ee59e76116975a6b5b824d15b03 100644 (file)
@@ -1444,10 +1444,13 @@ static char *read_os_release(struct options *op, const char *varname)
 
        /* read the file only once */
        if (!op->osrelease) {
-               fd = open(_PATH_OS_RELEASE, O_RDONLY);
+               fd = open(_PATH_OS_RELEASE_ETC, O_RDONLY);
                if (fd == -1) {
-                       log_warn(_("cannot open %s: %m"), _PATH_OS_RELEASE);
-                       return NULL;
+                       fd = open(_PATH_OS_RELEASE_USR, O_RDONLY);
+                       if (fd == -1) {
+                               log_warn(_("cannot open os-release file"));
+                               return NULL;
+                       }
                }
 
                if (fstat(fd, &st) < 0 || st.st_size > 4 * 1024 * 1024)