| /* | |
| * Copyright (C) 1991, 1992 Linus Torvalds | |
| * Copyright (C) 2004 Tobias Lorenz | |
| * | |
| * string handling functions | |
| * based on linux/lib/string.c | |
| * | |
| * This program is free software; you can redistribute it and/or modify | |
| * it under the terms of the GNU General Public License version 2 as | |
| * published by the Free Software Foundation. | |
| */ | |
| FILE_LICENCE ( GPL2_ONLY ); | |
| /* | |
| * stupid library routines.. The optimized versions should generally be found | |
| * as inline code in <asm-xx/string.h> | |
| * | |
| * These are buggy as well.. | |
| * | |
| * * Fri Jun 25 1999, Ingo Oeser <ioe@informatik.tu-chemnitz.de> | |
| * - Added strsep() which will replace strtok() soon (because strsep() is | |
| * reentrant and should be faster). Use only strsep() in new code, please. | |
| */ | |
| /* | |
| * these are the standard string functions that are currently not used by | |
| * any code in etherboot. put into a separate file to avoid linking them in | |
| * with the rest of string.o | |
| * if anything ever does want to use a function of these, consider moving | |
| * the function in question back into string.c | |
| */ | |
| #include <stdint.h> | |
| #include <stdlib.h> | |
| #include <string.h> | |
| #include <ctype.h> | |
| /* *** FROM string.c *** */ | |
| #ifndef __HAVE_ARCH_STRPBRK | |
| /** | |
| * strpbrk - Find the first occurrence of a set of characters | |
| * @cs: The string to be searched | |
| * @ct: The characters to search for | |
| */ | |
| char * strpbrk(const char * cs,const char * ct) | |
| { | |
| const char *sc1,*sc2; | |
| for( sc1 = cs; *sc1 != '\0'; ++sc1) { | |
| for( sc2 = ct; *sc2 != '\0'; ++sc2) { | |
| if (*sc1 == *sc2) | |
| return (char *) sc1; | |
| } | |
| } | |
| return NULL; | |
| } | |
| #endif | |
| #ifndef __HAVE_ARCH_STRSEP | |
| /** | |
| * strsep - Split a string into tokens | |
| * @s: The string to be searched | |
| * @ct: The characters to search for | |
| * | |
| * strsep() updates @s to point after the token, ready for the next call. | |
| * | |
| * It returns empty tokens, too, behaving exactly like the libc function | |
| * of that name. In fact, it was stolen from glibc2 and de-fancy-fied. | |
| * Same semantics, slimmer shape. ;) | |
| */ | |
| char * strsep(char **s, const char *ct) | |
| { | |
| char *sbegin = *s, *end; | |
| if (sbegin == NULL) | |
| return NULL; | |
| end = strpbrk(sbegin, ct); | |
| if (end) | |
| *end++ = '\0'; | |
| *s = end; | |
| return sbegin; | |
| } | |
| #endif |