----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviewboard.asterisk.org/r/3989/#review13284 -----------------------------------------------------------
This new string parsing function could use unit tests. branches/12/main/utils.c <https://reviewboard.asterisk.org/r/3989/#comment23769> The way this is written, a quoted section could be opened with ' and closed with " or vice-versa. Is that a desired behavior? - opticron On Sept. 10, 2014, 6:45 p.m., George Joseph wrote: > > ----------------------------------------------------------- > This is an automatically generated e-mail. To reply, visit: > https://reviewboard.asterisk.org/r/3989/ > ----------------------------------------------------------- > > (Updated Sept. 10, 2014, 6:45 p.m.) > > > Review request for Asterisk Developers and rmudgett. > > > Repository: Asterisk > > > Description > ------- > > I'm going to need this for my imminent manager and config > enhancements but I thought I'd post this separately. > > /*! > \brief Act like strsep but ignore separators inside quotes. > \param s Pointer to address of the the string to be processed. > Will be modified and can't be constant. > \param sep A single character delimiter. > \param flags controls whitespace and quote stripping. > \return The next token or NULL if done. > > This function acts like strsep with three exceptions... > The separator is a single character instead of a string. > Separators inside quotes are treated literally instead of like separators. > You can elect to have leading and trailing whitespace and quotes > stripped from the result. > > Like strsep, ast_strsep maintains no internal state and you can call it > recursively using different separators on the same storage. > > Also like strsep, for consistent results, consecutive separators are not > collapsed so you may get an empty string as a valid result. > > Examples: > \code > char *mystr = ast_strdupa("abc=def,ghi='zzz=yyy,456',jkl"); > char *token, *token2, *token3; > > while((token = ast_strsep(&mystr, ',', AST_SEP_STRIP))) { > // 1st token will be aaa=def > // 2nd token will be ghi='zzz=yyy,456' > while((token2 = ast_strsep(&token, '=', AST_SEP_STRIP))) { > // 1st token2 will be ghi > // 2nd token2 will be zzz=yyy,456 > while((token3 = ast_strsep(&token2, ',', > AST_SEP_STRIP))) { > // 1st token3 will be zzz=yyy > // 2nd token3 will be 456 > // and so on > } > } > // 3rd token will be jkl > } > > \endcode > */ > char *ast_strsep(char **s, const char sep, enum ast_strsep_flags flags); > > > Diffs > ----- > > branches/12/main/utils.c 422963 > branches/12/include/asterisk/strings.h 422963 > > Diff: https://reviewboard.asterisk.org/r/3989/diff/ > > > Testing > ------- > > > Thanks, > > George Joseph > >
-- _____________________________________________________________________ -- Bandwidth and Colocation Provided by http://www.api-digital.com -- asterisk-dev mailing list To UNSUBSCRIBE or update options visit: http://lists.digium.com/mailman/listinfo/asterisk-dev