Re: ScriptInterp::getMember VS. ScriptCommand::getMember

"Zhang Le" <[email protected]> Fri, 29 Sep 2006 17:17:12 +0800
Newsgroups gmane.comp.gnu.ccscript.devel
Message-ID <[email protected]>
------=_Part_5860_14222542.1159521432669
Content-Type: multipart/alternative; 
	boundary="----=_Part_5861_30053035.1159521432669"

------=_Part_5861_30053035.1159521432669
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

On 9/29/06, Zhang Le <[email protected]> wrote:
>
> These two getMember's behavior is different.
> For example. for "register.sip"
> ScriptInterp::getMember's result doesn't include the leading dot, ie. the
> result is "sip"
> ScriptCommand::getMember's result include the leading dot, ie. the result
> is ".sip"
>
> Unfortunately, this difference is overlooked sometimes.
> For example, in bayonne2-1.5.28 src/checks.cpp, chkSlog function assumes
> ScriptCommand::getMember's result doesn't include the leading dot, which is
> apparently wrong.
>
> Although we could fix the problem by modifying chkSlog(), I think the
> better solution is make the behavior of the two getMember consistent with
> each other.
>
> So I propose this ccscript3-ScriptCommand-getMember.patch :
>
> --- src/command.cpp.orig        2006-09-25 16:28:24.000000000 +0800
> +++ src/command.cpp     2006-09-25 16:28:56.000000000 +0800
> @@ -383,7 +383,12 @@
>
>  const char *ScriptCommand::getMember(Line *line)
>  {
> -       return strchr(line->cmd, '.');
> +       const char *cp = strchr(line->cmd, '.');
> +
> +       if(cp)
> +               ++cp;
> +
> +       return cp;
>  }
>
>  const char *ScriptCommand::getOption(Line *line, unsigned *idx)


Please ignore this patch.
Because I found that there are many functions that assume getMember's result
contains the leading dot.
So I made two patches, one for ccscript3-1.0.9, the other for bayonn2-1.5.28.

These two patches could change the behavior of ScriptCommand::getMember and
solve all the problems caused by the semantic change of
ScriptCommand::getMember.
Please check the attachment.

-- 
Zhang Le, Robert
Linux Engineer/Trainer
http://zhllg.blogspot.com
http://zh.gentoo-wiki.com
http://savannah.nongnu.org/projects/pgubook
http://groups.google.com/group/gentoo-china
http://groups.google.com/group/szlug

------=_Part_5861_30053035.1159521432669
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

On 9/29/06, <b class="gmail_sendername">Zhang Le</b> &lt;<a href="mailto:[email protected]">[email protected]</a>&gt; wrote:<div><span class="gmail_quote"></span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
These two getMember's behavior is different.<br>For example. for &quot;register.sip&quot; <br>ScriptInterp::getMember's result doesn't include the leading dot, ie. the result is &quot;sip&quot;<br>ScriptCommand::getMember's result include the leading dot, ie. the result is &quot;.sip&quot;
<br><br clear="all">Unfortunately, this difference is overlooked sometimes.<br>For example, in bayonne2-1.5.28 src/checks.cpp, chkSlog function assumes ScriptCommand::getMember's result doesn't include the leading dot, which is apparently wrong.
<br><br>Although we could fix the problem by modifying chkSlog(), I think the better solution is make the behavior of the two getMember consistent with each other.<br><br>So I propose this ccscript3-ScriptCommand-getMember.patch

:<br><br>--- src/command.cpp.orig&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2006-09-25 16:28:24.000000000 +0800<br>+++ src/command.cpp&nbsp;&nbsp;&nbsp;&nbsp; 2006-09-25 16:28:56.000000000 +0800<br>@@ -383,7 +383,12 @@<br><br>&nbsp;const char *ScriptCommand::getMember(Line *line)
<br>
&nbsp;{<br>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return strchr(line-&gt;cmd, '.');<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; const char *cp = strchr(line-&gt;cmd, '.');<br>+<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(cp)<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ++cp;<br>+<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return cp;<br>&nbsp;}<br><br>&nbsp;const char *ScriptCommand::getOption(Line *line, unsigned *idx)
</blockquote><div><br>Please ignore this patch.<br>Because I found that there are many functions that assume getMember's result contains the leading dot.<br>
So I made two patches, one for ccscript3-1.0.9, the other for bayonn2-1.5.28. <br>These two patches could change the behavior of ScriptCommand::getMember and solve all the problems caused by the semantic change of ScriptCommand::getMember.
<br>Please check the attachment.<br clear="all"></div></div><br>-- <br>Zhang Le, Robert<br>Linux Engineer/Trainer<br><a href="http://zhllg.blogspot.com">http://zhllg.blogspot.com</a><br><a href="http://zh.gentoo-wiki.com">
http://zh.gentoo-wiki.com</a><br><a href="http://savannah.nongnu.org/projects/pgubook">http://savannah.nongnu.org/projects/pgubook</a><br><a href="http://groups.google.com/group/gentoo-china">http://groups.google.com/group/gentoo-china
</a><br><a href="http://groups.google.com/group/szlug">http://groups.google.com/group/szlug</a>

