summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/Makefile18
-rw-r--r--include/iconv.h41
2 files changed, 40 insertions, 19 deletions
diff --git a/include/Makefile b/include/Makefile
index ae5ed7c..ba41814 100644
--- a/include/Makefile
+++ b/include/Makefile
@@ -72,10 +72,6 @@ _dev_ieee488= dev/ieee488
INCS+= hesiod.h
.endif
-.if ${MK_ICONV} != "no"
-INCS+= iconv.h
-.endif
-
.if ${MK_BLUETOOTH} != "no"
LSUBSUBDIRS+= netgraph/bluetooth/include
.endif
@@ -85,6 +81,20 @@ LSUBSUBDIRS+= netgraph/bluetooth/include
_netipx= netipx
#.endif
+# Handle the #define aliases for libiconv
+.if ${MK_ICONV} == "yes"
+CLEANFILES+= _libiconv_compat.h
+INCS+= _libiconv_compat.h iconv.h
+_libiconv_compat.h: ${.CURDIR}/Makefile
+ echo "/* Indicate whether libiconv symbols are present */" > _libiconv_compat.h
+.if ${MK_LIBICONV_COMPAT} == "yes"
+ echo "#define __LIBICONV_COMPAT" >> _libiconv_compat.h
+.else
+ echo "#undef __LIBICONV_COMPAT" >> _libiconv_compat.h
+.endif
+.endif
+
+
# Define SHARED to indicate whether you want symbolic links to the system
# source (``symlinks''), or a separate copy (``copies''). ``symlinks'' is
# probably only useful for developers and should be avoided if you do not
diff --git a/include/iconv.h b/include/iconv.h
index 7b628af..3423a24 100644
--- a/include/iconv.h
+++ b/include/iconv.h
@@ -41,20 +41,23 @@
#include <sys/cdefs.h>
#include <sys/types.h>
-#define iconv_open libiconv_open
-#define iconv_close libiconv_close
-#define iconv libiconv
-#define iconv_t libiconv_t
+#include <_libiconv_compat.h>
+#ifdef __LIBICONV_COMPAT
+#define libiconv_open iconv_open
+#define libiconv_close iconv_close
+#define libiconv iconv
+#define libiconv_t iconv_t
+#endif
struct __tag_iconv_t;
typedef struct __tag_iconv_t *iconv_t;
__BEGIN_DECLS
-iconv_t libiconv_open(const char *, const char *);
-size_t libiconv(iconv_t, const char ** __restrict,
- size_t * __restrict, char ** __restrict,
- size_t * __restrict);
-int libiconv_close(iconv_t);
+iconv_t iconv_open(const char *, const char *);
+size_t iconv(iconv_t, const char ** __restrict,
+ size_t * __restrict, char ** __restrict,
+ size_t * __restrict);
+int iconv_close(iconv_t);
/*
* non-portable interfaces for iconv
*/
@@ -67,20 +70,28 @@ size_t __iconv(iconv_t, const char **, size_t *, char **,
/*
* GNU interfaces for iconv
*/
-#define iconv_open_into libiconv_open_into
-#define iconvctl libiconvctl
-#define iconvlist libiconvlist
+#ifdef __LIBICONV_COMPAT
+#define libiconv_open_into iconv_open_into
+#define libiconvctl iconvctl
+#define libiconvlist iconvlist
+#define libiconv_set_relocation_prefix iconv_set_relocation_prefix
+#endif
/* We have iconvctl() */
-#define _LIBICONV_VERSION 0x0108
-extern int _libiconv_version;
+#define _ICONV_VERSION 0x0108
+extern int _iconv_version;
+
+#ifdef __LIBICONV_COMPAT
+#define _libiconv_version _iconv_version
+#define _LIBICONV_VERSION _ICONV_VERSION
+#endif
typedef struct {
void *spaceholder[64];
} iconv_allocation_t;
int iconv_open_into(const char *, const char *, iconv_allocation_t *);
-void libiconv_set_relocation_prefix (const char *orig_prefix,
+void iconv_set_relocation_prefix(const char *orig_prefix,
const char *curr_prefix);
/*
OpenPOWER on IntegriCloud