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> <<a href="mailto:[email protected]">[email protected]</a>> 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 "register.sip" <br>ScriptInterp::getMember's result doesn't include the leading dot, ie. the result is "sip"<br>ScriptCommand::getMember's result include the leading dot, ie. the result is ".sip" <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 2006-09-25 16:28:24.000000000 +0800<br>+++ src/command.cpp 2006-09-25 16:28:56.000000000 +0800<br>@@ -383,7 +383,12 @@<br><br> const char *ScriptCommand::getMember(Line *line) <br> {<br>- return strchr(line->cmd, '.');<br>+ const char *cp = strchr(line->cmd, '.');<br>+<br>+ if(cp)<br>+ ++cp;<br>+<br>+ return cp;<br> }<br><br> 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--