diff options
author | Matt Wilson <msw@redhat.com> | 2002-12-11 23:54:47 +0000 |
---|---|---|
committer | Matt Wilson <msw@redhat.com> | 2002-12-11 23:54:47 +0000 |
commit | 8c307da285ad1cc5b3e900dc2f0ae11faf1fa6ac (patch) | |
tree | 633ca11b3cb87503512a77470a1284f4512afde3 /loader2 | |
parent | 1c491c9c515c1790e505a4100c46ab46bcc5aefc (diff) | |
download | anaconda-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/Makefile | 16 | ||||
-rw-r--r-- | loader2/dietstubs.c | 27 | ||||
-rw-r--r-- | loader2/init.c | 2 | ||||
-rw-r--r-- | loader2/lang.c | 5 | ||||
-rwxr-xr-x | loader2/simplemot | 4 |
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; |