From 7e0f021a9aec35fd8e6725e87e3313b101d26f5e Mon Sep 17 00:00:00 2001 From: Tobias Klauser Date: Sun, 27 Jan 2008 11:37:44 +0100 Subject: Initial import (2.0.2-6) --- reference/C/CONTRIB/SNIP/stptok.c | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100755 reference/C/CONTRIB/SNIP/stptok.c (limited to 'reference/C/CONTRIB/SNIP/stptok.c') diff --git a/reference/C/CONTRIB/SNIP/stptok.c b/reference/C/CONTRIB/SNIP/stptok.c new file mode 100755 index 0000000..25c7faf --- /dev/null +++ b/reference/C/CONTRIB/SNIP/stptok.c @@ -0,0 +1,38 @@ +/* +** stptok() -- public domain by Ray Gardner, modified by Bob Stout +** +** You pass this function a string to parse, a buffer to receive the +** "token" that gets scanned, the length of the buffer, and a string of +** "break" characters that stop the scan. It will copy the string into +** the buffer up to any of the break characters, or until the buffer is +** full, and will always leave the buffer null-terminated. It will +** return a pointer to the first non-breaking character after the one +** that stopped the scan. +*/ + +#include +#include + +char *stptok(const char *s, char *tok, size_t toklen, char *brk) +{ + char *lim, *b; + + if (!*s) + return NULL; + + lim = tok + toklen - 1; + while ( *s && tok < lim ) + { + for ( b = brk; *b; b++ ) + { + if ( *s == *b ) + { + *tok = 0; + return (char *)s; + } + } + *tok++ = *s++; + } + *tok = 0; + return (char *)s; +} -- cgit v1.2.3-54-g00ecf