summaryrefslogtreecommitdiffstats
path: root/loader2
diff options
context:
space:
mode:
authorMatt Wilson <msw@redhat.com>2002-12-11 23:54:47 +0000
committerMatt Wilson <msw@redhat.com>2002-12-11 23:54:47 +0000
commit8c307da285ad1cc5b3e900dc2f0ae11faf1fa6ac (patch)
tree633ca11b3cb87503512a77470a1284f4512afde3 /loader2
parent1c491c9c515c1790e505a4100c46ab46bcc5aefc (diff)
downloadanaconda-8c307da285ad1cc5b3e900dc2f0ae11faf1fa6ac.tar.gz
anaconda-8c307da285ad1cc5b3e900dc2f0ae11faf1fa6ac.tar.xz
anaconda-8c307da285ad1cc5b3e900dc2f0ae11faf1fa6ac.zip
first pass at using unicode in text mode
Diffstat (limited to 'loader2')
-rw-r--r--loader2/Makefile16
-rw-r--r--loader2/dietstubs.c27
-rw-r--r--loader2/init.c2
-rw-r--r--loader2/lang.c5
-rwxr-xr-xloader2/simplemot4
5 files changed, 43 insertions, 11 deletions
diff --git a/loader2/Makefile b/loader2/Makefile
index 4f9803faf..abc4dc26c 100644
--- a/loader2/Makefile
+++ b/loader2/Makefile
@@ -16,9 +16,10 @@ else
TARGET=depend $(PROGS)
endif
-# JKFIXME: switch to use system libslang and libnewt with msw's wcwidth()
-SLANGLIB = ../minislang/libslang.a
-NEWTLIB = ../mininewt/libnewt.a
+SLANGLIB = -lslang
+NEWTLIB = -lnewt
+BTERMLIB = -lbterm -lbogl
+WLITELIB = -lwlite
ISYSLIB = ../isys/libisys.a
GUNZIP = -lz
MODULELINKAGE :=-lmodutils -lmodutilutil -lmodutilobj
@@ -49,9 +50,8 @@ CFLAGS += -DGZLIB=1
DIET=diet
REALCC=gcc
CC=$(DIET) $(REALCC)
-# JKFIXME: this also goes away when we go to system {newt,slang}
-SLANGLIB = ../minislang/libslang-diet.a
-NEWTLIB = ../mininewt/libnewt-diet.a
+BTERMLIB = -lbtermdiet -lbogldiet
+WLITELIB = -lwlite
ISYSLIB = ../isys/libisys-diet.a
GUNZIP = ../isys/gzlib/libgunzip-diet.a
endif
@@ -75,7 +75,7 @@ loader.tr: $(TR) ../lang-table
(cd tr; ls $(TRFILES) | cpio --quiet -Hcrc -o |gzip -9) > $@
tr/%.tr: ../po/%.po loader.po
- msgmerge $< loader.po | ./simplemot > $@
+ msgmerge $< loader.po | msgconv -t utf-8 | ./simplemot > $@
loader.po: $(wildcard *.c)
xgettext --default-domain=loader --add-comments \
@@ -106,7 +106,7 @@ loader: loader.o $(OBJS) $(NETOBJS)
$(CC) -g $(STATIC) -o $@ $^ -lpopt \
$(HWLIBS) $(ISYSLIB) \
$(MODULELINKAGE) $(GUNZIP) \
- -lpump $(NEWTLIB) $(SLANGLIB) $(KONOBJS)
+ -lpump $(NEWTLIB) $(SLANGLIB) $(BTERMLIB) $(WLITELIB)
clean:
rm -f *.o *~ .depend init ctype.c mkctype \
diff --git a/loader2/dietstubs.c b/loader2/dietstubs.c
index dab88965f..90b2af092 100644
--- a/loader2/dietstubs.c
+++ b/loader2/dietstubs.c
@@ -6,6 +6,10 @@
#include <ctype.h>
#include <stdarg.h>
+#define WLITE_REDEF_STDC 0
+#include <wlite_wchar.h>
+#include <wlite_wctype.h>
+
struct glibc_stat {
long long st_dev;
unsigned short int __pad1;
@@ -164,3 +168,26 @@ void * __rawmemchr (void* s, int c) {
char * dcgettext (const char *domainname, const char *msgid, int category) {
return msgid;
}
+
+int wcwidth (wchar_t c) {
+ return wlite_wcwidth(c);
+}
+
+size_t mbrtowc (wchar_t *pwc, const char *s, size_t n, void *ps) {
+ return wlite_mbrtowc (pwc, s, n, ps);
+}
+
+int iswspace (wchar_t c) {
+ return wlite_iswctype((c), wlite_space_);
+}
+
+size_t wcrtomb(char *s, wchar_t wc, void *ps) {
+ return wlite_wcrtomb (s, wc, ps);
+}
+
+/* lie to slang to trick it into using unicode chars for linedrawing */
+char *setlocale (int category, const char *locale) {
+ if (locale == NULL || *locale == '\0')
+ return "en_US.UTF-8";
+ return 0;
+}
diff --git a/loader2/init.c b/loader2/init.c
index d31e9742f..4566e32ec 100644
--- a/loader2/init.c
+++ b/loader2/init.c
@@ -583,6 +583,8 @@ int main(int argc, char **argv) {
/* turn off screen blanking */
printstr("\033[9;0]");
printstr("\033[8]");
+ /* enable UTF-8 console */
+ printstr("\033%G");
} else {
printstr("(running in test mode).\n");
}
diff --git a/loader2/lang.c b/loader2/lang.c
index 3291f69dc..9c78bca9a 100644
--- a/loader2/lang.c
+++ b/loader2/lang.c
@@ -75,7 +75,6 @@ char * translateString(char * str) {
}
key.hash = (sum << 16) | ((xor & 0xFF) << 8) | (len & 0xFF);
-
match = bsearch(&key, strings, numStrings, sizeof(*strings), aStringCmp);
if (!match)
return str;
@@ -213,7 +212,7 @@ void setLanguage (char * key, int flags) {
setenv("LINGUAS", languages[i].lc_all, 1);
loadLanguage (NULL, flags);
if (languages[i].map)
- isysLoadFont(languages[i].map);
+ isysLoadFont();
break;
}
}
@@ -315,7 +314,7 @@ int chooseLanguage(char ** lang, int flags) {
}
if (languages[choice].map)
- isysLoadFont(languages[choice].map);
+ isysLoadFont();
buf = sdupprintf(_(topLineWelcome), PRODUCTNAME);
diff --git a/loader2/simplemot b/loader2/simplemot
index 467020be0..abf09694d 100755
--- a/loader2/simplemot
+++ b/loader2/simplemot
@@ -3,6 +3,10 @@
$inone = 0;
$intran = 0;
$total = 0;
+
+binmode(STDIN, ":raw");
+binmode(STDOUT, ":raw");
+
while (<>) {
if (!$inone && /^msgid/) {
chop;