svnno****@sourc*****
svnno****@sourc*****
2014年 2月 18日 (火) 08:02:39 JST
Revision: 5478 http://sourceforge.jp/projects/ttssh2/scm/svn/commits/5478 Author: maya Date: 2014-02-18 08:02:38 +0900 (Tue, 18 Feb 2014) Log Message: ----------- /F=コマンドラインパラメータで"を使ってスペースを含むファイル名を渡しても認識しない問題を修正 解析処理を ttxssh.c よりコピー https://sourceforge.jp/ticket/browse.php?group_id=1412&tid=31971 Modified Paths: -------------- trunk/TTProxy/TTProxy.h trunk/doc/en/html/about/history.html trunk/doc/ja/html/about/history.html -------------- next part -------------- Modified: trunk/TTProxy/TTProxy.h =================================================================== --- trunk/TTProxy/TTProxy.h 2014-02-03 13:43:40 UTC (rev 5477) +++ trunk/TTProxy/TTProxy.h 2014-02-17 23:02:38 UTC (rev 5478) @@ -123,7 +123,122 @@ char* p = param; bool inParam = false; bool inQuotes = false; + bool inEqual = false; + int param_len = strlen(param); char* option = NULL; + char *buf; + int buflen = 0; + int i; + char* start = NULL; + +#if 1 + // \x89\xF0\x90͏\x88\x97\x9D\x82\xCD ttxssh.c \x82\xE6\x82\xE8\x83R\x83s\x81[ + buf = new char[param_len+1]; + memset(buf, 0, buflen); + for (i=0; i<param_len; i++) { + if (inQuotes) { + // \x8C\xBB\x8D݈ʒu\x82\xAA"\x82̒\x86 + if (param[i] == '"') { + if (param[i+1] == '"') { + buf[buflen] = param[i]; + buflen++; + i++; + } + else { + // \x83N\x83H\x81[\x83g\x82\xB5\x82Ă\xA2\x82\xE9\x82Ƃ\xAB\x82͂\xB1\x82\xB1\x82ŏI\x82\xED\x82\xE8 + // "\x82\xF0buf\x82ɓ\xFC\x82ꂸ\x82ɉ\xF0\x90͂ɓn\x82\xB7 + switch (parse_option(buf)) { + case 1: + memset(start, ' ', (param + i) - start + 1); + break; + case 2: + memset(start, ' ', (param + i) - start + 1); + buflen = strlen(buf); + memcpy(start, buf, buflen); + break; + } + inParam = false; + inEqual = false; + start = NULL; + memset(buf, 0, buflen); + buflen = 0; + inQuotes = false; + } + } + else { + buf[buflen] = param[i]; + buflen++; + } + } + else { + if (!inParam) { + // \x82܂\xBE\x83p\x83\x89\x83\x81\x81[\x83^\x82̒\x86\x82ɂ\xA2\x82Ȃ\xA2 + if (param[i] == '"') { + // " \x82Ŏn\x82܂\xE9 + start = param + i; + inParam = true; + inQuotes = true; + } + else if (param[i] != ' ' && param[i] != '\t') { + // \x95\x81\x92ʂɎn\x82܂\xE9 + buf[buflen] = param[i]; + buflen++; + start = param + i; + inParam = true; + } + } + else { + // \x8C\xBB\x8D݈ʒu\x82\xAA\x83p\x83\x89\x83\x81\x81[\x83^\x82̒\x86 + if (param[i] == ' ' || param[i] == '\t') { + // \x83N\x83H\x81[\x83g\x82\xB5\x82Ă\xA2\x82Ȃ\xA2\x82Ƃ\xAB\x82͂\xB1\x82\xB1\x82ŏI\x82\xED\x82\xE8 + switch (parse_option(buf)) { + case 1: + memset(start, ' ', (param + i) - start + 1); + break; + case 2: + memset(start, ' ', (param + i) - start + 1); + buflen = strlen(buf); + memcpy(start, buf, buflen); + break; + } + inParam = false; + inEqual = false; + start = NULL; + memset(buf, 0, buflen); + buflen = 0; + } + else { + buf[buflen] = param[i]; + buflen++; + if (!inEqual && param[i] == '=') { + inEqual = true; + if (param[i+1] == '"') { + inQuotes = true; + i++; + } + } + } + } + } + } + + // buf \x82Ɏc\x82肪\x82\xA0\x82\xEA\x82Ή\xF0\x90͂ɓn\x82\xB7 + // +1\x82\xB7\x82\xE9\x82ƍŌ\xE3\x82\xCC'\0'\x82\xE0\x8F\xC1\x82\xB5\x82Ă\xB5\x82܂\xA4\x82̂ŁA\x8F\xE3\x82Ɠ\xAF\x82\xB6\x82ł͂\xA2\x82\xAF\x82Ȃ\xA2 + if (strlen(buf) > 0) { + switch (parse_option(buf)) { + case 1: + memset(start, ' ', (param + i) - start); + break; + case 2: + memset(start, ' ', (param + i) - start); + buflen = strlen(buf); + memcpy(start, buf, buflen); + break; + } + } + + delete[] buf; +#else while (*p != '\0') { if (inQuotes ? *p == '"' : (*p == ' ' || *p == '\t')) { if (option != NULL) { @@ -156,6 +271,8 @@ *option = '\0'; } } +#endif + getInstance().ORIG_ParseParam(param, ts, DDETopic); if (getInstance().ts->HostName[0] == '\0' && getInstance().realhost != NULL) { strcpy_s(getInstance().ts->HostName, sizeof getInstance().ts->HostName, getInstance().realhost); Modified: trunk/doc/en/html/about/history.html =================================================================== --- trunk/doc/en/html/about/history.html 2014-02-03 13:43:40 UTC (rev 5477) +++ trunk/doc/en/html/about/history.html 2014-02-17 23:02:38 UTC (rev 5478) @@ -3479,6 +3479,11 @@ <h2><a name="ttproxy">TTProxy</a></h2> +<h3><a name="ttproxy_1.0.0.19">2014.x.x (Ver 1.0.0.19)</a></h3> +<ul class="history"> + <!--li>\x83X\x83y\x81[\x83X\x82\xF0\x8A܂ރR\x83}\x83\x93\x83h\x83\x89\x83C\x83\x93\x83p\x83\x89\x83\x81\x81[\x83^\x82̉\xF0\x90͂Ɏ\xB8\x94s\x82\xB7\x82\xE9\x96\xE2\x91\xE8\x82\xF0\x8FC\x90\xB3\x82\xB5\x82\xBD\x81B</li--> +</ul> + <h3><a name="ttproxy_1.0.0.18">2011.3.5 (Ver 1.0.0.18)</a></h3> <ul class="history"> <li>added support for IPv6.<ul> Modified: trunk/doc/ja/html/about/history.html =================================================================== --- trunk/doc/ja/html/about/history.html 2014-02-03 13:43:40 UTC (rev 5477) +++ trunk/doc/ja/html/about/history.html 2014-02-17 23:02:38 UTC (rev 5478) @@ -3484,6 +3484,11 @@ <h2><a name="ttproxy">TTProxy</a></h2> +<h3><a name="ttproxy_1.0.0.19">2014.x.x (Ver 1.0.0.19)</a></h3> +<ul class="history"> + <li>\x83X\x83y\x81[\x83X\x82\xF0\x8A܂ރR\x83}\x83\x93\x83h\x83\x89\x83C\x83\x93\x83p\x83\x89\x83\x81\x81[\x83^\x82̉\xF0\x90͂Ɏ\xB8\x94s\x82\xB7\x82\xE9\x96\xE2\x91\xE8\x82\xF0\x8FC\x90\xB3\x82\xB5\x82\xBD\x81B</li> +</ul> + <h3><a name="ttproxy_1.0.0.18">2011.3.5 (Ver 1.0.0.18)</a></h3> <ul class="history"> <li>IPv6 \x82ɑΉ\x9E\x82\xB5\x82\xBD\x81B<ul>