diff options
Diffstat (limited to 'libc/upstream-netbsd')
| -rw-r--r-- | libc/upstream-netbsd/README.txt | 9 | ||||
| -rw-r--r-- | libc/upstream-netbsd/libc/string/strxfrm.c | 70 | ||||
| -rw-r--r-- | libc/upstream-netbsd/netbsd-compat.h | 24 |
3 files changed, 103 insertions, 0 deletions
diff --git a/libc/upstream-netbsd/README.txt b/libc/upstream-netbsd/README.txt new file mode 100644 index 0000000..86af6eb --- /dev/null +++ b/libc/upstream-netbsd/README.txt @@ -0,0 +1,9 @@ +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 new file mode 100644 index 0000000..42c2a24 --- /dev/null +++ b/libc/upstream-netbsd/libc/string/strxfrm.c @@ -0,0 +1,70 @@ +/* $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 <sys/cdefs.h> +#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 <assert.h> +#include <string.h> + +/* + * 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 new file mode 100644 index 0000000..a52052a --- /dev/null +++ b/libc/upstream-netbsd/netbsd-compat.h @@ -0,0 +1,24 @@ +/* + * 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 <assert.h> +#define _DIAGASSERT(e) ((e) ? (void) 0 : __assert2(__FILE__, __LINE__, __func__, #e)) + +#endif |
