In mailutils, we use the function argcv_get: int argcv_get (const char *string, const char *delim, const char *cmnt, int *argc, char ***argv);
which breaks the `string' according to the delimiters in `delim', eventually ignoring anything after the comment starter `cmnt'. It fills in the array `argv' with the collected tokens and stores the number of them in the memory location pointed to by `argc'. The array `argv' is NULL terminated. Quotes and backslashes within `string' are handled in shell-like fashion, i.e. "the \"new string\"" will produce two tokens "the" and "new string". The function returns 0 on success. Both `delim' and `cmnt' can be NULL. It seems to do just what the proposed split module should be doing, doesn't it? Regards, Sergey