SHA256
1
0
forked from pool/systemd
Dr. Werner Fink 2015-11-12 12:24:39 +00:00 committed by Git OBS Bridge
parent 16910abbfe
commit 87a304976b
5 changed files with 68 additions and 21 deletions

View File

@ -11,42 +11,55 @@ Index: systemd-221/src/core/locale-setup.c
===================================================================
--- systemd-221.orig/src/core/locale-setup.c
+++ systemd-221/src/core/locale-setup.c
@@ -34,6 +34,11 @@ int locale_setup(char ***environment) {
@@ -34,6 +34,10 @@ int locale_setup(char ***environment) {
char **add;
char *variables[_VARIABLE_LC_MAX] = {};
int r = 0, i;
+#ifdef HAVE_SYSV_COMPAT
+ char _cleanup_free_ *root_uses_lang;
+
+ zero(root_uses_lang);
+ char _cleanup_free_ *rc_lang = NULL, *rc_lc_ctype = NULL;
+ char _cleanup_free_ *root_uses_lang = NULL;
+#endif
if (detect_container(NULL) <= 0) {
r = parse_env_file("/proc/cmdline", WHITESPACE,
@@ -80,6 +85,27 @@ int locale_setup(char ***environment) {
@@ -80,6 +85,41 @@ int locale_setup(char ***environment) {
if (r < 0 && r != -ENOENT)
log_warning_errno(r, "Failed to read /etc/locale.conf: %m");
}
+#ifdef HAVE_SYSV_COMPAT
+ if (r <= 0 &&
+ (r = parse_env_file("/etc/sysconfig/language", NEWLINE,
+ "ROOT_USES_LANG", &root_uses_lang,
+ "RC_LANG", &variables[VARIABLE_LANG],
+ NULL)) < 0) {
+ if (r != -ENOENT)
+ log_warning("Failed to read /etc/sysconfig/language: %s", strerror(-r));
+ r = parse_env_file("/etc/sysconfig/language", NEWLINE,
+ "RC_LANG", &rc_lang,
+ "RC_LC_CTYPE", &rc_lc_ctype,
+ "ROOT_USES_LANG", &root_uses_lang,
+ NULL);
+
+ } else {
+ if (!root_uses_lang || (root_uses_lang && !strcaseeq(root_uses_lang,"yes"))) {
+ if (root_uses_lang && strcaseeq(root_uses_lang,"ctype"))
+ variables[VARIABLE_LC_CTYPE]=variables[VARIABLE_LANG];
+ else
+ free(variables[VARIABLE_LANG]);
+ if (r < 0 && r != -ENOENT)
+ log_warning("Failed to read /etc/sysconfig/language: %s", strerror(-r));
+
+ variables[VARIABLE_LANG]=strdup("POSIX");
+ /*
+ * Use the values of the interactive locale configuration in /etc/sysconfig/language
+ * as fallback if /etc/locale.conf does not exist and no locale was specified on the
+ * kernel's command line. The special case ROOT_USES_LANG=ctype allows to set LC_CTYPE
+ * even if LANG for root is set to e.g. POSIX. But do this only if no LC_CTYPE has been
+ * set in /etc/locale.conf and on the kernel's command line.
+ */
+ if (root_uses_lang) {
+ if (strcaseeq(root_uses_lang, "yes") && !variables[VARIABLE_LANG]) {
+ variables[VARIABLE_LANG] = rc_lang;
+ rc_lang = NULL;
+ }
+ if (strcaseeq(root_uses_lang, "ctype") && !variables[VARIABLE_LC_CTYPE]) {
+ if (variables[VARIABLE_LANG])
+ variables[VARIABLE_LC_CTYPE] = strdup(variables[VARIABLE_LANG]);
+ else if (rc_lc_ctype && *rc_lc_ctype) {
+ variables[VARIABLE_LC_CTYPE] = rc_lc_ctype;
+ rc_lc_ctype = NULL;
+ } else if (rc_lang && *rc_lang) {
+ variables[VARIABLE_LC_CTYPE] = rc_lang;
+ rc_lang = NULL;
+ }
+ }
+ }
+ }
+
+#endif
add = NULL;

View File

@ -1,3 +1,10 @@
-------------------------------------------------------------------
Thu Nov 12 09:56:36 UTC 2015 - werner@suse.de
- Modify patch handle-root_uses_lang-value-in-etc-sysconfig-language.patch
to handle locale at boot time well (boo#927250)
- Be able to use build service environments several times
-------------------------------------------------------------------
Tue Nov 10 18:06:43 UTC 2015 - schwab@suse.de

View File

@ -658,6 +658,16 @@ cflags ()
esac
set +o noclobber
}
#
# Be sure that fresh build libudev is linked as otherwise no errors are found
#
sed -ri '/^systemd_cryptsetup_CFLAGS/,/^systemd_cryptsetup_LDADD/{ /^$/a\
systemd_cryptsetup_LDFLAGS = \\\
$(AM_LDFLAGS) \\\
-Wl,-rpath-link=$(top_srcdir)/.libs\
}' Makefile.am
sh autogen.sh
export V=e

View File

@ -1,3 +1,10 @@
-------------------------------------------------------------------
Thu Nov 12 09:56:36 UTC 2015 - werner@suse.de
- Modify patch handle-root_uses_lang-value-in-etc-sysconfig-language.patch
to handle locale at boot time well (boo#927250)
- Be able to use build service environments several times
-------------------------------------------------------------------
Tue Nov 10 18:06:43 UTC 2015 - schwab@suse.de

View File

@ -653,6 +653,16 @@ cflags ()
esac
set +o noclobber
}
#
# Be sure that fresh build libudev is linked as otherwise no errors are found
#
sed -ri '/^systemd_cryptsetup_CFLAGS/,/^systemd_cryptsetup_LDADD/{ /^$/a\
systemd_cryptsetup_LDFLAGS = \\\
$(AM_LDFLAGS) \\\
-Wl,-rpath-link=$(top_srcdir)/.libs\
}' Makefile.am
sh autogen.sh
export V=e