------=_Part_5861_30053035.1159521432669--

------=_Part_5860_14222542.1159521432669
Content-Type: text/x-patch; name=ccscript3-ScriptCommand-getMember.patch; 
	charset=ANSI_X3.4-1968
Content-Transfer-Encoding: base64
X-Attachment-Id: f_esocp7yr
Content-Disposition: attachment;
	filename="ccscript3-ScriptCommand-getMember.patch"

ZGlmZiAtdXJOIGNjc2NyaXB0My0xLjAuOS5vcmlnL3NyYy9jaGVja3MuY3BwIGNjc2NyaXB0My0x
LjAuOS9zcmMvY2hlY2tzLmNwcAotLS0gY2NzY3JpcHQzLTEuMC45Lm9yaWcvc3JjL2NoZWNrcy5j
cHAJMjAwNi0wNS0wNCAwMToyNjoxNS4wMDAwMDAwMDAgKzA4MDAKKysrIGNjc2NyaXB0My0xLjAu
OS9zcmMvY2hlY2tzLmNwcAkyMDA2LTA5LTI5IDE2OjQzOjU2LjAwMDAwMDAwMCArMDgwMApAQCAt
NDAzLDcgKzQwMyw3IEBACiB7CiAgICAgICAgIGNvbnN0IGNoYXIgKmNwID0gZ2V0TWVtYmVyKGxp
bmUpOwogCi0gICAgICAgIGlmKGNwICYmICFpc2RpZ2l0KGNwWzFdKSkKKyAgICAgICAgaWYoY3Ag
JiYgIWlzZGlnaXQoY3BbMF0pKQogCXsKICAgICAgICAgICAgICAgICBjcCA9IGNoa1Byb3BlcnR5
KGxpbmUsIGltZyk7CiAKQEAgLTQxMSw3ICs0MTEsNyBAQAogCQkJcmV0dXJuIGNwOwogCX0KIAot
CWlmKGNwICYmIGF0b2koKytjcCkgPiA2KQorCWlmKGNwICYmIGF0b2koY3ApID4gNikKIAkJcmV0
dXJuICJudW1iZXJzIG9ubHkgdmFsaWQgdG8gNiBkZWNpbWFsIHBsYWNlcyI7CiAKIAlpZihoYXNL
ZXl3b3JkcyhsaW5lKSkKQEAgLTQzNSw3ICs0MzUsNyBAQAogewogCWNvbnN0IGNoYXIgKmNwID0g
Z2V0TWVtYmVyKGxpbmUpOwogCi0JaWYoY3AgJiYgIWlzZGlnaXQoY3BbMV0pKQorCWlmKGNwICYm
ICFpc2RpZ2l0KGNwWzBdKSkKIAkJcmV0dXJuICJtZW1iZXIgd2hlbiB1c2VkIG11c3QgYmUgc2l6
ZSI7CiAKIAlpZighdXNlS2V5d29yZHMobGluZSwgIj1zaXplIikpCkBAIC00OTQsNyArNDk0LDcg
QEAKIHsKICAgICAgICAgY29uc3QgY2hhciAqY3AgPSBnZXRNZW1iZXIobGluZSk7CiAKLSAgICAg
ICAgaWYoY3AgJiYgIWlzZGlnaXQoY3BbMV0pKQorICAgICAgICBpZihjcCAmJiAhaXNkaWdpdChj
cFswXSkpCiAJewogICAgICAgICAgICAgICAgIGNwID0gY2hrUHJvcGVydHkobGluZSwgaW1nKTsK
IAkJaWYoIWNwKQpAQCAtNTE0LDEwICs1MTQsMTAgQEAKIHsKIAljb25zdCBjaGFyICpjcCA9IGdl
dE1lbWJlcihsaW5lKTsKIAotCWlmKGNwICYmICFpc2RpZ2l0KGNwWzFdKSkKKwlpZihjcCAmJiAh
aXNkaWdpdChjcFswXSkpCiAJCXJldHVybiAibWVtYmVyIG11c3QgYmUgZGVjaW1hbCBwbGFjZSI7
CiAKLQlpZihjcCAmJiBhdG9pKCsrY3ApID4gNikKKwlpZihjcCAmJiBhdG9pKGNwKSA+IDYpCiAJ
CXJldHVybiAibnVtYmVycyBzdXBwb3J0ZWQgb25seSB0byA2IGRlY2ltYWwgcGxhY2VzIjsKIAog
CWlmKCF1c2VLZXl3b3JkcyhsaW5lLCAiPWRlY2ltYWwiKSkKQEAgLTYyNCw3ICs2MjQsNyBAQAog
Y29uc3QgY2hhciAqU2NyaXB0Q2hlY2tzOjpjaGtBcnJheShMaW5lICpsaW5lLCBTY3JpcHRJbWFn
ZSAqaW1nKQogewogCWNvbnN0IGNoYXIgKmNwID0gZ2V0TWVtYmVyKGxpbmUpOwotCWlmKGNwICYm
ICFpc2RpZ2l0KCooKytjcCkpKQorCWlmKGNwICYmICFpc2RpZ2l0KCpjcCkpCiAJCXJldHVybiAi
aW52YWxpZCBtZW1iZXIgdXNlZCI7CiAKIAlpZighdXNlS2V5d29yZHMobGluZSwgIj1jb3VudD1z
aXplIikpCkBAIC02NDEsNyArNjQxLDcgQEAKIHsKIAljb25zdCBjaGFyICpjcCA9IGdldE1lbWJl
cihsaW5lKTsKIAotCWlmKGNwICYmICFpc2RpZ2l0KCooKytjcCkpKQorCWlmKGNwICYmICFpc2Rp
Z2l0KCpjcCkpCiAJCWNwID0gY2hrUHJvcGVydHkobGluZSwgaW1nKTsKIAllbHNlCiAJCWNwID0g
TlVMTDsKQEAgLTczMCw3ICs3MzAsNyBAQAogewogCWNvbnN0IGNoYXIgKmNwID0gZ2V0TWVtYmVy
KGxpbmUpOwogCi0JaWYoY3AgJiYgYXRvaSgrK2NwKSA8IDEpCisJaWYoY3AgJiYgYXRvaShjcCkg
PCAxKQogCQlyZXR1cm4gIm1lbWJlciBtdXN0IGJlIGluaXRpYWwgdmFsdWUgYW5kIGdyZWF0ZXIg
dGhhbiB6ZXJvIjsKIAogCWlmKGhhc0tleXdvcmRzKGxpbmUpKQpAQCAtNzc4LDcgKzc3OCw3IEBA
CiAgICAgICAgIGlmKCFjcCkgCiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICAg
ICAgcHJvcCA9IFNjcmlwdFByb3BlcnR5OjpmaW5kKCsrY3ApOworICAgICAgICBwcm9wID0gU2Ny
aXB0UHJvcGVydHk6OmZpbmQoY3ApOwogICAgICAgICBpZighcHJvcCkKICAgICAgICAgICAgICAg
ICByZXR1cm4gInVua25vd24gc2NyaXB0IHByb3BlcnR5IHJlZmVyZW5jZWQiOwogCmRpZmYgLXVy
TiBjY3NjcmlwdDMtMS4wLjkub3JpZy9zcmMvY29tbWFuZC5jcHAgY2NzY3JpcHQzLTEuMC45L3Ny
Yy9jb21tYW5kLmNwcAotLS0gY2NzY3JpcHQzLTEuMC45Lm9yaWcvc3JjL2NvbW1hbmQuY3BwCTIw
MDYtMDUtMDQgMDE6MjY6MTUuMDAwMDAwMDAwICswODAwCisrKyBjY3NjcmlwdDMtMS4wLjkvc3Jj
L2NvbW1hbmQuY3BwCTIwMDYtMDktMjkgMTY6NDM6MTMuMDAwMDAwMDAwICswODAwCkBAIC0zODMs
NyArMzgzLDEyIEBACiAKIGNvbnN0IGNoYXIgKlNjcmlwdENvbW1hbmQ6OmdldE1lbWJlcihMaW5l
ICpsaW5lKQogewotCXJldHVybiBzdHJjaHIobGluZS0+Y21kLCAnLicpOworCWNvbnN0IGNoYXIg
KmNwID0gc3RyY2hyKGxpbmUtPmNtZCwgJy4nKTsKKworCWlmKGNwKQorCQkrK2NwOworCisJcmV0
dXJuIGNwOwogfQogCiBjb25zdCBjaGFyICpTY3JpcHRDb21tYW5kOjpnZXRPcHRpb24oTGluZSAq
bGluZSwgdW5zaWduZWQgKmlkeCkK
------=_Part_5860_14222542.1159521432669
Content-Type: text/x-patch; 
	name=bayonne2-1.5.28-ScriptCommand-getMember.patch; 
	charset=ANSI_X3.4-1968
