On Mon, Nov 7, 2011 at 11:21, Octavian Voicu octavian.voicu@gmail.com wrote:
2011/11/7 Frédéric Delanoy frederic.delanoy@gmail.com:
- /* Note: '==' can't be returned by WCMD_parameter since '=' is a separator */
- p = paramEnd + 1;
- while (*p == ' ' || *p == '\t')
- p++;
- if (!p || *p != '=' || !(p+1) || *(p+1) != '=')
- goto syntax_err;
- strcpyW(operator, eqeqW);
- p += strlenW(operator);
Hi,
This doesn't look general enough, I'm not sure how you want to handle the other operators.
With something like http://source.winehq.org/patches/data/80647 (just submitted) Basically, other operators can be retrieved normally using WCMD_parameter.
Wouldn't it be better to just find next space/tab (skip all non-whitespace chars) then assign the part of the string separated by whitespace to be the operator?
I actually do what you suggest through WCMD_parameter(*) usage. Only problem is '=' is itself a separator (ask MS why) so won't be returned by WCMD_parameter: separators are just skipped in the current implementation. One could add a special case in WCMD_parameter so it returns '==' as well, but I'm not sure it's the right thing to do.
With this approach you also don't need that syntax check there.
You do for some corner cases (lone ifs, ...)
Frédéric
* delimitor/separator processing is not fully complete right now. Martin Wilck's had submitted some patches fixing some weeks ago, but seems he lost interest in trying to got those in. I might try to get those in at some point, but they will probably need some modifications beforehand.