Author: peter
Date: Mon Nov 25 20:17:55 2013
New Revision: 258587
URL: http://svnweb.freebsd.org/changeset/base/258587

Log:
  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.
  
  Discussed with:       kib (and partly stolen from his patch)

Added:
  head/lib/libc/iconv/__iconv.c
     - copied unchanged from r258569, head/lib/libc_nonshared/__iconv.c
  head/lib/libc/iconv/__iconv_free_list.c
     - copied unchanged from r258569, 
head/lib/libc_nonshared/__iconv_free_list.c
  head/lib/libc/iconv/__iconv_get_list.c
     - copied unchanged from r258569, head/lib/libc_nonshared/__iconv_get_list.c
  head/lib/libc/iconv/bsd_iconv.c
     - copied unchanged from r258569, head/lib/libc/iconv/iconv.c
  head/lib/libc/iconv/iconv_canonicalize.c
     - copied unchanged from r258569, 
head/lib/libc_nonshared/iconv_canonicalize.c
  head/lib/libc/iconv/iconv_close.c
     - copied unchanged from r258569, head/lib/libc_nonshared/iconv_close.c
  head/lib/libc/iconv/iconv_open.c
     - copied unchanged from r258569, head/lib/libc_nonshared/iconv_open.c
  head/lib/libc/iconv/iconv_open_into.c
     - copied unchanged from r258569, head/lib/libc_nonshared/iconv_open_into.c
  head/lib/libc/iconv/iconv_set_relocation_prefix.c
     - copied unchanged from r258569, 
head/lib/libc_nonshared/iconv_set_relocation_prefix.c
  head/lib/libc/iconv/iconvctl.c
     - copied unchanged from r258569, head/lib/libc_nonshared/iconvctl.c
  head/lib/libc/iconv/iconvlist.c
     - copied unchanged from r258569, head/lib/libc_nonshared/iconvlist.c
  head/lib/libc_nonshared/Makefile.iconv
     - copied, changed from r258569, head/lib/libc_nonshared/Makefile
Replaced:
  head/lib/libc/iconv/iconv.c
     - copied unchanged from r258569, head/lib/libc_nonshared/iconv.c
Deleted:
  head/lib/libc_nonshared/__iconv.c
  head/lib/libc_nonshared/__iconv_free_list.c
  head/lib/libc_nonshared/__iconv_get_list.c
  head/lib/libc_nonshared/iconv.c
  head/lib/libc_nonshared/iconv_canonicalize.c
  head/lib/libc_nonshared/iconv_close.c
  head/lib/libc_nonshared/iconv_open.c
  head/lib/libc_nonshared/iconv_open_into.c
  head/lib/libc_nonshared/iconv_set_relocation_prefix.c
  head/lib/libc_nonshared/iconvctl.c
  head/lib/libc_nonshared/iconvlist.c
Modified:
  head/lib/libc/Makefile
  head/lib/libc/iconv/Makefile.inc
  head/lib/libc_nonshared/Makefile

