From: Todd C. Miller Date: Tue, 26 Oct 2004 22:09:22 +0000 (+0000) Subject: We won't be using lsearch() any longer. X-Git-Tag: SUDO_1_7_0~870 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=6725bb2e5318c507b8edf94eb54d6289d11be29e;p=sudo We won't be using lsearch() any longer. --- diff --git a/configure.in b/configure.in index 9fd96e211..03ec6d324 100644 --- a/configure.in +++ b/configure.in @@ -1699,8 +1699,6 @@ AC_TRY_COMPILE([#include ], [int i = GLOB_BRACE | GLOB_TILDE; (void)i;], AC_CHECK_FUNCS(lockf flock, [break]) AC_CHECK_FUNCS(waitpid wait3, [break]) AC_CHECK_FUNCS(innetgr _innetgr, [AC_CHECK_FUNCS(getdomainname) [break]]) -AC_CHECK_FUNCS(lsearch, , [AC_CHECK_LIB([compat], [lsearch], [AC_CHECK_HEADER([search.h], [AC_DEFINE(HAVE_LSEARCH)] -[LIBS="${LIBS} -lcompat"], [AC_LIBOBJ(lsearch)], [-])], [AC_LIBOBJ(lsearch)])]) AC_CHECK_FUNCS(utimes, [AC_CHECK_FUNCS(futimes futimesat, [break])], [AC_CHECK_FUNCS(futime) AC_LIBOBJ(utimes)]) SUDO_FUNC_FNMATCH([AC_DEFINE(HAVE_FNMATCH)], [AC_LIBOBJ(fnmatch)]) SUDO_FUNC_ISBLANK diff --git a/emul/search.h b/emul/search.h deleted file mode 100644 index d51130265..000000000 --- a/emul/search.h +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright (c) 1999 Todd C. Miller - * - * Permission to use, copy, modify, and distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * $Sudo$ - */ - -#ifndef _SEARCH_H -#define _SEARCH_H - -VOID *lfind __P((const VOID *, const VOID *, size_t *, size_t, - int (*)(const VOID *, const VOID *))); -VOID *lsearch __P((const VOID *, const VOID *, size_t *, size_t, - int (*)(const VOID *, const VOID *))); - -#endif /* _SEARCH_H */ diff --git a/lsearch.c b/lsearch.c deleted file mode 100644 index ae3ea0066..000000000 --- a/lsearch.c +++ /dev/null @@ -1,102 +0,0 @@ -/* - * Copyright (c) 1989, 1993 - * The Regents of the University of California. All rights reserved. - * - * This code is derived from software contributed to Berkeley by - * Roger L. Snyder. - * - * 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 "config.h" - -#include -#include -#ifdef HAVE_UNISTD_H -# include -#endif /* HAVE_UNISTD_H */ - -#include "compat.h" -#include "emul/search.h" - -#if defined(LIBC_SCCS) && !defined(lint) -static const char sccsid[] = "@(#)lsearch.c 8.1 (Berkeley) 6/4/93"; -#endif /* LIBC_SCCS and not lint */ -#ifndef lint -static const char rcsid[] = "$Sudo$"; -#endif /* lint */ - -typedef int (*cmp_fn_t) __P((const VOID *, const VOID *)); -static VOID *linear_base __P((const VOID *, const VOID *, size_t *, size_t, - cmp_fn_t, int)); - -VOID * -lsearch(key, base, nelp, width, compar) - const VOID *key, *base; - size_t *nelp, width; - cmp_fn_t compar; -{ - return(linear_base(key, base, nelp, width, compar, 1)); -} - -VOID * -lfind(key, base, nelp, width, compar) - const VOID *key, *base; - size_t *nelp, width; - cmp_fn_t compar; -{ - return(linear_base(key, base, nelp, width, compar, 0)); -} - -static VOID * -linear_base(key, base, nelp, width, compar, add_flag) - const VOID *key, *base; - size_t *nelp, width; - cmp_fn_t compar; - int add_flag; -{ - /* Strict ANSI does not allow pointer arithmetic on void *'s */ - const char *element, *end; - - end = (const char *) base + *nelp * width; - for (element = (const char *) base; element < end; element += width) - if (!compar(key, (VOID *) element)) /* key found */ - return((VOID *) element); - if (!add_flag) /* key not found */ - return(NULL); - - /* - * The UNIX System User's Manual, 1986 edition claims that - * a NULL pointer is returned by lsearch with errno set - * appropriately, if there is not enough room in the table - * to add a new item. This can't be done as none of these - * routines have any method of determining the size of the - * table. This comment was isn't in the 1986-87 System V - * manual. - */ - ++*nelp; - (void) memcpy((VOID *)end, key, width); - return((VOID *) end); -}