diff options
author | Luo Jinghua <sunmoon1997@gmail.com> | 2010-01-10 23:06:51 +0800 |
---|---|---|
committer | Luo Jinghua <sunmoon1997@gmail.com> | 2010-01-10 23:06:51 +0800 |
commit | 83dccb88e122f298a943de694d1157b7d66f2f7a (patch) | |
tree | 28860909ad515efdf0ea26fef7d9cff9412c76bf | |
parent | fc8948f86ed922087e093cba96e9ddd1bdaa1eeb (diff) |
define iconv symbols if asked
-rw-r--r-- | iconv.c | 43 |
1 files changed, 36 insertions, 7 deletions
@@ -1,9 +1,11 @@ #include "iconv.h" #include "uniconv.h" +#include "uniconvint.h" #include <errno.h> -iconv_t uc_iconv_open(const char *to, const char *from) +iconv_t +uc_iconv_open(const char *to, const char *from) { uniconv_t *uc = uniconv_open(to, from); if (!uc) @@ -11,10 +13,11 @@ iconv_t uc_iconv_open(const char *to, const char *from) return uc; } -size_t uc_iconv (iconv_t cd, char **inbuf, - size_t *inbytesleft, - char **outbuf, - size_t *outbytesleft) +size_t +uc_iconv (iconv_t cd, char **inbuf, + size_t *inbytesleft, + char **outbuf, + size_t *outbytesleft) { int ret; @@ -42,7 +45,8 @@ size_t uc_iconv (iconv_t cd, char **inbuf, return ret; } -int uc_iconv_close (iconv_t cd) +int +uc_iconv_close (iconv_t cd) { if (cd == (iconv_t)-1 || !cd) { errno = EBADF; @@ -53,7 +57,7 @@ int uc_iconv_close (iconv_t cd) return 0; } -#ifdef __GNUC__ +#if defined(__GNUC__) && !defined(UNICONV_REPLACE_ICONV) #define weak_alias(name, aliasname) _weak_alias(name, aliasname) #define _weak_alias(name, aliasname) \ extern __typeof (name) aliasname __attribute__ ((weak, alias (#name))); @@ -65,3 +69,28 @@ weak_alias (uc_iconv, iconv) weak_alias (uc_iconv_close, iconv_close) #endif +#ifdef UNICONV_REPLACE_ICONV +#undef iconv_open +#undef iconv +#undef iconv_close + +iconv_t iconv_open(const char *to, const char *from) +{ + return uc_iconv_open(to, from); +} + +size_t iconv (iconv_t cd, char **inbuf, + size_t *inbytesleft, + char **outbuf, + size_t *outbytesleft) +{ + return uc_iconv (cd, inbuf, inbytesleft, outbuf, outbytesleft); +} + +int +iconv_close (iconv_t cd) +{ + return uc_iconv_close (cd); +} + +#endif |