[PATCH] Fix nl_langinfo binary compatibility
Jakub Jelinek
jakub@redhat.com
Mon Jul 17 06:11:00 GMT 2000
Hi!
nl_langinfo is not binary compatible with glibc 2.1.
The reason is that CODESET used to be 14 and now is 11. I've checked the
rest of the documented nl_langinfo arguments and they should be ok.
With this patch (and the two I've already sent) JDK finally runs.
2000-07-17 Jakub Jelinek <jakub@redhat.com>
* locale/nl_langinfo (__nl_langinfo): Renamed from nl_langinfo.
(__nl_old_langinfo): New.
* locale/Versions: Add nl_langinfo@@GLIBC_2.2.
--- libc/locale/nl_langinfo.c.jj Wed Mar 22 16:36:05 2000
+++ libc/locale/nl_langinfo.c Mon Jul 17 14:59:36 2000
@@ -20,14 +20,15 @@
#include <langinfo.h>
#include <errno.h>
#include <stddef.h>
+#include <shlib-compat.h>
#include "localeinfo.h"
+char *__nl_langinfo (nl_item);
/* Return a string with the data for locale-dependent parameter ITEM. */
char *
-nl_langinfo (item)
- nl_item item;
+__nl_langinfo (nl_item item)
{
int category = _NL_ITEM_CATEGORY (item);
unsigned int index = _NL_ITEM_INDEX (item);
@@ -46,3 +47,19 @@ nl_langinfo (item)
/* Return the string for the specified item. */
return (char *) data->values[index].string;
}
+
+versioned_symbol (libc, __nl_langinfo, nl_langinfo, GLIBC_2_2);
+#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_2)
+
+char *__nl_old_langinfo (nl_item);
+
+char *
+__nl_old_langinfo (nl_item item)
+{
+ if (item == _NL_ITEM (LC_CTYPE, 14))
+ item = CODESET;
+ return __nl_langinfo (item);
+}
+
+compat_symbol (libc, __nl_old_langinfo, nl_langinfo, GLIBC_2_0);
+#endif
--- libc/locale/Versions.jj Thu Jun 1 06:28:29 2000
+++ libc/locale/Versions Mon Jul 17 14:57:33 2000
@@ -30,5 +30,8 @@ libc {
GLIBC_2.2 {
# The data structure changed.
localeconv;
+
+ # CODESET has changed.
+ nl_langinfo;
}
}
Jakub
More information about the Libc-hacker
mailing list