summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Lumens <clumens@redhat.com>2005-12-19 21:54:57 +0000
committerChris Lumens <clumens@redhat.com>2005-12-19 21:54:57 +0000
commitaf50332151e5903701bf649f9f28617d71285c49 (patch)
treeed7e6eed4dc50e1a84881d075c93de9c05d8bf7c
parent618732f10547e62c6a99f49104ceb64bc3f02b22 (diff)
downloadanaconda-af50332151e5903701bf649f9f28617d71285c49.tar.gz
anaconda-af50332151e5903701bf649f9f28617d71285c49.tar.xz
anaconda-af50332151e5903701bf649f9f28617d71285c49.zip
Use loaderData instead of $LANG to determine which keyboard we should
default to in the list (#172266).
-rw-r--r--ChangeLog8
-rw-r--r--loader2/kbd.c9
-rw-r--r--loader2/kbd.h2
-rw-r--r--loader2/loader.c2
4 files changed, 16 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index 4be34011e..e6e1a39ce 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2005-12-19 Chris Lumens <clumens@redhat.com>
+
+ * kbd.c (chooseKeyboard): Use the selected language in loaderData
+ instead of in $LANG to determine default keyboard layout (#172266).
+ Change chooseKeyboard to take in loaderData instead.
+ * kbd.h: Likewise.
+ * loader.c (doLoaderMain): Likewise.
+
2005-12-19 Jeremy Katz <katzj@redhat.com>
* scripts/mk-images.x86_64 (SYSLINUX): Generate syslinux splash
diff --git a/loader2/kbd.c b/loader2/kbd.c
index bbf0f2cfd..f8de6c98b 100644
--- a/loader2/kbd.c
+++ b/loader2/kbd.c
@@ -31,7 +31,7 @@
#include "../isys/stubs.h"
#include "../isys/lang.h"
-int chooseKeyboard(char ** keymap, char ** kbdtypep, int flags) {
+int chooseKeyboard(struct loaderData_s * loaderData, char ** kbdtypep, int flags) {
int num = -1;
int rc;
gzFile f;
@@ -42,7 +42,7 @@ int chooseKeyboard(char ** keymap, char ** kbdtypep, int flags) {
char ** kbds;
char buf[16384]; /* I hope this is big enough */
int i;
- char * defkbd = keymap ? *keymap : NULL;
+ char * defkbd = loaderData->kbd ? loaderData->kbd : NULL;
char *lang;
#if defined(__s390__) || defined(__s390x__)
@@ -68,6 +68,9 @@ int chooseKeyboard(char ** keymap, char ** kbdtypep, int flags) {
numLanguages = getLangInfo(&languages, flags);
lang = getenv("LANG");
+ if (!lang)
+ lang = loaderData->lang;
+
if (!defkbd && lang) {
for (i = 0; i < numLanguages; i++) {
if (!strncmp(languages[i].lc_all, lang, 2)) {
@@ -153,7 +156,7 @@ int chooseKeyboard(char ** keymap, char ** kbdtypep, int flags) {
gunzip_close(f);
- if (keymap) *keymap = strdup(infoTable[num].name);
+ loaderData->kbd = strdup(infoTable[num].name);
#ifdef __sparc__
if (kbdtypep) *kbdtypep = (kbdtype == KBDTYPE_SUN) ? "sun" : "pc";
diff --git a/loader2/kbd.h b/loader2/kbd.h
index 90a4f88b1..d4cb70c44 100644
--- a/loader2/kbd.h
+++ b/loader2/kbd.h
@@ -1,7 +1,7 @@
#ifndef H_KBD
#define H_KBD
-int chooseKeyboard(char ** keymap, char ** kbdtypep, int flags);
+int chooseKeyboard(struct loaderData_s * loaderData, char ** kbdtypep, int flags);
void setKickstartKeyboard(struct loaderData_s * loaderData, int argc,
char ** argv, int * flagsPtr);
diff --git a/loader2/loader.c b/loader2/loader.c
index 439f35ce0..098f99f0c 100644
--- a/loader2/loader.c
+++ b/loader2/loader.c
@@ -836,7 +836,7 @@ static char *doLoaderMain(char * location,
} else {
/* JKFIXME: should handle kbdtype, too probably... but it
* just matters for sparc */
- rc = chooseKeyboard(&loaderData->kbd, &kbdtype, flags);
+ rc = chooseKeyboard(loaderData, &kbdtype, flags);
}
if (rc == LOADER_NOOP) {
if (dir == -1)