From 589ffedd3a37fa331e7dd9cc07c03325dc0f2389 Mon Sep 17 00:00:00 2001 From: Unknown <> Date: Tue, 30 Jan 2007 23:38:19 +0000 Subject: [PATCH] add files for 2007-01-30T23:38:19Z --- src/ansilib/strtok.c | 67 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 src/ansilib/strtok.c diff --git a/src/ansilib/strtok.c b/src/ansilib/strtok.c new file mode 100644 index 0000000..973ba4e --- /dev/null +++ b/src/ansilib/strtok.c @@ -0,0 +1,67 @@ +/* ======================================================================== + * Copyright 1988-2007 University of Washington + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * + * ======================================================================== + */ + +/* + * Program: String return successive tokens + * + * Author: Mark Crispin + * Networks and Distributed Computing + * Computing & Communications + * University of Washington + * Administration Building, AG-44 + * Seattle, WA 98195 + * + * Date: 11 May 1989 + * Last Edited: 30 January 2007 + */ + +/* Find token in string + * Accepts: source pointer or NIL to use previous source + * vector of token delimiters pointer + * Returns: pointer to next token + */ + +static char *state = NIL; /* string to locate tokens */ + +char *strtok (char *s,char *ct) +{ + return strtok_r (s,ct,&state);/* jacket into reentrant routine */ +} + + +/* Find token in string (reentrant) + * Accepts: source pointer or NIL to use previous source + * vector of token delimiters pointer + * returned state pointer + * Returns: pointer to next token + */ + +char *strtok_r (char *s,char *ct,char **r) +{ + char *t,*ts; + if (!s) s = *r; /* use previous token if none specified */ + *r = NIL; /* default to no returned state */ + if (!(s && *s)) return NIL; /* no tokens left */ + /* find any leading delimiters */ + do for (t = ct, ts = NIL; *t; t++) if (*t == *s) { + if (*(ts = ++s)) break; /* yes, restart search if more in string */ + return NIL; /* else no more tokens */ + } while (ts); /* continue until no more leading delimiters */ + /* can we find a new delimiter? */ + for (ts = s; *ts; ts++) for (t = ct; *t; t++) if (*t == *ts) { + *ts++ = '\0'; /* yes, tie off token at that point */ + *r = ts; /* save subsequent tokens for future call */ + return s; /* return our token */ + } + return s; /* return final token */ +} -- 2.40.0