scmno****@osdn*****
scmno****@osdn*****
2018年 4月 9日 (月) 21:22:09 JST
Revision: 7092 http://sourceforge.jp/projects/ttssh2/scm/svn/commits/7092 Author: doda Date: 2018-04-09 21:22:09 +0900 (Mon, 09 Apr 2018) Log Message: ----------- 数字で始まるサービス名を扱えるようにした サービス名の先頭が数字だった時はそのまま atoi() にかけていた為、数字で 始まるサービス名が扱えなかったが、サービス名の検索を先に行うようにして 数字で始まるサービス名を扱えるようにした。 現状、数字で始まるサービス名はサービスリスト(service_DB) には無いが、 サービスリストの更新した時に数字で始まるサービス名が増えた時の為に 修正を行う。 Modified Paths: -------------- trunk/teraterm/common/servicenames.c trunk/ttssh2/ttxssh/fwdui.c -------------- next part -------------- Modified: trunk/teraterm/common/servicenames.c =================================================================== --- trunk/teraterm/common/servicenames.c 2018-04-03 13:49:43 UTC (rev 7091) +++ trunk/teraterm/common/servicenames.c 2018-04-09 12:22:09 UTC (rev 7092) @@ -382,36 +382,31 @@ int PASCAL parse_port_from_buf(char * buf) { int i; + char lower_buf[32]; + TCP_service_name *found; + TCP_service_name key; - if (buf[0] >= '0' && buf[0] <= '9') { + for (i = 0; buf[i] != 0 && i < sizeof(lower_buf) - 1; i++) { + lower_buf[i] = tolower(buf[i]); + } + lower_buf[i] = 0; + + key.name = lower_buf; + found = (TCP_service_name *) + bsearch(&key, service_DB, NUM_ELEM(service_DB), + sizeof(service_DB[0]), compare_services); + + if (found) { + return found->port; + } + else if (isdigit(buf[0])) { int result = atoi(buf); - - if (result < 1 || result > 65535) { - return -1; - } else { + if (result > 0 && result < 65536) { return result; } - } else { - char lower_buf[32]; - TCP_service_name *result; - TCP_service_name key; + } - for (i = 0; buf[i] != 0 && i < sizeof(lower_buf) - 1; i++) { - lower_buf[i] = tolower(buf[i]); - } - lower_buf[i] = 0; - - key.name = lower_buf; - result = (TCP_service_name *) - bsearch(&key, service_DB, NUM_ELEM(service_DB), - sizeof(service_DB[0]), compare_services); - - if (result == NULL) { - return -1; - } else { - return result->port; - } - } + return -1; } int PASCAL parse_port(char *str, char *buf, int bufsize) Modified: trunk/ttssh2/ttxssh/fwdui.c =================================================================== --- trunk/ttssh2/ttxssh/fwdui.c 2018-04-03 13:49:43 UTC (rev 7091) +++ trunk/ttssh2/ttxssh/fwdui.c 2018-04-09 12:22:09 UTC (rev 7092) @@ -387,16 +387,17 @@ { } -static void set_verbose_port(char *buf, int bufsize, int port, - char *name) +static void set_verbose_port(char *buf, int bufsize, int port, char *name) { - if (*name >= '0' && *name <= '9') { - strncpy_s(buf, bufsize, name, _TRUNCATE); - } else { - _snprintf_s(buf, bufsize, _TRUNCATE, "%d (%s)", port, name); + if (isdigit(*name)) { + int tmpnum = atoi(name); + if (tmpnum == port) { + strncpy_s(buf, bufsize, name, _TRUNCATE); + return; + } } - buf[bufsize - 1] = 0; + _snprintf_s(buf, bufsize, _TRUNCATE, "%d (%s)", port, name); } static void get_spec_string(FWDRequestSpec *spec, char *buf,