[Ttssh2-commit] [7092] 数字で始まるサービス名を扱えるようにした

アーカイブの一覧に戻る

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,



Ttssh2-commit メーリングリストの案内
アーカイブの一覧に戻る