fsf address update
[gnulib.git] / lib / strtok_r.h
index 1535209..36ae7db 100644 (file)
 /* Get strtok_r declaration, if available.  */
 #include <string.h>
 
+/* Parse S into tokens separated by characters in DELIM.
+   If S is NULL, the saved pointer in SAVE_PTR is used as
+   the next starting point.  For example:
+       char s[] = "-abc-=-def";
+       char *sp;
+       x = strtok_r(s, "-", &sp);      // x = "abc", sp = "=-def"
+       x = strtok_r(NULL, "-=", &sp);  // x = "def", sp = NULL
+       x = strtok_r(NULL, "=", &sp);   // x = NULL
+               // s = "abc\0-def\0"
+
+   This is a variant of strtok() that is multithread-safe.
+
+   For the POSIX documentation for this function, see:
+   http://www.opengroup.org/onlinepubs/009695399/functions/strtok.html
+
+   Caveat: It modifies the original string.
+   Caveat: These functions cannot be used on constant strings.
+   Caveat: The identity of the delimiting character is lost.
+   Caveat: It doesn't work with multibyte strings unless all of the delimiter
+           characters are ASCII characters < 0x30.
+
+   See also strsep().
+*/
 #if defined HAVE_DECL_STRTOK_R && !HAVE_DECL_STRTOK_R
-char *strtok_r(char *restrict s, const char *restrict sep,
-              char **restrict lasts);
+extern char *strtok_r(char *restrict s, const char *restrict sep,
+                     char **restrict lasts);
 #endif
 
 #endif /* STRTOK_R_H */