From a9e6c59d87110ebef11d81379784a36d5f1cca21 Mon Sep 17 00:00:00 2001 From: uch Date: Fri, 6 Aug 2004 17:23:14 +0000 Subject: [PATCH] move string manupurate routine to libsa --- sys/arch/hpc/stand/libsa/libsa.config | 5 +- sys/arch/hpc/stand/libsa/libsa_string.h | 49 ++++++++++++++ sys/arch/hpc/stand/libsa/stricmp.cpp | 57 ++++++++++++++++ sys/arch/hpc/stand/libsa/strtok.cpp | 87 +++++++++++++++++++++++++ sys/arch/hpc/stand/libsa/tolower.cpp | 56 ++++++++++++++++ 5 files changed, 253 insertions(+), 1 deletion(-) create mode 100644 sys/arch/hpc/stand/libsa/libsa_string.h create mode 100644 sys/arch/hpc/stand/libsa/stricmp.cpp create mode 100644 sys/arch/hpc/stand/libsa/strtok.cpp create mode 100644 sys/arch/hpc/stand/libsa/tolower.cpp diff --git a/sys/arch/hpc/stand/libsa/libsa.config b/sys/arch/hpc/stand/libsa/libsa.config index 735d622a40c8..373d4dedcce5 100644 --- a/sys/arch/hpc/stand/libsa/libsa.config +++ b/sys/arch/hpc/stand/libsa/libsa.config @@ -1,5 +1,5 @@ #!/bin/sh -# $NetBSD: libsa.config,v 1.3 2004/06/10 15:59:21 uch Exp $ +# $NetBSD: libsa.config,v 1.4 2004/08/06 17:23:14 uch Exp $ # config file/script to generate project file (.dsp) for libsa @@ -23,6 +23,9 @@ SRCFILE_LIST=' alloc.c winblk.c winprintf.c + stricmp.cpp + strtok.cpp + tolower.cpp ' CPPDEF_LIST=' _STANDALONE diff --git a/sys/arch/hpc/stand/libsa/libsa_string.h b/sys/arch/hpc/stand/libsa/libsa_string.h new file mode 100644 index 000000000000..a7f6662de429 --- /dev/null +++ b/sys/arch/hpc/stand/libsa/libsa_string.h @@ -0,0 +1,49 @@ +/* $NetBSD: libsa_string.h,v 1.1 2004/08/06 17:23:14 uch Exp $ */ + +/*- + * Copyright (c) 2004 The NetBSD Foundation, Inc. + * All rights reserved. + * + * This code is derived from software contributed to The NetBSD Foundation + * by UCHIYAMA Yasushi. + * + * 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. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the NetBSD + * Foundation, Inc. and its contributors. + * 4. Neither the name of The NetBSD Foundation 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 NETBSD FOUNDATION, INC. 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 FOUNDATION 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. + */ + +#define LIBSA_NAMESPACE_BEGIN namespace libsa { +#define LIBSA_NAMESPACE_END } + +LIBSA_NAMESPACE_BEGIN +__BEGIN_DECLS +char tolower(char); +char *strtok(char *, const char *); +int stricmp(const char *, const char *); +__END_DECLS +LIBSA_NAMESPACE_END + diff --git a/sys/arch/hpc/stand/libsa/stricmp.cpp b/sys/arch/hpc/stand/libsa/stricmp.cpp new file mode 100644 index 000000000000..d8c36cebb0aa --- /dev/null +++ b/sys/arch/hpc/stand/libsa/stricmp.cpp @@ -0,0 +1,57 @@ +/* $NetBSD: stricmp.cpp,v 1.1 2004/08/06 17:23:14 uch Exp $ */ + +/*- + * Copyright (c) 2004 The NetBSD Foundation, Inc. + * All rights reserved. + * + * This code is derived from software contributed to The NetBSD Foundation + * by UCHIYAMA Yasushi. + * + * 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. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the NetBSD + * Foundation, Inc. and its contributors. + * 4. Neither the name of The NetBSD Foundation 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 NETBSD FOUNDATION, INC. 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 FOUNDATION 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 +#include +#include + +LIBSA_NAMESPACE_BEGIN +__BEGIN_DECLS +int +stricmp(const char *s1, const char *s2) +{ + + while (libsa::tolower(*s1) == libsa::tolower(*s2++)) + if (*s1++ == '\0') + return 0; + + return libsa::tolower(*s1) - libsa::tolower(*--s2); +} +__END_DECLS +LIBSA_NAMESPACE_END + diff --git a/sys/arch/hpc/stand/libsa/strtok.cpp b/sys/arch/hpc/stand/libsa/strtok.cpp new file mode 100644 index 000000000000..f5c77dd5ef2f --- /dev/null +++ b/sys/arch/hpc/stand/libsa/strtok.cpp @@ -0,0 +1,87 @@ +/* $NetBSD: strtok.cpp,v 1.1 2004/08/06 17:23:14 uch Exp $ */ + +/* + * Copyright (c) 1988, 1993 + * The Regents of the University of California. 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. + * 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 +#include +#include +#include + +LIBSA_NAMESPACE_BEGIN +__BEGIN_DECLS +char * +strtok(char *s, const char *delim) +{ + const char *spanp; + int c, sc; + char *tok; + static char *last; + + if (s == NULL && (s = last) == NULL) + return (NULL); + + /* + * Skip (span) leading delimiters (s += strspn(s, delim), sort of). + */ +cont: + c = *s++; + for (spanp = delim; (sc = *spanp++) != 0;) { + if (c == sc) + goto cont; + } + + if (c == 0) { /* no non-delimiter characters */ + last = NULL; + return (NULL); + } + tok = s - 1; + + /* + * Scan token (scan for delimiters: s += strcspn(s, delim), sort of). + * Note that delim must have one NUL; we stop if we see that, too. + */ + for (;;) { + c = *s++; + spanp = delim; + do { + if ((sc = *spanp++) == c) { + if (c == 0) + s = NULL; + else + s[-1] = 0; + last = s; + return (tok); + } + } while (sc != 0); + } + /* NOTREACHED */ +} +__END_DECLS +LIBSA_NAMESPACE_END diff --git a/sys/arch/hpc/stand/libsa/tolower.cpp b/sys/arch/hpc/stand/libsa/tolower.cpp new file mode 100644 index 000000000000..077b2f2f6c43 --- /dev/null +++ b/sys/arch/hpc/stand/libsa/tolower.cpp @@ -0,0 +1,56 @@ +/* $NetBSD: tolower.cpp,v 1.1 2004/08/06 17:23:14 uch Exp $ */ + +/*- + * Copyright (c) 2004 The NetBSD Foundation, Inc. + * All rights reserved. + * + * This code is derived from software contributed to The NetBSD Foundation + * by UCHIYAMA Yasushi. + * + * 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. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the NetBSD + * Foundation, Inc. and its contributors. + * 4. Neither the name of The NetBSD Foundation 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 NETBSD FOUNDATION, INC. 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 FOUNDATION 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 +#include +#include + +LIBSA_NAMESPACE_BEGIN +__BEGIN_DECLS +char +tolower(char c) +{ + + if (c >= 'A' && c <= 'Z') + return c - 'A' + 'a'; + + return c; +} +__END_DECLS +LIBSA_NAMESPACE_END +