From: Alexander Polakov Date: Thu, 3 Sep 2009 22:18:30 +0000 (+0400) Subject: libkiconv: make libkiconv work when statically linked. X-Git-Tag: v2.4.0~70^2~8 X-Git-Url: http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff_plain/1d9ef93efb5672a538760ef5127772b9becc1cb4 libkiconv: make libkiconv work when statically linked. --- diff --git a/lib/libkiconv/quirks.c b/lib/libkiconv/quirks.c index 95cc807..01d0b5c 100644 --- a/lib/libkiconv/quirks.c +++ b/lib/libkiconv/quirks.c @@ -27,13 +27,6 @@ */ /* - * 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 index 1e3eb30..0000000 --- a/lib/libkiconv/test.c +++ /dev/null @@ -1,11 +0,0 @@ -#include -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; -} diff --git a/lib/libkiconv/xlat16_iconv.c b/lib/libkiconv/xlat16_iconv.c index a550bc9..7641697 100644 --- a/lib/libkiconv/xlat16_iconv.c +++ b/lib/libkiconv/xlat16_iconv.c @@ -30,8 +30,6 @@ * kiconv(3) requires shared linked, and reduce module size * when statically linked. */ -#ifdef PIC - #include #include #include @@ -43,11 +41,10 @@ #include #include #include +#include #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 - -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 */ diff --git a/lib/libkiconv/xlat16_sysctl.c b/lib/libkiconv/xlat16_sysctl.c index 8083619..83e9dc5 100644 --- a/lib/libkiconv/xlat16_sysctl.c +++ b/lib/libkiconv/xlat16_sysctl.c @@ -37,8 +37,6 @@ * when statically linked. */ -#ifdef PIC - #include #include #include @@ -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 - -int -kiconv_add_xlat16_table(const char *to, const char *from, const void *data, int datalen) -{ - return (EINVAL); -} - -#endif /* PIC */