Added a strsep() to our BSD compatibility library.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30022 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Ingo Weinhold 2009-04-08 10:57:46 +00:00
parent ff81d306d4
commit a3c74fcd8c
3 changed files with 52 additions and 0 deletions

View File

@ -0,0 +1,22 @@
/*
* Copyright 2009, Haiku, Inc. All Rights Reserved.
* Distributed under the terms of the MIT License.
*/
#ifndef _BSD_STRING_H_
#define _BSD_STRING_H_
#include_next <string.h>
#ifdef __cplusplus
extern "C" {
#endif
char* strsep(char** string, const char* delimiters);
#ifdef __cplusplus
}
#endif
#endif /* _BSD_STRING_H_ */

View File

@ -13,6 +13,7 @@ SharedLibrary libbsd.so :
progname.c progname.c
pty.cpp pty.cpp
signal.c signal.c
string.cpp
stringlist.c stringlist.c
unvis.c unvis.c
usershell.c usershell.c

29
src/libs/bsd/string.cpp Normal file
View File

@ -0,0 +1,29 @@
/*
* Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
* Distributed under the terms of the MIT License.
*/
#include <string.h>
char*
strsep(char** string, const char* delimiters)
{
if (*string == NULL)
return NULL;
// find the end of the token
char* token = *string;
char* end = token;
while (*end != '\0' && strchr(delimiters, *end) == NULL)
end++;
// terminate the token and update the string pointer
if (*end != '\0') {
*end = '\0';
*string = end + 1;
} else
*string = NULL;
return token;
}