summaryrefslogtreecommitdiffstats
path: root/stubs
diff options
context:
space:
mode:
authorChris Lumens <clumens@redhat.com>2006-01-24 18:19:22 +0000
committerChris Lumens <clumens@redhat.com>2006-01-24 18:19:22 +0000
commite9a7f43a63f67c3b9cb1733eae6bfa220a40da5d (patch)
tree159668cf6b82593dd41dfed47d62bb1c85396a62 /stubs
parent2c9cc4130c021558ac3165d1b5a922fa1e3e491c (diff)
downloadanaconda-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/Makefile8
-rw-r--r--stubs/unicode-lite.c71
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;