[asterisk-dev] [Code Review] 3989: utils: Create ast_strsep function that ignores separators inside quotes.
opticron
reviewboard at asterisk.org
Mon Sep 15 14:30:32 CDT 2014
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviewboard.asterisk.org/r/3989/#review13305
-----------------------------------------------------------
branches/12/include/asterisk/strings.h
<https://reviewboard.asterisk.org/r/3989/#comment23781>
This needs to specify that it can also return NULL if the quotes nest too deep.
branches/12/tests/test_strings.c
<https://reviewboard.asterisk.org/r/3989/#comment23782>
Drop the indentation level here.
branches/12/tests/test_strings.c
<https://reviewboard.asterisk.org/r/3989/#comment23783>
Idem.
- opticron
On Sept. 12, 2014, 3:04 p.m., George Joseph wrote:
>
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviewboard.asterisk.org/r/3989/
> -----------------------------------------------------------
>
> (Updated Sept. 12, 2014, 3:04 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/tests/test_strings.c 422963
> 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
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-dev/attachments/20140915/3c37af91/attachment.html>
More information about the asterisk-dev
mailing list