diff options
author | Chris Lumens <clumens@redhat.com> | 2006-01-24 18:19:22 +0000 |
---|---|---|
committer | Chris Lumens <clumens@redhat.com> | 2006-01-24 18:19:22 +0000 |
commit | e9a7f43a63f67c3b9cb1733eae6bfa220a40da5d (patch) | |
tree | 159668cf6b82593dd41dfed47d62bb1c85396a62 /stubs | |
parent | 2c9cc4130c021558ac3165d1b5a922fa1e3e491c (diff) | |
download | anaconda-e9a7f43a63f67c3b9cb1733eae6bfa220a40da5d.tar.gz anaconda-e9a7f43a63f67c3b9cb1733eae6bfa220a40da5d.tar.xz anaconda-e9a7f43a63f67c3b9cb1733eae6bfa220a40da5d.zip |
Sync up libunicode-lite with wcstubs and build it as a static library to
link into the loader (#178386).
Diffstat (limited to 'stubs')
-rw-r--r-- | stubs/Makefile | 8 | ||||
-rw-r--r-- | stubs/unicode-lite.c | 71 |
2 files changed, 75 insertions, 4 deletions
diff --git a/stubs/Makefile b/stubs/Makefile index e424e6fac..65307d001 100644 --- a/stubs/Makefile +++ b/stubs/Makefile @@ -2,15 +2,19 @@ include ../Makefile.inc LIBUTF8 = libunicode-lite.so.1 +OBJECTS = unicode-lite.o + TARGETS= $(LIBUTF8) -all: $(TARGETS) +all: $(TARGETS) libunicode-lite.a $(LIBUTF8): unicode-lite.c gcc -fPIC -shared -o $@ $< -lwlite -D_FORTIFY_SOURCE=2 +libunicode-lite.a: libunicode-lite.a($(OBJECTS)) + clean: - rm -f *.so.* *.o + rm -f *.so.* *.o *.a install: mkdir -p $(DESTDIR)/$(RUNTIMEDIR) diff --git a/stubs/unicode-lite.c b/stubs/unicode-lite.c index 605395b8f..f0725e7f3 100644 --- a/stubs/unicode-lite.c +++ b/stubs/unicode-lite.c @@ -19,7 +19,7 @@ #define WLITE_REDEF_STDC 0 #include <wlite_wchar.h> #include <wlite_wctype.h> - +#include <pthread.h> int wcwidth (wchar_t c) { return wlite_wcwidth(c); @@ -37,9 +37,76 @@ size_t wcrtomb(char *s, wchar_t wc, void *ps) { return wlite_wcrtomb (s, wc, ps); } +const char * __dgettext(const char * domainname, const char * msgid) { + return msgid; +} + +const char * __dcgettext(const char * domainname, const char * msgid, + int category) { + return msgid; +} + +/* Define ALIASNAME as a strong alias for NAME. */ +# define strong_alias(name, aliasname) _strong_alias(name, aliasname) +# define _strong_alias(name, aliasname) \ + extern __typeof (name) aliasname __attribute__ ((alias (#name))); + +strong_alias (__dgettext, dgettext); +strong_alias (__dcgettext, dcgettext); + /* lie to slang to trick it into using unicode chars for linedrawing */ -char *setlocale (int category, const char *locale) { +char * setlocale (int category, const char *locale) { if (locale == NULL || *locale == '\0') return "en_US.UTF-8"; return 0; } + +/* lie to slang some more */ +char * nl_langinfo(int item) { + return NULL; +} + +# define __libc_freeres_fn_section \ + __attribute__ ((section ("__libc_freeres_fn"))) + +void __libc_freeres_fn_section ___nl_locale_subfreeres (void) {} +strong_alias (___nl_locale_subfreeres, _nl_locale_subfreeres); + +void libc_freeres_fn (void * free_mem) {} + +const char *const _nl_category_names[] = { + [LC_COLLATE] = "LC_COLLATE", + [LC_CTYPE] = "LC_CTYPE", + [LC_MONETARY] = "LC_MONETARY", + [LC_NUMERIC] = "LC_NUMERIC", + [LC_TIME] = "LC_TIME", + [LC_MESSAGES] = "LC_MESSAGES", + [LC_PAPER] = "LC_PAPER", + [LC_NAME] = "LC_NAME", + [LC_ADDRESS] = "LC_ADDRESS", + [LC_TELEPHONE] = "LC_TELEPHONE", + [LC_MEASUREMENT] = "LC_MEASUREMENT", + [LC_IDENTIFICATION] = "LC_IDENTIFCATION", + [LC_ALL] = "LC_ALL" +}; + +const size_t _nl_category_name_sizes[] = { + [LC_COLLATE] = sizeof("LC_COLLATE") - 1, + [LC_CTYPE] = sizeof("LC_CTYPE") -1, + [LC_MONETARY] = sizeof("LC_MONETARY") -1, + [LC_NUMERIC] = sizeof("LC_NUMERIC") -1, + [LC_TIME] = sizeof("LC_TIME") -1, + [LC_MESSAGES] = sizeof("LC_MESSAGES") -1, + [LC_PAPER] = sizeof("LC_PAPER") -1, + [LC_NAME] = sizeof("LC_NAME") -1, + [LC_ADDRESS] = sizeof("LC_ADDRESS") -1, + [LC_TELEPHONE] = sizeof("LC_TELEPHONE") -1, + [LC_MEASUREMENT] = sizeof("LC_MEASUREMENT") -1, + [LC_IDENTIFICATION] = sizeof("LC_IDENTIFCATION") -1, + [LC_ALL] = sizeof("LC_ALL") +}; + +/* avoid bringing in glibc's setlocale.o - we want to use our + fake setlocale() */ +typedef pthread_mutex_t __libc_lock_t; +__libc_lock_t __libc_setlocale_lock; |