Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 29 Nov 2013 19:44:30 +0000 (UTC)
From:      Glen Barber <gjb@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org
Subject:   svn commit: r258750 - in stable/10: include lib/libc lib/libc/iconv lib/libc_nonshared
Message-ID:  <201311291944.rATJiUoB082454@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: gjb
Date: Fri Nov 29 19:44:30 2013
New Revision: 258750
URL: http://svnweb.freebsd.org/changeset/base/258750

Log:
  MFC r258537, r258587:
  
  r258537 (hrs):
    Add ICONV_{GET,SET}_ILSEQ_INVALID iconvctl.  GNU iconv returns
    EILSEQ when there is an invalid character in the output codeset
    while it is valid in the input.  However, POSIX requires iconv()
    to perform an implementation-defined conversion on the character.
    So, Citrus iconv converts such a character to a special character
    which means it is invalid in the output codeset.
  
    This is not a problem in most cases but some software like libxml2
    depends on GNU's behavior to determine if a character is output
    as-is or another form such as a character entity (&#NNN;).
  
  r258587 (peter):
    Move the iconv wrapper source from libc_nonshared to libc/iconv so
    that it is all in the one place again.  Rename libc/iconv/iconv.c
    to bsd_iconv.c. Compile the wrappers into libc.a so that
    WITHOUT_DYNAMICROOT works again.
  
  Approved by:	re (kib)
  Sponsored by:	The FreeBSD Foundation

Added:
  stable/10/lib/libc/iconv/__iconv.c
     - copied unchanged from r258587, head/lib/libc/iconv/__iconv.c
  stable/10/lib/libc/iconv/__iconv_free_list.c
     - copied unchanged from r258587, head/lib/libc/iconv/__iconv_free_list.c
  stable/10/lib/libc/iconv/__iconv_get_list.c
     - copied unchanged from r258587, head/lib/libc/iconv/__iconv_get_list.c
  stable/10/lib/libc/iconv/bsd_iconv.c
     - copied unchanged from r258587, head/lib/libc/iconv/bsd_iconv.c
  stable/10/lib/libc/iconv/iconv_canonicalize.c
     - copied unchanged from r258587, head/lib/libc/iconv/iconv_canonicalize.c
  stable/10/lib/libc/iconv/iconv_close.c
     - copied unchanged from r258587, head/lib/libc/iconv/iconv_close.c
  stable/10/lib/libc/iconv/iconv_open.c
     - copied unchanged from r258587, head/lib/libc/iconv/iconv_open.c
  stable/10/lib/libc/iconv/iconv_open_into.c
     - copied unchanged from r258587, head/lib/libc/iconv/iconv_open_into.c
  stable/10/lib/libc/iconv/iconv_set_relocation_prefix.c
     - copied unchanged from r258587, head/lib/libc/iconv/iconv_set_relocation_prefix.c
  stable/10/lib/libc/iconv/iconvctl.c
     - copied unchanged from r258587, head/lib/libc/iconv/iconvctl.c
  stable/10/lib/libc/iconv/iconvlist.c
     - copied unchanged from r258587, head/lib/libc/iconv/iconvlist.c
  stable/10/lib/libc_nonshared/Makefile.iconv
     - copied unchanged from r258587, head/lib/libc_nonshared/Makefile.iconv
Replaced:
  stable/10/lib/libc/iconv/iconv.c
     - copied unchanged from r258587, head/lib/libc/iconv/iconv.c
Deleted:
  stable/10/lib/libc_nonshared/__iconv.c
  stable/10/lib/libc_nonshared/__iconv_free_list.c
  stable/10/lib/libc_nonshared/__iconv_get_list.c
  stable/10/lib/libc_nonshared/iconv.c
  stable/10/lib/libc_nonshared/iconv_canonicalize.c
  stable/10/lib/libc_nonshared/iconv_close.c
  stable/10/lib/libc_nonshared/iconv_open.c
  stable/10/lib/libc_nonshared/iconv_open_into.c
  stable/10/lib/libc_nonshared/iconv_set_relocation_prefix.c
  stable/10/lib/libc_nonshared/iconvctl.c
  stable/10/lib/libc_nonshared/iconvlist.c
Modified:
  stable/10/include/iconv.h
  stable/10/lib/libc/Makefile
  stable/10/lib/libc/iconv/Makefile.inc
  stable/10/lib/libc/iconv/citrus_iconv_local.h
  stable/10/lib/libc/iconv/iconvctl.3
  stable/10/lib/libc_nonshared/Makefile
Directory Properties:
  stable/10/include/   (props changed)
  stable/10/lib/libc/   (props changed)
  stable/10/lib/libc_nonshared/   (props changed)

Modified: stable/10/include/iconv.h
==============================================================================
--- stable/10/include/iconv.h	Fri Nov 29 18:51:54 2013	(r258749)
+++ stable/10/include/iconv.h	Fri Nov 29 19:44:30 2013	(r258750)
@@ -86,6 +86,8 @@ void	 iconv_set_relocation_prefix(const 
 #define ICONV_SET_DISCARD_ILSEQ	4
 #define ICONV_SET_HOOKS		5
 #define ICONV_SET_FALLBACKS	6
+#define ICONV_GET_ILSEQ_INVALID	128
+#define ICONV_SET_ILSEQ_INVALID	129
 
 typedef void (*iconv_unicode_char_hook) (unsigned int mbr, void *data);
 typedef void (*iconv_wide_char_hook) (wchar_t wc, void *data);

Modified: stable/10/lib/libc/Makefile
==============================================================================
--- stable/10/lib/libc/Makefile	Fri Nov 29 18:51:54 2013	(r258749)
+++ stable/10/lib/libc/Makefile	Fri Nov 29 19:44:30 2013	(r258750)
@@ -50,6 +50,9 @@ LDADD+= -lgcc
 LDADD+= -lssp_nonshared
 .endif
 
+# Extras that live in either libc.a or libc_nonshared.a
+LIBC_NONSHARED_SRCS=
+
 # Define (empty) variables so that make doesn't give substitution
 # errors if the included makefiles don't change these:
 MDSRCS=
@@ -114,6 +117,8 @@ CFLAGS+= -DNS_CACHING
 CFLAGS+=-D_FREEFALL_CONFIG
 .endif
 
+STATICOBJS+=${LIBC_NONSHARED_SRCS:S/.c$/.o/}
+
 VERSION_DEF=${.CURDIR}/Versions.def
 SYMBOL_MAPS=${SYM_MAPS}
 CFLAGS+= -DSYMBOL_VERSIONING

Modified: stable/10/lib/libc/iconv/Makefile.inc
==============================================================================
--- stable/10/lib/libc/iconv/Makefile.inc	Fri Nov 29 18:51:54 2013	(r258749)
+++ stable/10/lib/libc/iconv/Makefile.inc	Fri Nov 29 19:44:30 2013	(r258750)
@@ -14,5 +14,9 @@ SRCS+=	citrus_bcs.c citrus_bcs_strtol.c 
 	citrus_esdb.c citrus_hash.c citrus_iconv.c citrus_lookup.c \
 	citrus_lookup_factory.c citrus_mapper.c citrus_memstream.c \
 	citrus_mmap.c citrus_module.c citrus_none.c citrus_pivot_factory.c \
-	citrus_prop.c citrus_stdenc.c iconv.c iconv_compat.c
+	citrus_prop.c citrus_stdenc.c bsd_iconv.c iconv_compat.c
 SYM_MAPS+= ${.CURDIR}/iconv/Symbol.map
+
+.if ${MK_ICONV} == yes
+.include "${.CURDIR}/../libc_nonshared/Makefile.iconv"
+.endif

Copied: stable/10/lib/libc/iconv/__iconv.c (from r258587, head/lib/libc/iconv/__iconv.c)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ stable/10/lib/libc/iconv/__iconv.c	Fri Nov 29 19:44:30 2013	(r258750, copy of r258587, head/lib/libc/iconv/__iconv.c)
@@ -0,0 +1,38 @@
+/*-
+ * Copyright (c) 2013 Peter Wemm
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/types.h>
+#include <iconv.h>
+#include "iconv-internal.h"
+
+size_t
+__iconv(iconv_t a, const char **b, size_t *c, char **d,
+     size_t *e, __uint32_t f, size_t *g)
+{
+	return __bsd___iconv(a, b, c, d, e, f, g);
+}

Copied: stable/10/lib/libc/iconv/__iconv_free_list.c (from r258587, head/lib/libc/iconv/__iconv_free_list.c)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ stable/10/lib/libc/iconv/__iconv_free_list.c	Fri Nov 29 19:44:30 2013	(r258750, copy of r258587, head/lib/libc/iconv/__iconv_free_list.c)
@@ -0,0 +1,37 @@
+/*-
+ * Copyright (c) 2013 Peter Wemm
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/types.h>
+#include <iconv.h>
+#include "iconv-internal.h"
+
+void
+__iconv_free_list(char **a, size_t b)
+{
+	__bsd___iconv_free_list(a, b);
+}

Copied: stable/10/lib/libc/iconv/__iconv_get_list.c (from r258587, head/lib/libc/iconv/__iconv_get_list.c)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ stable/10/lib/libc/iconv/__iconv_get_list.c	Fri Nov 29 19:44:30 2013	(r258750, copy of r258587, head/lib/libc/iconv/__iconv_get_list.c)
@@ -0,0 +1,37 @@
+/*-
+ * Copyright (c) 2013 Peter Wemm
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/types.h>
+#include <iconv.h>
+#include "iconv-internal.h"
+
+int
+__iconv_get_list(char ***a, size_t *b, __iconv_bool c)
+{
+	return __bsd___iconv_get_list(a, b, c);
+}

Copied: stable/10/lib/libc/iconv/bsd_iconv.c (from r258587, head/lib/libc/iconv/bsd_iconv.c)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ stable/10/lib/libc/iconv/bsd_iconv.c	Fri Nov 29 19:44:30 2013	(r258750, copy of r258587, head/lib/libc/iconv/bsd_iconv.c)
@@ -0,0 +1,318 @@
+/* $FreeBSD$ */
+/* $NetBSD: iconv.c,v 1.11 2009/03/03 16:22:33 explorer Exp $ */
+
+/*-
+ * Copyright (c) 2003 Citrus Project,
+ * Copyright (c) 2009, 2010 Gabor Kovesdan <gabor@FreeBSD.org>,
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+#include <sys/queue.h>
+#include <sys/types.h>
+
+#include <assert.h>
+#include <errno.h>
+#include <iconv.h>
+#include <limits.h>
+#include <paths.h>
+#include <stdbool.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "citrus_types.h"
+#include "citrus_module.h"
+#include "citrus_esdb.h"
+#include "citrus_hash.h"
+#include "citrus_iconv.h"
+
+#include "iconv-internal.h"
+
+#define ISBADF(_h_)	(!(_h_) || (_h_) == (iconv_t)-1)
+
+static iconv_t
+__bsd___iconv_open(const char *out, const char *in, struct _citrus_iconv *handle)
+{
+	const char *out_slashes;
+	char *out_noslashes;
+	int ret;
+
+	/*
+	 * Remove anything following a //, as these are options (like
+	 * //ignore, //translate, etc) and we just don't handle them.
+	 * This is for compatibility with software that uses these
+	 * blindly.
+	 */
+	out_slashes = strstr(out, "//");
+	if (out_slashes != NULL) {
+		out_noslashes = strndup(out, out_slashes - out);
+		if (out_noslashes == NULL) {
+			errno = ENOMEM;
+			return ((iconv_t)-1);
+		}
+		ret = _citrus_iconv_open(&handle, in, out_noslashes);
+		free(out_noslashes);
+	} else {
+		ret = _citrus_iconv_open(&handle, in, out);
+	}
+
+	if (ret) {
+		errno = ret == ENOENT ? EINVAL : ret;
+		return ((iconv_t)-1);
+	}
+
+	handle->cv_shared->ci_discard_ilseq = strcasestr(out, "//IGNORE");
+	handle->cv_shared->ci_hooks = NULL;
+
+	return ((iconv_t)(void *)handle);
+}
+
+iconv_t
+__bsd_iconv_open(const char *out, const char *in)
+{
+
+	return (__bsd___iconv_open(out, in, NULL));
+}
+
+int
+__bsd_iconv_open_into(const char *out, const char *in, iconv_allocation_t *ptr)
+{
+	struct _citrus_iconv *handle;
+
+	handle = (struct _citrus_iconv *)ptr;
+	return ((__bsd___iconv_open(out, in, handle) == (iconv_t)-1) ? -1 : 0);
+}
+
+int
+__bsd_iconv_close(iconv_t handle)
+{
+
+	if (ISBADF(handle)) {
+		errno = EBADF;
+		return (-1);
+	}
+
+	_citrus_iconv_close((struct _citrus_iconv *)(void *)handle);
+
+	return (0);
+}
+
+size_t
+__bsd_iconv(iconv_t handle, const char **in, size_t *szin, char **out, size_t *szout)
+{
+	size_t ret;
+	int err;
+
+	if (ISBADF(handle)) {
+		errno = EBADF;
+		return ((size_t)-1);
+	}
+
+	err = _citrus_iconv_convert((struct _citrus_iconv *)(void *)handle,
+	    in, szin, out, szout, 0, &ret);
+	if (err) {
+		errno = err;
+		ret = (size_t)-1;
+	}
+
+	return (ret);
+}
+
+size_t
+__bsd___iconv(iconv_t handle, const char **in, size_t *szin, char **out,
+    size_t *szout, uint32_t flags, size_t *invalids)
+{
+	size_t ret;
+	int err;
+
+	if (ISBADF(handle)) {
+		errno = EBADF;
+		return ((size_t)-1);
+	}
+
+	err = _citrus_iconv_convert((struct _citrus_iconv *)(void *)handle,
+	    in, szin, out, szout, flags, &ret);
+	if (invalids)
+		*invalids = ret;
+	if (err) {
+		errno = err;
+		ret = (size_t)-1;
+	}
+
+	return (ret);
+}
+
+int
+__bsd___iconv_get_list(char ***rlist, size_t *rsz, bool sorted)
+{
+	int ret;
+
+	ret = _citrus_esdb_get_list(rlist, rsz, sorted);
+	if (ret) {
+		errno = ret;
+		return (-1);
+	}
+
+	return (0);
+}
+
+void
+__bsd___iconv_free_list(char **list, size_t sz)
+{
+
+	_citrus_esdb_free_list(list, sz);
+}
+
+/*
+ * GNU-compatibile non-standard interfaces.
+ */
+static int
+qsort_helper(const void *first, const void *second)
+{
+	const char * const *s1;
+	const char * const *s2;
+
+	s1 = first;
+	s2 = second;
+	return (strcmp(*s1, *s2));
+}
+
+void
+__bsd_iconvlist(int (*do_one) (unsigned int, const char * const *,
+    void *), void *data)
+{
+	char **list, **names;
+	const char * const *np;
+	char *curitem, *curkey, *slashpos;
+	size_t sz;
+	unsigned int i, j;
+
+	i = 0;
+
+	if (__bsd___iconv_get_list(&list, &sz, true))
+		list = NULL;
+	qsort((void *)list, sz, sizeof(char *), qsort_helper);
+	while (i < sz) {
+		j = 0;
+		slashpos = strchr(list[i], '/');
+		curkey = (char *)malloc(slashpos - list[i] + 2);
+		names = (char **)malloc(sz * sizeof(char *));
+		if ((curkey == NULL) || (names == NULL)) {
+			__bsd___iconv_free_list(list, sz);
+			return;
+		}
+		strlcpy(curkey, list[i], slashpos - list[i] + 1);
+		names[j++] = strdup(curkey);
+		for (; (i < sz) && (memcmp(curkey, list[i], strlen(curkey)) == 0); i++) {
+			slashpos = strchr(list[i], '/');
+			curitem = (char *)malloc(strlen(slashpos) + 1);
+			if (curitem == NULL) {
+				__bsd___iconv_free_list(list, sz);
+				return;
+			}
+			strlcpy(curitem, &slashpos[1], strlen(slashpos) + 1);
+			if (strcmp(curkey, curitem) == 0) {
+				continue;
+			}
+			names[j++] = strdup(curitem);
+		}
+		np = (const char * const *)names;
+		do_one(j, np, data);
+		free(names);
+	}
+
+	__bsd___iconv_free_list(list, sz);
+}
+
+__inline const char *
+__bsd_iconv_canonicalize(const char *name)
+{
+
+	return (_citrus_iconv_canonicalize(name));
+}
+
+int
+__bsd_iconvctl(iconv_t cd, int request, void *argument)
+{
+	struct _citrus_iconv *cv;
+	struct iconv_hooks *hooks;
+	const char *convname;
+	char src[PATH_MAX], *dst;
+	int *i;
+
+	cv = (struct _citrus_iconv *)(void *)cd;
+	hooks = (struct iconv_hooks *)argument;
+	i = (int *)argument;
+
+	if (ISBADF(cd)) {
+		errno = EBADF;
+		return (-1);
+	}
+
+	switch (request) {
+	case ICONV_TRIVIALP:
+		convname = cv->cv_shared->ci_convname;
+		dst = strchr(convname, '/');
+
+		strlcpy(src, convname, dst - convname + 1);
+		dst++;
+		if ((convname == NULL) || (src == NULL) || (dst == NULL))
+			return (-1);
+		*i = strcmp(src, dst) == 0 ? 1 : 0;
+		return (0);
+	case ICONV_GET_TRANSLITERATE:
+		*i = 1;
+		return (0);
+	case ICONV_SET_TRANSLITERATE:
+		return  ((*i == 1) ? 0 : -1);
+	case ICONV_GET_DISCARD_ILSEQ:
+		*i = cv->cv_shared->ci_discard_ilseq ? 1 : 0;
+		return (0);
+	case ICONV_SET_DISCARD_ILSEQ:
+		cv->cv_shared->ci_discard_ilseq = *i;
+		return (0);
+	case ICONV_SET_HOOKS:
+		cv->cv_shared->ci_hooks = hooks;
+		return (0);
+	case ICONV_SET_FALLBACKS:
+		errno = EOPNOTSUPP;
+		return (-1);
+	case ICONV_GET_ILSEQ_INVALID:
+		*i = cv->cv_shared->ci_ilseq_invalid ? 1 : 0;
+		return (0);
+	case ICONV_SET_ILSEQ_INVALID:
+		cv->cv_shared->ci_ilseq_invalid = *i;
+		return (0);
+	default:
+		errno = EINVAL;
+		return (-1);
+	}
+}
+
+void
+__bsd_iconv_set_relocation_prefix(const char *orig_prefix __unused,
+    const char *curr_prefix __unused)
+{
+
+}

Modified: stable/10/lib/libc/iconv/citrus_iconv_local.h
==============================================================================
--- stable/10/lib/libc/iconv/citrus_iconv_local.h	Fri Nov 29 18:51:54 2013	(r258749)
+++ stable/10/lib/libc/iconv/citrus_iconv_local.h	Fri Nov 29 19:44:30 2013	(r258750)
@@ -99,6 +99,7 @@ struct _citrus_iconv_shared {
 	char						*ci_convname;
 	bool						 ci_discard_ilseq;
 	struct iconv_hooks				*ci_hooks;
+	bool						 ci_ilseq_invalid;
 };
 
 struct _citrus_iconv {

Copied: stable/10/lib/libc/iconv/iconv.c (from r258587, head/lib/libc/iconv/iconv.c)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ stable/10/lib/libc/iconv/iconv.c	Fri Nov 29 19:44:30 2013	(r258750, copy of r258587, head/lib/libc/iconv/iconv.c)
@@ -0,0 +1,39 @@
+/*-
+ * Copyright (c) 2013 Peter Wemm
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/types.h>
+#include <iconv.h>
+#include "iconv-internal.h"
+
+size_t
+iconv(iconv_t a, const char ** __restrict b,
+      size_t * __restrict c, char ** __restrict d,
+      size_t * __restrict e)
+{
+	return __bsd_iconv(a, b, c, d, e);
+}

Copied: stable/10/lib/libc/iconv/iconv_canonicalize.c (from r258587, head/lib/libc/iconv/iconv_canonicalize.c)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ stable/10/lib/libc/iconv/iconv_canonicalize.c	Fri Nov 29 19:44:30 2013	(r258750, copy of r258587, head/lib/libc/iconv/iconv_canonicalize.c)
@@ -0,0 +1,37 @@
+/*-
+ * Copyright (c) 2013 Peter Wemm
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/types.h>
+#include <iconv.h>
+#include "iconv-internal.h"
+
+const char *
+iconv_canonicalize(const char *a)
+{
+	return __bsd_iconv_canonicalize(a);
+}

Copied: stable/10/lib/libc/iconv/iconv_close.c (from r258587, head/lib/libc/iconv/iconv_close.c)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ stable/10/lib/libc/iconv/iconv_close.c	Fri Nov 29 19:44:30 2013	(r258750, copy of r258587, head/lib/libc/iconv/iconv_close.c)
@@ -0,0 +1,37 @@
+/*-
+ * Copyright (c) 2013 Peter Wemm
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/types.h>
+#include <iconv.h>
+#include "iconv-internal.h"
+
+int
+iconv_close(iconv_t a)
+{
+	return __bsd_iconv_close(a);
+}

Copied: stable/10/lib/libc/iconv/iconv_open.c (from r258587, head/lib/libc/iconv/iconv_open.c)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ stable/10/lib/libc/iconv/iconv_open.c	Fri Nov 29 19:44:30 2013	(r258750, copy of r258587, head/lib/libc/iconv/iconv_open.c)
@@ -0,0 +1,37 @@
+/*-
+ * Copyright (c) 2013 Peter Wemm
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/types.h>
+#include <iconv.h>
+#include "iconv-internal.h"
+
+iconv_t
+iconv_open(const char *a, const char *b)
+{
+	return __bsd_iconv_open(a, b);
+}

Copied: stable/10/lib/libc/iconv/iconv_open_into.c (from r258587, head/lib/libc/iconv/iconv_open_into.c)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ stable/10/lib/libc/iconv/iconv_open_into.c	Fri Nov 29 19:44:30 2013	(r258750, copy of r258587, head/lib/libc/iconv/iconv_open_into.c)
@@ -0,0 +1,37 @@
+/*-
+ * Copyright (c) 2013 Peter Wemm
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/types.h>
+#include <iconv.h>
+#include "iconv-internal.h"
+
+int
+iconv_open_into(const char *a, const char *b, iconv_allocation_t *c)
+{
+	return __bsd_iconv_open_into(a, b, c);
+}

Copied: stable/10/lib/libc/iconv/iconv_set_relocation_prefix.c (from r258587, head/lib/libc/iconv/iconv_set_relocation_prefix.c)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ stable/10/lib/libc/iconv/iconv_set_relocation_prefix.c	Fri Nov 29 19:44:30 2013	(r258750, copy of r258587, head/lib/libc/iconv/iconv_set_relocation_prefix.c)
@@ -0,0 +1,37 @@
+/*-
+ * Copyright (c) 2013 Peter Wemm
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/types.h>
+#include <iconv.h>
+#include "iconv-internal.h"
+
+void
+iconv_set_relocation_prefix(const char *a, const char *b)
+{
+	return __bsd_iconv_set_relocation_prefix(a, b);
+}

Modified: stable/10/lib/libc/iconv/iconvctl.3
==============================================================================
--- stable/10/lib/libc/iconv/iconvctl.3	Fri Nov 29 18:51:54 2013	(r258749)
+++ stable/10/lib/libc/iconv/iconvctl.3	Fri Nov 29 19:44:30 2013	(r258750)
@@ -34,7 +34,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd November 7, 2009
+.Dd November 25, 2009
 .Dt ICONVCTL 3
 .Os
 .Sh NAME
@@ -110,6 +110,31 @@ variable, which is passed to
 via
 .Fa argument
 by its address.
+.It ICONV_GET_ILSEQ_INVALID
+Determines if a character in the input buffer that is valid,
+but for which an identical character does not exist in the target
+codeset returns
+.Er EILSEQ
+or not.
+The answer is stored in
+.Fa argument ,
+which is of
+.Ft int * .
+It will be set to 1 if this feature is enabled or set to 0 otherwise.
+.It ICONV_SET_ILSEQ_INVALID
+Sets whether a character in the input buffer that is valid,
+but for which an identical character does not exist in the target
+codeset returns
+.Er EILSEQ
+or not.
+If
+.Fa argument ,
+which is of
+.Ft int *
+is set to 1 it will be enabled,
+and if
+.Fa argument
+is set to 0 it will be disabled.
 .El
 .\" XXX: fallbacks are unimplemented and trying to set them will always
 .\"      return EOPNOTSUPP but definitions are provided for source-level

Copied: stable/10/lib/libc/iconv/iconvctl.c (from r258587, head/lib/libc/iconv/iconvctl.c)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ stable/10/lib/libc/iconv/iconvctl.c	Fri Nov 29 19:44:30 2013	(r258750, copy of r258587, head/lib/libc/iconv/iconvctl.c)
@@ -0,0 +1,37 @@
+/*-
+ * Copyright (c) 2013 Peter Wemm
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/types.h>
+#include <iconv.h>
+#include "iconv-internal.h"
+
+int
+iconvctl(iconv_t a, int b, void *c)
+{
+	return __bsd_iconvctl(a, b, c);
+}

Copied: stable/10/lib/libc/iconv/iconvlist.c (from r258587, head/lib/libc/iconv/iconvlist.c)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ stable/10/lib/libc/iconv/iconvlist.c	Fri Nov 29 19:44:30 2013	(r258750, copy of r258587, head/lib/libc/iconv/iconvlist.c)
@@ -0,0 +1,37 @@
+/*-
+ * Copyright (c) 2013 Peter Wemm
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/types.h>
+#include <iconv.h>
+#include "iconv-internal.h"
+
+void
+iconvlist(int (*a) (unsigned int, const char * const *, void *), void *b)
+{
+	return __bsd_iconvlist(a, b);
+}

Modified: stable/10/lib/libc_nonshared/Makefile
==============================================================================
--- stable/10/lib/libc_nonshared/Makefile	Fri Nov 29 18:51:54 2013	(r258749)
+++ stable/10/lib/libc_nonshared/Makefile	Fri Nov 29 19:44:30 2013	(r258750)
@@ -12,16 +12,17 @@ CFLAGS+=${PICFLAG} -DPIC -fvisibility=hi
 
 LIB=	c_nonshared
 
+LIBC_NONSHARED_SRCS=
+
 # So that an empty .a file doesn't cause errors.
 SRCS=	__stub.c
 
 .if ${MK_ICONV} == "yes"
-SRCS+=	__iconv.c __iconv_free_list.c __iconv_get_list.c \
-	iconv.c iconv_canonicalize.c iconv_close.c \
-	iconv_open.c iconv_open_into.c \
-	iconv_set_relocation_prefix.c iconvctl.c iconvlist.c
+.PATH: ${.CURDIR}/../libc/iconv
+.include "Makefile.iconv"
 CFLAGS+=-I${.CURDIR}/../libc/iconv
 .endif
 
-.include <bsd.lib.mk>
+SRCS+=	${LIBC_NONSHARED_SRCS}
 
+.include <bsd.lib.mk>

Copied: stable/10/lib/libc_nonshared/Makefile.iconv (from r258587, head/lib/libc_nonshared/Makefile.iconv)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ stable/10/lib/libc_nonshared/Makefile.iconv	Fri Nov 29 19:44:30 2013	(r258750, copy of r258587, head/lib/libc_nonshared/Makefile.iconv)
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+.if ${MK_ICONV} == "yes"
+LIBC_NONSHARED_SRCS+=	\
+	__iconv.c __iconv_free_list.c __iconv_get_list.c \
+	iconv.c iconv_canonicalize.c iconv_close.c \
+	iconv_open.c iconv_open_into.c \
+	iconv_set_relocation_prefix.c iconvctl.c iconvlist.c
+.endif



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201311291944.rATJiUoB082454>