Modified: head/lib/libc/Makefile
==============================================================================
--- head/lib/libc/Makefile      Mon Nov 25 20:05:23 2013        (r258586)
+++ head/lib/libc/Makefile      Mon Nov 25 20:17:55 2013        (r258587)
@@ -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: head/lib/libc/iconv/Makefile.inc
==============================================================================
--- head/lib/libc/iconv/Makefile.inc    Mon Nov 25 20:05:23 2013        
(r258586)
+++ head/lib/libc/iconv/Makefile.inc    Mon Nov 25 20:17:55 2013        
(r258587)
@@ -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: head/lib/libc/iconv/__iconv.c (from r258569, 
head/lib/libc_nonshared/__iconv.c)
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ head/lib/libc/iconv/__iconv.c       Mon Nov 25 20:17:55 2013        
(r258587, copy of r258569, head/lib/libc_nonshared/__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: head/lib/libc/iconv/__iconv_free_list.c (from r258569, 
head/lib/libc_nonshared/__iconv_free_list.c)
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ head/lib/libc/iconv/__iconv_free_list.c     Mon Nov 25 20:17:55 2013        
(r258587, copy of r258569, head/lib/libc_nonshared/__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: head/lib/libc/iconv/__iconv_get_list.c (from r258569, 
head/lib/libc_nonshared/__iconv_get_list.c)
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ head/lib/libc/iconv/__iconv_get_list.c      Mon Nov 25 20:17:55 2013        
(r258587, copy of r258569, head/lib/libc_nonshared/__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: head/lib/libc/iconv/bsd_iconv.c (from r258569, 
head/lib/libc/iconv/iconv.c)
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ head/lib/libc/iconv/bsd_iconv.c     Mon Nov 25 20:17:55 2013        
(r258587, copy of r258569, head/lib/libc/iconv/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 <ga...@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)
+{
+
+}

Copied: head/lib/libc/iconv/iconv.c (from r258569, 
head/lib/libc_nonshared/iconv.c)
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ head/lib/libc/iconv/iconv.c Mon Nov 25 20:17:55 2013        (r258587, copy 
of r258569, head/lib/libc_nonshared/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: head/lib/libc/iconv/iconv_canonicalize.c (from r258569, 
head/lib/libc_nonshared/iconv_canonicalize.c)
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ head/lib/libc/iconv/iconv_canonicalize.c    Mon Nov 25 20:17:55 2013        
(r258587, copy of r258569, head/lib/libc_nonshared/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: head/lib/libc/iconv/iconv_close.c (from r258569, 
head/lib/libc_nonshared/iconv_close.c)
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ head/lib/libc/iconv/iconv_close.c   Mon Nov 25 20:17:55 2013        
(r258587, copy of r258569, head/lib/libc_nonshared/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: head/lib/libc/iconv/iconv_open.c (from r258569, 
head/lib/libc_nonshared/iconv_open.c)
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ head/lib/libc/iconv/iconv_open.c    Mon Nov 25 20:17:55 2013        
(r258587, copy of r258569, head/lib/libc_nonshared/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: head/lib/libc/iconv/iconv_open_into.c (from r258569, 
head/lib/libc_nonshared/iconv_open_into.c)
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ head/lib/libc/iconv/iconv_open_into.c       Mon Nov 25 20:17:55 2013        
(r258587, copy of r258569, head/lib/libc_nonshared/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: head/lib/libc/iconv/iconv_set_relocation_prefix.c (from r258569, 
head/lib/libc_nonshared/iconv_set_relocation_prefix.c)
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ head/lib/libc/iconv/iconv_set_relocation_prefix.c   Mon Nov 25 20:17:55 
2013        (r258587, copy of r258569, 
head/lib/libc_nonshared/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);
+}

Copied: head/lib/libc/iconv/iconvctl.c (from r258569, 
head/lib/libc_nonshared/iconvctl.c)
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ head/lib/libc/iconv/iconvctl.c      Mon Nov 25 20:17:55 2013        
(r258587, copy of r258569, head/lib/libc_nonshared/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: head/lib/libc/iconv/iconvlist.c (from r258569, 
head/lib/libc_nonshared/iconvlist.c)
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ head/lib/libc/iconv/iconvlist.c     Mon Nov 25 20:17:55 2013        
(r258587, copy of r258569, head/lib/libc_nonshared/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: head/lib/libc_nonshared/Makefile
==============================================================================
--- head/lib/libc_nonshared/Makefile    Mon Nov 25 20:05:23 2013        
(r258586)
+++ head/lib/libc_nonshared/Makefile    Mon Nov 25 20:17:55 2013        
(r258587)
@@ -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 and modified: head/lib/libc_nonshared/Makefile.iconv (from r258569, 
head/lib/libc_nonshared/Makefile)
==============================================================================
--- head/lib/libc_nonshared/Makefile    Mon Nov 25 17:52:16 2013        
(r258569, copy source)
+++ head/lib/libc_nonshared/Makefile.iconv      Mon Nov 25 20:17:55 2013        
(r258587)
@@ -1,27 +1,9 @@
 # $FreeBSD$
 
-# We're actually creating a libc_noshared.a that is PIC along side libc.so.*
-# It is used exclusively with libc.so.* - there is no need for any other
-# compile modes.
-# bsd.lib.mk doesn't have an easy way to express that.
-NO_PROFILE?=
-.include <bsd.own.mk>
-NO_PIC=        
-# -fpic on some platforms, -fPIC on others.
-CFLAGS+=${PICFLAG} -DPIC -fvisibility=hidden
-
-LIB=   c_nonshared
-
-# 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 \
+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
-CFLAGS+=-I${.CURDIR}/../libc/iconv
 .endif
-
-.include <bsd.lib.mk>
-
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to