Content-Transfer-Encoding: base64
X-Attachment-Id: f_esocpj5y
Content-Disposition: attachment;
	filename="bayonne2-1.5.28-ScriptCommand-getMember.patch"

ZGlmZiAtdXJOIGJheW9ubmUyLTEuNS4yOC5vcmlnL2JpbmRlcnMvYmF5b25uZXhtbC9jaGVja3Mu
Y3BwIGJheW9ubmUyLTEuNS4yOC9iaW5kZXJzL2JheW9ubmV4bWwvY2hlY2tzLmNwcAotLS0gYmF5
b25uZTItMS41LjI4Lm9yaWcvYmluZGVycy9iYXlvbm5leG1sL2NoZWNrcy5jcHAJMjAwNi0wNi0w
OCAyMTowNDo0MS4wMDAwMDAwMDAgKzA4MDAKKysrIGJheW9ubmUyLTEuNS4yOC9iaW5kZXJzL2Jh
eW9ubmV4bWwvY2hlY2tzLmNwcAkyMDA2LTA5LTI5IDE2OjU2OjI0LjAwMDAwMDAwMCArMDgwMApA
QCAtMTA0LDggKzEwNCw2IEBACiAJaWYoc2NyLT5hY2Nlc3MgIT0gU2NyaXB0SW50ZXJwOjpzY3JQ
VUJMSUMpCiAJCXJldHVybiAiY2Fubm90IHJlZ2lzdGVyIG5vbi1wdWJsaWMgc2NyaXB0IjsKIAot
CWlmKGNwKQotCQkrK2NwOwogCiAJaWYoZXh0ICYmICFzdHJpY21wKGV4dCwgIi5jb25mIikpCiAJ
ewpAQCAtMTcyLDkgKzE3MCw2IEBACiAJaWYoIXN0cm5pY21wKGxpbmUtPmNtZCwgImluY29taW5n
LiIsIDkpKQogCQlyZXR1cm4gImludmFsaWQgbWVtYmVyIGZvciBpbmNvbWluZyI7IAogCi0JaWYo
Y3AgJiYgKmNwID09ICcuJykKLQkJKytjcDsKLQogCWlmKGNwKQogCXsKIAkJaWYoIXN0cmljbXAo
Y3AsICJ0aW1lc2xvdCIpKQpAQCAtMzI4LDkgKzMyMyw2IEBACiB0cnVua2luZzoKIAlpbWctPnNl
dFBvaW50ZXIoc2J1Ziwgc2NyKTsKIAotCWlmKGNwICYmICpjcCA9PSAnLicpCi0JCSsrY3A7Ci0K
IAlpZihjcCkKIAl7CiAJCWlmKCFzdHJpY21wKGNwLCAidGltZXNsb3QiKSkKZGlmZiAtdXJOIGJh
eW9ubmUyLTEuNS4yOC5vcmlnL2JpbmRlcnMvaXZyc2NyaXB0MS9jaGVja3MuY3BwIGJheW9ubmUy
LTEuNS4yOC9iaW5kZXJzL2l2cnNjcmlwdDEvY2hlY2tzLmNwcAotLS0gYmF5b25uZTItMS41LjI4
Lm9yaWcvYmluZGVycy9pdnJzY3JpcHQxL2NoZWNrcy5jcHAJMjAwNi0wOS0xMCAwMTowOToyNy4w
MDAwMDAwMDAgKzA4MDAKKysrIGJheW9ubmUyLTEuNS4yOC9iaW5kZXJzL2l2cnNjcmlwdDEvY2hl
Y2tzLmNwcAkyMDA2LTA5LTI5IDE2OjU2OjM5LjAwMDAwMDAwMCArMDgwMApAQCAtMTk5LDkgKzE5
OSw2IEBACiAJaWYoc2NyLT5hY2Nlc3MgIT0gU2NyaXB0SW50ZXJwOjpzY3JQVUJMSUMpCiAJCXJl
dHVybiAiY2Fubm90IHJlZ2lzdGVyIG5vbi1wdWJsaWMgc2NyaXB0IjsKIAotCWlmKGNwKQotCQkr
K2NwOwotCiAJaWYoZXh0ICYmICFzdHJpY21wKGV4dCwgIi5jb25mIikpCiAJewogCQlpZihjcCkK
QEAgLTI3MCw5ICsyNjcsNiBAQAogCWlmKCFzdHJuaWNtcChsaW5lLT5jbWQsICJpbmNvbWluZy4i
LCA5KSkKIAkJcmV0dXJuICJpbnZhbGlkIG1lbWJlciBmb3IgaW5jb21pbmciOyAKIAotCWlmKGNw
ICYmICpjcCA9PSAnLicpCi0JCSsrY3A7Ci0KIAlpZihjcCkKIAl7CiAJCWlmKCFzdHJpY21wKGNw
LCAidGltZXNsb3QiKSkKQEAgLTQyNyw5ICs0MjEsNiBAQAogdHJ1bmtpbmc6CiAJaW1nLT5zZXRQ
b2ludGVyKHNidWYsIHNjcik7CiAKLQlpZihjcCAmJiAqY3AgPT0gJy4nKQotCQkrK2NwOwotCiAJ
aWYoY3ApCiAJewogCQlpZighc3RyaWNtcChjcCwgInRpbWVzbG90IikpCmRpZmYgLXVyTiBiYXlv
bm5lMi0xLjUuMjgub3JpZy9zZXJ2ZXIvY2hlY2tzLmNwcCBiYXlvbm5lMi0xLjUuMjgvc2VydmVy
L2NoZWNrcy5jcHAKLS0tIGJheW9ubmUyLTEuNS4yOC5vcmlnL3NlcnZlci9jaGVja3MuY3BwCTIw
MDYtMDYtMDEgMDI6MTI6MjMuMDAwMDAwMDAwICswODAwCisrKyBiYXlvbm5lMi0xLjUuMjgvc2Vy
dmVyL2NoZWNrcy5jcHAJMjAwNi0wOS0yOSAxNjo1NjowMi4wMDAwMDAwMDAgKzA4MDAKQEAgLTI1
OCw3ICsyNTgsNyBAQAogCWNvbnN0IGNoYXIgKmNwID0gZ2V0TWVtYmVyKGxpbmUpOwogCXVuc2ln
bmVkIGlkeCA9IDA7CiAKLQlpZihjcCAmJiBhdG9pKCsrY3ApIDwgMSkKKwlpZihjcCAmJiBhdG9p
KGNwKSA8IDEpCiAJCXJldHVybiAibGliZXhlYyB0aW1lb3V0IG1lbWJlciBtdXN0IGJlIGF0IGxl
YXN0IG9uZSBzZWNvbmQiOwogCiAJaWYoIXN0cm5pY21wKGxpbmUtPmNtZCwgImV4ZWMiLCA0KSkK
QEAgLTQ5Myw3ICs0OTMsNyBAQAogCWNvbnN0IGNoYXIgKmNwOwogCiAJY3AgPSBnZXRNZW1iZXIo
bGluZSk7Ci0JaWYoY3AgJiYgc3RyaWNtcChjcCwgIi52b3giKSkKKwlpZihjcCAmJiBzdHJpY21w
KGNwLCAidm94IikpCiAJCXJldHVybiAidXNlIG5vIG1lbWJlciBvciAudm94IG9ubHkiOwogCiAJ
aWYoIXVzZUtleXdvcmRzKGxpbmUsICI9ZXh0ZW5zaW9uPWVuY29kaW5nPXByZWZpeD1mcmFtaW5n
PXNpbGVuY2U9aW50ZXJzaWxlbmNlPW5vdGU9cG9zaXRpb249ZXhpdD10aW1lb3V0PW1lbnUiKSkK
QEAgLTUzMyw3ICs1MzMsNyBAQAogCWNvbnN0IGNoYXIgKmNwOwogCiAJY3AgPSBnZXRNZW1iZXIo
bGluZSk7Ci0JaWYoY3AgJiYgc3RyaWNtcChjcCwgIi52b3giKSkKKwlpZihjcCAmJiBzdHJpY21w
KGNwLCAidm94IikpCiAJCXJldHVybiAidXNlIG5vIG1lbWJlciBvciAudm94IG9ubHkiOwogCiAJ
aWYoIXVzZUtleXdvcmRzKGxpbmUsICI9ZXh0ZW5zaW9uPWVuY29kaW5nPXByZWZpeD1mcmFtaW5n
PXNpbGVuY2U9aW50ZXJzaWxlbmNlPWV4aXQ9dGltZW91dCIpKQo=
------=_Part_5860_14222542.1159521432669
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
ccscript-devel mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/ccscript-devel

------=_Part_5860_14222542.1159521432669--