libkiconv: make libkiconv work when statically linked.
authorAlexander Polakov <polachok@gmail.com>
Thu, 3 Sep 2009 22:18:30 +0000 (02:18 +0400)
committerAlexander Polakov <polachok@gmail.com>
Sat, 5 Sep 2009 09:50:41 +0000 (13:50 +0400)
lib/libkiconv/quirks.c
lib/libkiconv/test.c [deleted file]
lib/libkiconv/xlat16_iconv.c
lib/libkiconv/xlat16_sysctl.c

index 95cc807..01d0b5c 100644 (file)
  */
 
 /*
- * kiconv(3) requires shared linked, and reduce module size
- * when statically linked.
- */
-
-#ifdef PIC
-
-/*
  * Why do we need quirks?
  * Since each vendors has their own Unicode mapping rules,
  * we need some quirks until iconv(3) supports them.
@@ -180,13 +173,3 @@ quirk_unix2vendor(uint16_t c, struct quirk_replace_list *replace_list, size_t nu
 
        return (c);
 }
-
-#else /* statically linked */
-
-const char *
-kiconv_quirkcs(const char* base, int vendor)
-{
-       return (base);
-}
-
-#endif /* PIC */
diff --git a/lib/libkiconv/test.c b/lib/libkiconv/test.c
deleted file mode 100644 (file)
index 1e3eb30..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-#include <sys/iconv.h>
-int main() {
-       int error = 0;
-       error = kiconv_add_xlat16_cspairs(ENCODING_UNICODE, "UTF-8");
-        if(error)
-               printf("fail\n");
-       error = kiconv_add_xlat16_cspairs("KOI8-R", "UTF-8");
-        if(error)
-               printf("fail\n");
-       return error;
-}
index a550bc9..7641697 100644 (file)
@@ -30,8 +30,6 @@
  * kiconv(3) requires shared linked, and reduce module size
  * when statically linked.
  */
-#ifdef PIC
-
 #include <sys/types.h>
 #include <sys/iconv.h>
 #include <sys/sysctl.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#include <iconv.h>
 
 #include "quirks.h"
 
-typedef void *iconv_t;
-
 struct xlat16_table {
        uint32_t *      idx[0x200];
        void *          data;
@@ -96,7 +93,6 @@ kiconv_add_xlat16_cspair(const char *tocode, const char *fromcode, int flag)
 
        if ((idxsize + xt.size) > ICONV_CSMAXDATALEN) {
                errno = E2BIG;
-fprintf(stderr, "%d > %d (%d)\n", (idxsize+xt.size), ICONV_CSMAXDATALEN, sizeof(u_int32_t));
                return (-1);
        }
 
@@ -256,7 +252,7 @@ static int
 my_iconv_init(void)
 {
        void *iconv_lib;
-
+#ifdef __PIC__
        iconv_lib = dlopen("libc.so", RTLD_LAZY | RTLD_GLOBAL);
        if (iconv_lib == NULL) {
                warn("Unable to load iconv library: %s\n", dlerror());
@@ -266,6 +262,11 @@ my_iconv_init(void)
        my_iconv_open = dlsym(iconv_lib, "iconv_open");
        my_iconv = dlsym(iconv_lib, "iconv");
        my_iconv_close = dlsym(iconv_lib, "iconv_close");
+#else
+       my_iconv_open = iconv_open;
+       my_iconv = iconv;
+       my_iconv_close = iconv_close;
+#endif
 
        return (0);
 }
@@ -372,23 +373,3 @@ my_iconv_char(iconv_t cd, const u_char **ibuf, size_t * ilen, u_char **obuf,
 
        return (ret);
 }
-
-#else /* statically linked */
-
-#include <errno.h>
-
-int
-kiconv_add_xlat16_cspair(const char *tocode, const char *fromcode, int flag)
-{
-       errno = EINVAL;
-       return (-1);
-}
-
-int
-kiconv_add_xlat16_cspairs(const char *tocode, const char *fromcode)
-{
-       errno = EINVAL;
-       return (-1);
-}
-
-#endif /* PIC */
index 8083619..83e9dc5 100644 (file)
@@ -37,8 +37,6 @@
  * when statically linked.
  */
 
-#ifdef PIC
-
 #include <sys/types.h>
 #include <sys/iconv.h>
 #include <sys/sysctl.h>
@@ -67,15 +65,3 @@ kiconv_add_xlat16_table(const char *to, const char *from, const void *data, int
                return (errno);
        return (0);
 }
-
-#else /* statically linked */
-
-#include <errno.h>
-
-int
-kiconv_add_xlat16_table(const char *to, const char *from, const void *data, int datalen)
-{
-       return (EINVAL);
-}
-
-#endif /* PIC */