diff options
author | gabor <gabor@FreeBSD.org> | 2012-05-25 22:07:13 +0000 |
---|---|---|
committer | gabor <gabor@FreeBSD.org> | 2012-05-25 22:07:13 +0000 |
commit | e3765812b6b15da1da6be43ae49b83a8c641de43 (patch) | |
tree | 07edc4a98d4b7a649cb200cba2a77d702afadc7f /lib | |
parent | 0d9131d0d02e011dee7e46b412e084151b01a408 (diff) | |
download | FreeBSD-src-e3765812b6b15da1da6be43ae49b83a8c641de43.zip FreeBSD-src-e3765812b6b15da1da6be43ae49b83a8c641de43.tar.gz |
- Add support for BSD iconv when it is build into libc
PR: bin/162670
Submitted by: Jan Beich <jbeich@tormail.net>
MFC after: 2 weeks
Diffstat (limited to 'lib')
-rw-r--r-- | lib/libkiconv/Makefile | 4 | ||||
-rw-r--r-- | lib/libkiconv/xlat16_iconv.c | 10 |
2 files changed, 14 insertions, 0 deletions
diff --git a/lib/libkiconv/Makefile b/lib/libkiconv/Makefile index 4ba860e..2f87f4b 100644 --- a/lib/libkiconv/Makefile +++ b/lib/libkiconv/Makefile @@ -17,4 +17,8 @@ CFLAGS+= -I${.CURDIR}/../../sys WARNS?= 1 +.if !defined(MK_ICONV) +CFLAGS+= -DICONV_DLOPEN +.endif + .include <bsd.lib.mk> diff --git a/lib/libkiconv/xlat16_iconv.c b/lib/libkiconv/xlat16_iconv.c index dc9dc86..f402b78 100644 --- a/lib/libkiconv/xlat16_iconv.c +++ b/lib/libkiconv/xlat16_iconv.c @@ -60,10 +60,18 @@ struct xlat16_table { static struct xlat16_table kiconv_xlat16_open(const char *, const char *, int); static int chklocale(int, const char *); +#ifdef ICONV_DLOPEN static int my_iconv_init(void); static iconv_t (*my_iconv_open)(const char *, const char *); static size_t (*my_iconv)(iconv_t, const char **, size_t *, char **, size_t *); static int (*my_iconv_close)(iconv_t); +#else +#include <iconv.h> +#define my_iconv_init() 0 +#define my_iconv_open iconv_open +#define my_iconv iconv +#define my_iconv_close iconv_close +#endif static size_t my_iconv_char(iconv_t, const u_char **, size_t *, u_char **, size_t *); int @@ -310,6 +318,7 @@ chklocale(int category, const char *code) return (error); } +#ifdef ICONV_DLOPEN static int my_iconv_init(void) { @@ -327,6 +336,7 @@ my_iconv_init(void) return (0); } +#endif static size_t my_iconv_char(iconv_t cd, const u_char **ibuf, size_t * ilen, u_char **obuf, |