1 /* Copyright (C) 1991, 1994, 1996-1997, 2002-2003, 2005-2006, 2009-2021 Free 2 * Software Foundation, Inc. 3 4 NOTE: The canonical source of this file is maintained with the GNU C Library. 5 Bugs can be reported to bug-glibc@gnu.org. 6 7 This file is free software: you can redistribute it and/or modify 8 it under the terms of the GNU Lesser General Public License as 9 published by the Free Software Foundation; either version 3 of the 10 License, or (at your option) any later version. 11 12 This file is distributed in the hope that it will be useful, 13 but WITHOUT ANY WARRANTY; without even the implied warranty of 14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 GNU Lesser General Public License for more details. 16 17 You should have received a copy of the GNU Lesser General Public License 18 along with this program. If not, see <https://www.gnu.org/licenses/>. */ 19 20 #include <config.h> 21 22 #include <stddef.h> 23 #include <string.h> 24 25 #if _LIBC 26 # undef strcspn 27 #endif 28 29 /* Return the length of the maximum initial segment of S 30 which contains no characters from REJECT. */ 31 size_t 32 strcspn (const char *s, const char *reject) /* */ 33 { 34 size_t count = 0; 35 36 while (*s != '\0') 37 if (strchr (reject, *s++) == NULL) 38 ++count; 39 else 40 return count; 41 42 return count; 43 }