• R/O
  • SSH
  • HTTPS

ttssh2: コミット


コミットメタ情報

リビジョン7092 (tree)
日時2018-04-09 21:22:09
作者doda

ログメッセージ

数字で始まるサービス名を扱えるようにした

サービス名の先頭が数字だった時はそのまま atoi() にかけていた為、数字で
始まるサービス名が扱えなかったが、サービス名の検索を先に行うようにして
数字で始まるサービス名を扱えるようにした。

現状、数字で始まるサービス名はサービスリスト(service_DB) には無いが、
サービスリストの更新した時に数字で始まるサービス名が増えた時の為に
修正を行う。

変更サマリ

差分

--- trunk/ttssh2/ttxssh/fwdui.c (revision 7091)
+++ trunk/ttssh2/ttxssh/fwdui.c (revision 7092)
@@ -387,16 +387,17 @@
387387 {
388388 }
389389
390-static void set_verbose_port(char *buf, int bufsize, int port,
391- char *name)
390+static void set_verbose_port(char *buf, int bufsize, int port, char *name)
392391 {
393- if (*name >= '0' && *name <= '9') {
394- strncpy_s(buf, bufsize, name, _TRUNCATE);
395- } else {
396- _snprintf_s(buf, bufsize, _TRUNCATE, "%d (%s)", port, name);
392+ if (isdigit(*name)) {
393+ int tmpnum = atoi(name);
394+ if (tmpnum == port) {
395+ strncpy_s(buf, bufsize, name, _TRUNCATE);
396+ return;
397+ }
397398 }
398399
399- buf[bufsize - 1] = 0;
400+ _snprintf_s(buf, bufsize, _TRUNCATE, "%d (%s)", port, name);
400401 }
401402
402403 static void get_spec_string(FWDRequestSpec *spec, char *buf,
--- trunk/teraterm/common/servicenames.c (revision 7091)
+++ trunk/teraterm/common/servicenames.c (revision 7092)
@@ -382,36 +382,31 @@
382382 int PASCAL parse_port_from_buf(char * buf)
383383 {
384384 int i;
385+ char lower_buf[32];
386+ TCP_service_name *found;
387+ TCP_service_name key;
385388
386- if (buf[0] >= '0' && buf[0] <= '9') {
389+ for (i = 0; buf[i] != 0 && i < sizeof(lower_buf) - 1; i++) {
390+ lower_buf[i] = tolower(buf[i]);
391+ }
392+ lower_buf[i] = 0;
393+
394+ key.name = lower_buf;
395+ found = (TCP_service_name *)
396+ bsearch(&key, service_DB, NUM_ELEM(service_DB),
397+ sizeof(service_DB[0]), compare_services);
398+
399+ if (found) {
400+ return found->port;
401+ }
402+ else if (isdigit(buf[0])) {
387403 int result = atoi(buf);
388-
389- if (result < 1 || result > 65535) {
390- return -1;
391- } else {
404+ if (result > 0 && result < 65536) {
392405 return result;
393406 }
394- } else {
395- char lower_buf[32];
396- TCP_service_name *result;
397- TCP_service_name key;
407+ }
398408
399- for (i = 0; buf[i] != 0 && i < sizeof(lower_buf) - 1; i++) {
400- lower_buf[i] = tolower(buf[i]);
401- }
402- lower_buf[i] = 0;
403-
404- key.name = lower_buf;
405- result = (TCP_service_name *)
406- bsearch(&key, service_DB, NUM_ELEM(service_DB),
407- sizeof(service_DB[0]), compare_services);
408-
409- if (result == NULL) {
410- return -1;
411- } else {
412- return result->port;
413- }
414- }
409+ return -1;
415410 }
416411
417412 int PASCAL parse_port(char *str, char *buf, int bufsize)
旧リポジトリブラウザで表示