mirror of https://github.com/ipxe/ipxe.git
88 lines
2.1 KiB
C
88 lines
2.1 KiB
C
/*
|
|
* 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
|