diff options
-rw-r--r-- | compat/Makefile.am | 2 | ||||
-rw-r--r-- | compat/Makefile.in | 2 | ||||
-rw-r--r-- | compat/strcasestr.c | 96 | ||||
-rw-r--r-- | compat/strchrnul.c | 16 | ||||
-rw-r--r-- | include/compat/strcasestr.h | 4 | ||||
-rw-r--r-- | include/compat/strchrnul.h | 4 | ||||
-rw-r--r-- | include/duser.h | 2 | ||||
-rw-r--r-- | src/Makefile.in | 1 |
8 files changed, 72 insertions, 55 deletions
diff --git a/compat/Makefile.am b/compat/Makefile.am index 3482755..88a2689 100644 --- a/compat/Makefile.am +++ b/compat/Makefile.am @@ -1,6 +1,6 @@ noinst_LIBRARIES = libdusercompat.a -AM_CPPFLAGS = -I$(top_srcdir)/include +AM_CPPFLAGS = -I$(top_srcdir)/include/compat libdusercompat_a_SOURCES= strcasestr.c \ strchrnul.c diff --git a/compat/Makefile.in b/compat/Makefile.in index 7faf34c..f54ed4e 100644 --- a/compat/Makefile.in +++ b/compat/Makefile.in @@ -186,7 +186,7 @@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ noinst_LIBRARIES = libdusercompat.a -AM_CPPFLAGS = -I$(top_srcdir)/include +AM_CPPFLAGS = -I$(top_srcdir)/include/compat libdusercompat_a_SOURCES = strcasestr.c \ strchrnul.c diff --git a/compat/strcasestr.c b/compat/strcasestr.c index 2312733..1238616 100644 --- a/compat/strcasestr.c +++ b/compat/strcasestr.c @@ -1,51 +1,61 @@ -/** -* duser - Manage MajorDomo lists -* Copyright (C) 2011 Joseph Hunkeler <jhunkeler@gmail.com, jhunk@stsci.edu> -* -* This file is part of duser. -* -* duser is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation, either version 3 of the License, or -* (at your option) any later version. -* -* duser is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with duser. If not, see <http://www.gnu.org/licenses/>. -**/ +/* $OpenBSD: strcasestr.c,v 1.3 2006/03/31 05:34:55 deraadt Exp $ */ +/* $NetBSD: strcasestr.c,v 1.2 2005/02/09 21:35:47 kleink 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 <stdio.h> -#include <string.h> #include <ctype.h> +#include <string.h> +#include "strcasestr.h" /* - * Locate substring - * - * The strstr() function finds the first occurrence of the substring needle - * in the string haystack. The terminating '\0' characters are not compared. - * - * The strcasestr() function is like strstr(), but ignores the - * case of both arguments. + * Find the first occurrence of find in s, ignore case. */ -char *strcasestr(const char *s, const char *find) +char * +strcasestr(const char *s, const char *find) { - char c, sc; - size_t len; + char c, sc; + size_t len; - if ((c = *find++) != 0) { - c = tolower((unsigned char)c); - len = strlen(find); - do { - do { - if ((sc = *s++) == 0) - return (NULL); - } while ((char)tolower((unsigned char)sc) != c); - } while (strncasecmp(s, find, len) != 0); - s--; - } - return ((char *)s); + if ((c = *find++) != 0) { + c = (char)tolower((unsigned char)c); + len = strlen(find); + do { + do { + if ((sc = *s++) == 0) + return (NULL); + } while ((char)tolower((unsigned char)sc) != c); + } while (strncasecmp(s, find, len) != 0); + s--; + } + return ((char *)s); } diff --git a/compat/strchrnul.c b/compat/strchrnul.c index ffc4f85..4781281 100644 --- a/compat/strchrnul.c +++ b/compat/strchrnul.c @@ -18,9 +18,9 @@ * along with duser. If not, see <http://www.gnu.org/licenses/>. **/ -#include <stdio.h> +#include <config.h> #include <string.h> -#include <ctype.h> +#include "strchrnul.h" /* * Locate a char in a string @@ -35,10 +35,12 @@ * if c is not found in s, then it returns a pointer to the * null byte at the end of s, rather than NULL. */ -char *strchrnul(const char* s, int c) +char * +strchrnul (const char *s, int c_in) { - while(*s && *s != c) - { - s++; - } + char c = c_in; + while (*s && (*s != c)) + s++; + + return (char *) s; } diff --git a/include/compat/strcasestr.h b/include/compat/strcasestr.h new file mode 100644 index 0000000..67917d0 --- /dev/null +++ b/include/compat/strcasestr.h @@ -0,0 +1,4 @@ +#ifndef STRCASESTR_H +#define STRCASESTR_H +char *strcasestr(const char *s, const char *find); +#endif diff --git a/include/compat/strchrnul.h b/include/compat/strchrnul.h new file mode 100644 index 0000000..ca12806 --- /dev/null +++ b/include/compat/strchrnul.h @@ -0,0 +1,4 @@ +#ifndef STRCHRNUL_H +#define STRCHRNUL_H +char *strchrnul(const char* s, int c); +#endif diff --git a/include/duser.h b/include/duser.h index d562b33..e955252 100644 --- a/include/duser.h +++ b/include/duser.h @@ -77,6 +77,4 @@ int user_cmd(const int argc, char* argv[]); int user_choice(char c); int user_add(const char* filename, const char* needle); int user_new_list(const char* fname); -char *strcasestr(const char *s, const char *find); -char *strchrnul(const char* s, int c); #endif diff --git a/src/Makefile.in b/src/Makefile.in index 15a1e3a..7f1b5d6 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -189,7 +189,6 @@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ -LIBCOMPAT_LDADDS = $(top_builddir)/compat/libdusercompat.a AM_CPPFLAGS = -I$(top_srcdir)/include duser_LDFLAGS = -L$(top_srcdir)/compat duser_SOURCES = duser.c \ |