*/
/*
- * 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.
return (c);
}
-
-#else /* statically linked */
-
-const char *
-kiconv_quirkcs(const char* base, int vendor)
-{
- return (base);
-}
-
-#endif /* PIC */
+++ /dev/null
-#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;
-}
* 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;
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);
}
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());
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);
}
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 */
* when statically linked.
*/
-#ifdef PIC
-
#include <sys/types.h>
#include <sys/iconv.h>
#include <sys/sysctl.h>
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 */