From 8793e7c7d21a0434d1b5e63364c88b2b125a3d29 Mon Sep 17 00:00:00 2001 From: Elliott Hughes Date: Fri, 10 Aug 2012 11:36:17 -0700 Subject: [PATCH] Revert "Switch to NetBSD's strxfrm(3)." This reverts commit be1d78b0dc899a732c0e9d7515d3023e8004e368 Change-Id: I11a95db474796f3da004f27652b081d5ba4ec9b4 --- libc/Android.mk | 5 +- libc/NOTICE | 16 ----- libc/string/strxfrm.c | 47 +++++++++++++++ libc/upstream-netbsd/README.txt | 9 --- libc/upstream-netbsd/libc/string/strxfrm.c | 70 ---------------------- libc/upstream-netbsd/netbsd-compat.h | 24 -------- 6 files changed, 48 insertions(+), 123 deletions(-) create mode 100755 libc/string/strxfrm.c delete mode 100644 libc/upstream-netbsd/README.txt delete mode 100644 libc/upstream-netbsd/libc/string/strxfrm.c delete mode 100644 libc/upstream-netbsd/netbsd-compat.h diff --git a/libc/Android.mk b/libc/Android.mk index 091b06693..fd81d7ea3 100644 --- a/libc/Android.mk +++ b/libc/Android.mk @@ -209,6 +209,7 @@ libc_common_src_files := \ string/strstr.c \ string/strtok.c \ string/strtotimeval.c \ + string/strxfrm.c \ string/__memcpy_chk.c \ string/__memmove_chk.c \ string/__memset_chk.c \ @@ -336,7 +337,6 @@ libc_common_src_files := \ regex/regerror.c \ regex/regexec.c \ regex/regfree.c \ - upstream-netbsd/libc/string/strxfrm.c \ # The following files are common, but must be compiled # with different C flags when building a static C library. @@ -467,9 +467,6 @@ libc_common_cflags := \ -DLOG_ON_HEAP_ERROR \ -std=gnu99 -libc_common_cflags += \ - -include upstream-netbsd/netbsd-compat.h - # these macro definitions are required to implement the # 'timezone' and 'daylight' global variables, as well as # properly update the 'tm_gmtoff' field in 'struct tm'. diff --git a/libc/NOTICE b/libc/NOTICE index d78b84013..8c5bdc85f 100644 --- a/libc/NOTICE +++ b/libc/NOTICE @@ -1850,22 +1850,6 @@ POSSIBILITY OF SUCH DAMAGE. ------------------------------------------------------------------- -Copyright (C) 2012 The Android Open Source Project - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - -------------------------------------------------------------------- - Copyright (c) 1991 by AT&T. Permission to use, copy, modify, and distribute this software for any diff --git a/libc/string/strxfrm.c b/libc/string/strxfrm.c new file mode 100755 index 000000000..3c4d707dc --- /dev/null +++ b/libc/string/strxfrm.c @@ -0,0 +1,47 @@ +/* + * Copyright (C) 2009 The Android Open Source Project + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * 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 COPYRIGHT HOLDERS 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 + * COPYRIGHT OWNER 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 + +/* + * Transform string s2 to string s1 using the current locale so that + * strcmp of transformed strings yields the same result as strcoll. + * Since Bionic really does not support locales, we assume we always use + * the C locale. + * + * This function is provided to make libstdc++-v3 usable. + */ +size_t +strxfrm(char *s1, const char *s2, size_t n) +{ + size_t len = strlen(s2) + 1; + + if (len < n) + n = len; + memcpy(s1, s2, n); + return len; +} diff --git a/libc/upstream-netbsd/README.txt b/libc/upstream-netbsd/README.txt deleted file mode 100644 index 86af6eb2d..000000000 --- a/libc/upstream-netbsd/README.txt +++ /dev/null @@ -1,9 +0,0 @@ -This directory contains upstream NetBSD source. You should not edit these -files directly. Make fixes upstream and then pull down the new version of -the file. - -Note that code in the other 'netbsd' directory contains Android modifications. -We should work towards getting as many of those changes as possible upstream -and then losing those files in favor of pure upstream copies here instead. - -TODO: write a script to make this process automated. diff --git a/libc/upstream-netbsd/libc/string/strxfrm.c b/libc/upstream-netbsd/libc/string/strxfrm.c deleted file mode 100644 index 42c2a244b..000000000 --- a/libc/upstream-netbsd/libc/string/strxfrm.c +++ /dev/null @@ -1,70 +0,0 @@ -/* $NetBSD: strxfrm.c,v 1.12 2012/06/25 22:32:46 abs Exp $ */ - -/*- - * Copyright (c) 1990, 1993 - * The Regents of the University of California. All rights reserved. - * - * This code is derived from software contributed to Berkeley by - * Chris Torek. - * - * 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. - * 3. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS 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 REGENTS 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 -#if defined(LIBC_SCCS) && !defined(lint) -#if 0 -static char sccsid[] = "@(#)strxfrm.c 8.1 (Berkeley) 6/4/93"; -#else -__RCSID("$NetBSD: strxfrm.c,v 1.12 2012/06/25 22:32:46 abs Exp $"); -#endif -#endif /* LIBC_SCCS and not lint */ - -#include -#include - -/* - * Transform src, storing the result in dst, such that - * strcmp() on transformed strings returns what strcoll() - * on the original untransformed strings would return. - */ -size_t -strxfrm(char *dst, const char *src, size_t n) -{ - size_t srclen, copysize; - - _DIAGASSERT(src != NULL); - - /* - * Since locales are unimplemented, this is just a copy. - */ - srclen = strlen(src); - if (n != 0) { - _DIAGASSERT(dst != NULL); - copysize = srclen < n ? srclen : n - 1; - (void)memcpy(dst, src, copysize); - dst[copysize] = 0; - } - return (srclen); -} diff --git a/libc/upstream-netbsd/netbsd-compat.h b/libc/upstream-netbsd/netbsd-compat.h deleted file mode 100644 index a52052a1a..000000000 --- a/libc/upstream-netbsd/netbsd-compat.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright (C) 2012 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _BIONIC_NETBSD_COMPAT_H_included -#define _BIONIC_NETBSD_COMPAT_H_included - -// NetBSD uses _DIAGASSERT to null-check arguments and the like. -#include -#define _DIAGASSERT(e) ((e) ? (void) 0 : __assert2(__FILE__, __LINE__, __func__, #e)) - -#endif