[Ttssh2-commit] [7344] utf8対応、次のコマンドをテスト、修正

Back to archive index
scmno****@osdn***** scmno****@osdn*****
2018年 12月 23日 (日) 02:30:05 JST


Revision: 7344
          http://sourceforge.jp/projects/ttssh2/scm/svn/commits/7344
Author:   zmatsuo
Date:     2018-12-23 02:30:03 +0900 (Sun, 23 Dec 2018)
Log Message:
-----------
utf8対応、次のコマンドをテスト、修正
fileopen
fileconcat
filecreate
filedelete
filerename
filetruncate
filesearch
filestat
findfirst
findnext
findclose
foldercreate
folderdelete
foldersearch
setfileattr
getfileattr
setpassword
getpassword
ispassword
delpassword

Modified Paths:
--------------
    branches/cmake/teraterm/ttpmacro/ttl.cpp
    branches/cmake/teraterm/ttpmacro/ttl_gui.cpp
    branches/cmake/teraterm/ttpmacro/ttmbuff.c
    branches/cmake/tests/gui_commands_test_utf8.ttl

Added Paths:
-----------
    branches/cmake/tests/test_file.ttl

-------------- next part --------------
Modified: branches/cmake/teraterm/ttpmacro/ttl.cpp
===================================================================
--- branches/cmake/teraterm/ttpmacro/ttl.cpp	2018-12-22 17:29:42 UTC (rev 7343)
+++ branches/cmake/teraterm/ttpmacro/ttl.cpp	2018-12-22 17:30:03 UTC (rev 7344)
@@ -99,6 +99,15 @@
 static HANDLE FHandle[NumFHandle];
 static long FPointer[NumFHandle];
 
+#if 0
+#define _lcreat(p1,p2)		x_win16_lcreat(p1,p2)
+#define	_lopen(p1,p2)		x_win16_lopen(p1,p2)
+#define _lclose(p1)			x_win16_lclose(p1)
+#define _lread(p1,p2,p3)	x_win16_lread(p1,p2,p3)
+#define _lwrite(p1,p2,p3)	x_win16_lwrite(p1,p2,p3)
+#define	_llseek(p1,p2,p3)	x_win16_llseek(p1,p2,p3)
+#endif
+
 // forward declaration
 int ExecCmnd();
 
@@ -972,11 +981,12 @@
 	if (Str[0]==0) return Err;
 
 	GetAbsPath(Str,sizeof(Str));
-	if (! DoesFileExist(Str)) return Err;
+	tc StrU8 = tc::fromUtf8(Str);
+	if (_taccess(StrU8, 0) != 0) return Err;
 	if (Str2[0]==0) // delete all password
-		WritePrivateProfileString(_T("Password"),NULL,NULL,(tc)Str);
+		WritePrivateProfileString(_T("Password"),NULL,NULL,StrU8);
 	else            // delete password specified by Str2
-		WritePrivateProfileString(_T("Password"),(tc)Str2,NULL,(tc)Str);
+		WritePrivateProfileString(_T("Password"),(tc)Str2,NULL,StrU8);
 	return Err;
 }
 
@@ -1340,7 +1350,7 @@
 	if ((Err==0) && (GetFirstChar()!=0))
 		Err = ErrSyntax;
 	if (Err!=0) return Err;
-	_lclose(FH);
+	CloseHandle(FH);
 	HandleFree(fhi);
 	return Err;
 }
@@ -1351,7 +1361,6 @@
 	HANDLE FH1, FH2;
 	int c;
 	TStrVal FName1, FName2;
-	BYTE buf[1024];
 
 	Err = 0;
 	GetStrVal(FName1,&Err);
@@ -1379,9 +1388,13 @@
 		return Err;
 	}
 
-	FH1 = _lopen(FName1,OF_WRITE);
+	FH1 = CreateFile(tc::fromUtf8(FName1),
+					 GENERIC_WRITE, FILE_SHARE_WRITE, NULL,
+					 OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
 	if (FH1 == INVALID_HANDLE_VALUE)
-		FH1 = _lcreat(FName1,0);
+		FH1 = CreateFile(tc::fromUtf8(FName1),
+						 GENERIC_WRITE, FILE_SHARE_WRITE, NULL,
+						 CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
 	if (FH1 == INVALID_HANDLE_VALUE) {
 		SetResult(3);
 		return Err;
@@ -1388,17 +1401,20 @@
 	}
 	_llseek(FH1,0,2);
 
-	FH2 = _lopen(FName2,OF_READ);
+	FH2 = CreateFile(tc::fromUtf8(FName2),
+					 GENERIC_READ, FILE_SHARE_READ, NULL,
+					 OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
 	if (FH2 != INVALID_HANDLE_VALUE)
 	{
+		BYTE buf[1024];
 		do {
 			c = _lread(FH2,&(buf[0]),sizeof(buf));
 			if (c>0)
 				_lwrite(FH1,&(buf[0]),c);
 		} while (c >= sizeof(buf));
-		_lclose(FH2);
+		CloseHandle(FH2);
 	}
-	_lclose(FH1);
+	CloseHandle(FH1);
 
 	SetResult(0);
 	return Err;
@@ -1432,7 +1448,7 @@
 	}
 	if (_stricmp(FName1,FName2)==0) return Err;
 
-	CopyFile((tc)FName1,(tc)FName2,FALSE);
+	CopyFile(tc::fromUtf8(FName1),tc::fromUtf8(FName2),FALSE);
 	SetResult(0);
 	return Err;
 }
@@ -1461,7 +1477,9 @@
 		SetResult(-1);
 		return Err;
 	}
-	FH = _lcreat(FName,0);
+	FH = CreateFile(tc::fromUtf8(FName),
+					GENERIC_WRITE, FILE_SHARE_WRITE, NULL,
+					CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
 	if (FH == INVALID_HANDLE_VALUE) {
 		SetResult(2);
 	}
@@ -1471,7 +1489,7 @@
 	fhi = HandlePut(FH);
 	SetIntVal(VarId, fhi);
 	if (fhi == -1) {
-		_lclose(FH);
+		CloseHandle(FH);
 	}
 	return Err;
 }
@@ -1495,8 +1513,8 @@
 		SetResult(-1);
 		return Err;
 	}
-	
-	if (remove(FName) != 0) {
+
+	if (_tremove(tc::fromUtf8(FName)) != 0) {
 		SetResult(-1);
 	}
 	else {
@@ -1616,14 +1634,21 @@
 		return Err;
 	}
 
+	tc FNameT = tc::fromUtf8(FName);
 	if (ReadonlyFlag) {
-		FH = _lopen(FName,OF_READ);
+		FH = CreateFile(FNameT,
+						GENERIC_READ, FILE_SHARE_READ, NULL,
+						OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
 	}
 	else {
-		FH = _lopen(FName,OF_READWRITE);
+		FH = CreateFile(FNameT,
+						GENERIC_WRITE|GENERIC_READ, FILE_SHARE_WRITE, NULL,
+						OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
 	}
 	if (FH == INVALID_HANDLE_VALUE)
-		FH = _lcreat(FName,0);
+		FH = CreateFile(FNameT,
+						GENERIC_WRITE, FILE_SHARE_WRITE, NULL,
+						CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
 	if (FH == INVALID_HANDLE_VALUE) {
 		SetIntVal(VarId, -1);
 		return ErrCantOpen;
@@ -1679,7 +1704,7 @@
 	return Err;
 }
 
-// Format: fileunlock <file handle> 
+// Format: fileunlock <file handle>
 // (2012.4.19 yutaka)
 WORD TTLFileUnLock()
 {
@@ -1797,7 +1822,7 @@
 		{
 			Str[i] = b;
 		}
-	} 
+	}
 
 	if (EndFile)
 		SetResult(1);
@@ -1840,8 +1865,8 @@
 		SetResult(-2);
 		return Err;
 	}
-	if (rename(FName1,FName2) != 0) {
-		// リネームに失敗したら、エラーで返す。
+	if (_trename(tc::fromUtf8(FName1), tc::fromUtf8(FName2)) != 0) {
+			// リネームに失敗したら、エラーで返す。
 		SetResult(-3);
 		return Err;
 	}
@@ -1863,7 +1888,7 @@
 	if (Err!=0) return Err;
 
 	GetAbsPath(FName,sizeof(FName));
-	if (DoesFileExist(FName))
+	if (_taccess(tc::fromUtf8(FName), 0) == 0)
 		SetResult(1);
 	else
 		SetResult(0);
@@ -1927,18 +1952,18 @@
 		goto end;
 	}
 
-	ret = _stat(FName, &st);
+	ret = _tstat(tc::fromUtf8(FName), &st);
 	if (ret != 0) {
 		goto end;
 	}
 
-	if (CheckParameterGiven()) { 
+	if (CheckParameterGiven()) {
 		GetIntVar(&SizeVarId,&Err);
 		if (Err!=0) return Err;
 		SetIntVal(SizeVarId, st.st_size);
 	}
 
-	if (CheckParameterGiven()) { 
+	if (CheckParameterGiven()) {
 		GetStrVar(&TimeVarId,&Err);
 		if (Err!=0) return Err;
 		tmp = localtime(&st.st_mtime);
@@ -1946,7 +1971,7 @@
 		SetStrVal(TimeVarId, TimeStr);
 	}
 
-	if (CheckParameterGiven()) { 
+	if (CheckParameterGiven()) {
 		GetStrVar(&DrvVarId,&Err);
 		if (Err!=0) return Err;
 		_snprintf_s(DrvStr, sizeof(DrvStr), _TRUNCATE, "%c", st.st_dev + 'A');
@@ -2050,7 +2075,7 @@
 		// ファイルの1バイト目がヒットすると、ファイルポインタが突き破って
 		// INVALID_SET_FILE_POINTER になるので、
 		// ゼロオフセットになるように調整する。(2008.10.10 yutaka)
-		if (pos == INVALID_SET_FILE_POINTER) 
+		if (pos == INVALID_SET_FILE_POINTER)
 			_llseek(FH, 0, 0);
 		SetResult(1);
 	} else {
@@ -2080,7 +2105,7 @@
 		goto end;
 	}
 
-	if (CheckParameterGiven()) { 
+	if (CheckParameterGiven()) {
 		GetIntVal(&TruncByte,&Err);
 		if (Err!=0) return Err;
 	} else {
@@ -2089,16 +2114,16 @@
 	}
 
 	// ファイルを指定したサイズで切り詰める。
-   ret = _sopen_s( &fh, FName, _O_RDWR | _O_CREAT, _SH_DENYNO, _S_IREAD | _S_IWRITE );
-   if (ret != 0) {
+	ret = _tsopen_s( &fh, tc::fromUtf8(FName), _O_RDWR | _O_CREAT, _SH_DENYNO, _S_IREAD | _S_IWRITE );
+	if (ret != 0) {
 		Err = ErrCantOpen;
 		goto end;
-   }
-   ret = _chsize_s(fh, TruncByte);
-   if (ret != 0) {
+	}
+	ret = _chsize_s(fh, TruncByte);
+	if (ret != 0) {
 		Err = ErrInvalidCtl;
 		goto end;
-   }
+	}
 
 	result = 0;
 	Err = 0;
@@ -2180,7 +2205,7 @@
 	WORD Err;
 	TStrVal Dir;
 	int i;
-	struct _finddata_t data;
+	struct _tfinddata64_t data;
 
 	Err = 0;
 	GetIntVar(&DH,&Err);
@@ -2198,9 +2223,9 @@
 		i++;
 	if (i<NumDirHandle)
 	{
-		DirHandle[i] = _findfirst(Dir,&data);
+		DirHandle[i] = _tfindfirst64(tc::fromUtf8(Dir),&data);
 		if (DirHandle[i]!=-1L)
-			SetStrVal(Name,data.name);
+			SetStrVal(Name, (char *)(const char *)(u8)data.name);
 		else
 			i = -1;
 	}
@@ -2223,7 +2248,7 @@
 	TVarId Name;
 	WORD Err;
 	int DH;
-	struct _finddata_t data;
+	struct _tfinddata64_t data;
 
 	Err = 0;
 	GetIntVal(&DH,&Err);
@@ -2234,9 +2259,9 @@
 
 	if ((DH>=0) && (DH<NumDirHandle) &&
 	    (DirHandle[DH]!=-1L) &&
-	    (_findnext(DirHandle[DH],&data)==0))
+	    (_tfindnext64(DirHandle[DH],&data)==0))
 	{
-		SetStrVal(Name,data.name);
+		SetStrVal(Name,(char *)(const char *)(u8)data.name);
 		SetResult(1);
 	}
 	else {
@@ -2274,7 +2299,7 @@
 		return Err;
 	}
 
-	if (CreateDirectory((tc)FName, NULL) == 0) {
+	if (CreateDirectory(tc::fromUtf8(FName), NULL) == 0) {
 		SetResult(2);
 	}
 	else {
@@ -2303,7 +2328,7 @@
 		return Err;
 	}
 
-	if (RemoveDirectory((tc)FName) == 0) {
+	if (RemoveDirectory(tc::fromUtf8(FName)) == 0) {
 		SetResult(2);
 	}
 	else {
@@ -2325,7 +2350,7 @@
 	if (Err!=0) return Err;
 
 	GetAbsPath(FName,sizeof(FName));
-	if (DoesFolderExist(FName)) {
+	if (_taccess(tc::fromUtf8(FName), 0) == 0) {
 		SetResult(1);
 	}
 	else {
@@ -2423,7 +2448,8 @@
 		Err = ErrSyntax;
 	if (Err!=0) return Err;
 
-	SetResult(GetFileAttributes((tc)Filename));
+	GetAbsPath(Filename, sizeof(Filename));		// @@ TODO
+	SetResult(GetFileAttributes(tc::fromUtf8(Filename)));
 
 	return Err;
 }
@@ -2485,7 +2511,7 @@
 	if (WSAIoctl(sock, SIO_GET_INTERFACE_LIST, NULL, 0, info, sizeof(info), &socknum, NULL, NULL) != SOCKET_ERROR) {
 		n = socknum / sizeof(info[0]);
 		for (i = 0 ; i < n ; i++) {
-			if ((info[i].iiFlags & IFF_UP) == 0) 
+			if ((info[i].iiFlags & IFF_UP) == 0)
 				continue;
 			if ((info[i].iiFlags & IFF_LOOPBACK) != 0)
 				continue;
@@ -2662,7 +2688,7 @@
 	if (Err!=0) return Err;
 
 	// 文字列が空の場合はエラーとする。
-	if (FileNameStr[0]==0 || 
+	if (FileNameStr[0]==0 ||
 	    KeyStr[0]==0 ||
 	    VarStr[0]==0)   // "getpassword"同様、空パスワードも許可しない。
 		Err = ErrSyntax;
@@ -2673,7 +2699,7 @@
 	// パスワードを暗号化する。
 	Encrypt(VarStr, Temp);
 
-	if (WritePrivateProfileString(_T("Password"), (tc)KeyStr, (tc)Temp, (tc)FileNameStr) != 0) 
+	if (WritePrivateProfileString(_T("Password"), (tc)KeyStr, (tc)Temp, tc::fromUtf8(FileNameStr)) != 0)
 		result = 1;  /* success */
 
 	SetResult(result);  // 成功可否を設定する。
@@ -2686,7 +2712,7 @@
 	TStrVal FileNameStr, KeyStr;
 	TCHAR Temp[512];
 	WORD Err;
-	int result = 0; 
+	int result = 0;
 
 	Err = 0;
 	GetStrVal(FileNameStr, &Err);   // ファイル名
@@ -2696,7 +2722,7 @@
 	if (Err!=0) return Err;
 
 	// 文字列が空の場合はエラーとする。
-	if (FileNameStr[0]==0 || 
+	if (FileNameStr[0]==0 ||
 	    KeyStr[0]==0)
 		Err = ErrSyntax;
 	if (Err!=0) return Err;
@@ -2705,11 +2731,11 @@
 
 	Temp[0] = 0;
 	GetPrivateProfileString(_T("Password"), (tc)KeyStr, _T(""),
-	                        Temp, _countof(Temp), (tc)FileNameStr);
+	                        Temp, _countof(Temp), tc::fromUtf8(FileNameStr));
 	if (Temp[0] == 0) { // password not exist
-		result = 0; 
+		result = 0;
 	} else {
-		result = 1; 
+		result = 1;
 	}
 
 	SetResult(result);  // 成功可否を設定する。
@@ -2750,7 +2776,7 @@
 	char *format;
 	BOOL set_result;
 	const char *tz = NULL;
-	char tz_copy[128]; 
+	char tz_copy[128];
 
 	// Save timezone
 	tz = getenv("TZ");
@@ -3135,7 +3161,7 @@
 // logrotate rotate num
 // logrotate halt
 //
-WORD TTLLogRotate() 
+WORD TTLLogRotate()
 {
 	WORD Err;
 	char Str[MaxStrLen];
@@ -3191,7 +3217,7 @@
 	} else if (strcmp(Str, "halt") == 0) {
 		Err = 0;
 		_snprintf_s(buf, sizeof(buf), _TRUNCATE, "%s", Str);
-	} 
+	}
 	if (Err!=0) return Err;
 
 	SetFile(buf);
@@ -3200,7 +3226,7 @@
 	return Err;
 }
 
-WORD TTLLogInfo() 
+WORD TTLLogInfo()
 {
 	WORD Err;
 	TVarId VarId;
@@ -3545,7 +3571,7 @@
 			return -1;
 		}
 
-		// return 
+		// return
 		//   0以上: 選択項目
 		//   -1: キャンセル
 		//	 -2: close
@@ -3640,7 +3666,7 @@
 
 // add 'random' command
 // SYNOPSIS: random <intvar> <value>
-// DESCRIPTION: 
+// DESCRIPTION:
 // This command generates the random value from 0 to <value> and
 // stores the value to <intvar>.
 // (2006.2.11 yutaka)
@@ -4160,7 +4186,7 @@
 					}
 					strncat_s(buff, bufflen, tmp, _TRUNCATE);
 					break;
-				case TypString: 
+				case TypString:
 					AddBroadcastString(buff, bufflen, StrVarPtr((TVarId)Val));
 					break;
 				default:
@@ -4388,6 +4414,7 @@
 		Err = ErrSyntax;
 	if (Err!=0) return Err;
 
+	GetAbsPath(Filename, sizeof(Filename));		// @@ TODO
 	if (SetFileAttributes(tc::fromUtf8(Filename), attributes) == 0) {
 		SetResult(0);
 	}
@@ -4936,7 +4963,7 @@
 
 	ret = FindRegexStringOne(Str2, strlen(Str2), Str1, strlen(Str1));
 	if (ret > 0) { // matched
-		result = ret; 
+		result = ret;
 	} else {
 		result = 0;
 	}
@@ -5048,7 +5075,7 @@
 			 <-->len
 	   XXXXXX****YYY
 	        ^index(np)
-			     ^np+len 
+			     ^np+len
 				 <-->srclen - len - index
 		    ↓
 	   XXXXXXYYY
@@ -5220,16 +5247,16 @@
 
 	// 文字列の先頭から検索する
 	for (i = 0 ; i < srclen ; i++) {
-		if (table[srcptr[i]] == 0) 
+		if (table[srcptr[i]] == 0)
 			break;
 	}
 	// 削除されない有効な文字列の始まり。
 	// すべて削除対象となる場合は、start == srclen 。
-	start = i;  
+	start = i;
 
 	// 文字列の末尾から検索する
 	for (i = srclen - 1 ; i >= 0 ; i--) {
-		if (table[srcptr[i]] == 0) 
+		if (table[srcptr[i]] == 0)
 			break;
 	}
 	// 削除されない有効な文字列の終わり。
@@ -5303,7 +5330,7 @@
 		tok[i] = strtok_s(NULL, delimchars, &last);
 		if (tok[i] == NULL)
 			break;
-	} 
+	}
 #else
 	/* strtokを使うと、連続した区切りが1つに丸められるため、自前でポインタを
 	 * たどる。ただし、区切り文字は1つのみとする。
@@ -5314,7 +5341,7 @@
 		if (i >= maxvar)
 			goto end;
 	}
-	
+
 	for (p = strtok_s(p, delimchars, &last); p != NULL ; p = strtok_s(NULL, delimchars, &last) ) {
 		tok[i++] = p;
 		if (i >= maxvar)
@@ -5617,7 +5644,7 @@
 
 // 'waitregex'(wait regular expression): wait command with regular expression
 //
-// This command has almost same function of 'wait' command. Additionally 'waitregex' can search 
+// This command has almost same function of 'wait' command. Additionally 'waitregex' can search
 // the keyword with regular expression. Tera Term uses a regex library that is called 'Oniguruma'.
 // cf. http://www.geocities.jp/kosako3/oniguruma/
 //
@@ -5881,7 +5908,7 @@
 	return SendCmnd(CmdYmodemSend,IdTTLWaitCmndResult);
 }
 
-// SYNOPSIS: 
+// SYNOPSIS:
 //   scpsend "c:\usr\sample.chm" "doc/sample.chm"
 //   scpsend "c:\usr\sample.chm"
 WORD TTLScpSend()
@@ -5913,7 +5940,7 @@
 	return SendCmnd(CmdScpSend, 0);
 }
 
-// SYNOPSIS: 
+// SYNOPSIS:
 //   scprecv "foo.txt"
 //   scprecv "src/foo.txt" "c:\foo.txt"
 WORD TTLScpRecv()
@@ -6040,7 +6067,7 @@
 		return Err;
 	}
 
-	if (Result) 
+	if (Result)
 		switch (WId) {
 		case RsvBasename:
 			Err = TTLBasename(); break;
@@ -6499,7 +6526,7 @@
 						else
 							E = NewStrVar(Cmnd,StrVarPtr((TVarId)Val));
 						break;
-					default: 
+					default:
 						E = FALSE;
 					}
 					if (! E) Err = ErrTooManyVar;

Modified: branches/cmake/teraterm/ttpmacro/ttl_gui.cpp
===================================================================
--- branches/cmake/teraterm/ttpmacro/ttl_gui.cpp	2018-12-22 17:29:42 UTC (rev 7343)
+++ branches/cmake/teraterm/ttpmacro/ttl_gui.cpp	2018-12-22 17:30:03 UTC (rev 7344)
@@ -505,7 +505,7 @@
 WORD TTLGetPassword()
 {
 	TStrVal Str, Str2, Temp2;
-	char Temp[512];
+	TCHAR Temp[512];
 	WORD Err;
 	TVarId VarId;
 	int result = 0;  /* failure */
@@ -523,8 +523,8 @@
 
 	GetAbsPath(Str,sizeof(Str));
 
-	GetPrivateProfileStringA("Password",Str2,"",
-							 Temp,sizeof(Temp), Str);
+	GetPrivateProfileString(_T("Password"),(tc)Str2,_T(""),
+							Temp,_countof(Temp), tc::fromUtf8(Str));
 	if (Temp[0]==0) // password not exist
 	{
 #if defined(UNICODE)
@@ -538,14 +538,16 @@
 		OpenInpDlg(Temp2, Str2, _T("Enter password"), _T(""), TRUE);
 #endif
 		if (Temp2[0]!=0) {
-			Encrypt(Temp2,Temp);
-			if (WritePrivateProfileStringA("Password",Str2,Temp, Str) != 0) {
+			char TempA[512];
+			Encrypt(Temp2, TempA);
+			if (WritePrivateProfileString(_T("Password"), (tc)Str2, (tc)TempA, tc::fromUtf8(Str)) != 0) {
 				result = 1;  /* success */
 			}
 		}
 	}
 	else {// password exist
-		Decrypt(Temp,Temp2);
+		u8 TempU8 = Temp;
+		Decrypt((PCHAR)(const char *)TempU8,Temp2);
 		result = 1;  /* success */
 	}
 

Modified: branches/cmake/teraterm/ttpmacro/ttmbuff.c
===================================================================
--- branches/cmake/teraterm/ttpmacro/ttmbuff.c	2018-12-22 17:29:42 UTC (rev 7343)
+++ branches/cmake/teraterm/ttpmacro/ttmbuff.c	2018-12-22 17:30:03 UTC (rev 7344)
@@ -36,7 +36,6 @@
 #include "ttmparse.h"
 #include "ttlib.h"
 #include "fileread.h"
-#include "fileread.h"
 
 #include "ttmbuff.h"
 

Modified: branches/cmake/tests/gui_commands_test_utf8.ttl
===================================================================
--- branches/cmake/tests/gui_commands_test_utf8.ttl	2018-12-22 17:29:42 UTC (rev 7343)
+++ branches/cmake/tests/gui_commands_test_utf8.ttl	2018-12-22 17:30:03 UTC (rev 7344)
@@ -2,15 +2,15 @@
 ;;; test gui commands
 ;;;
 ;
-;call test_messagebox
-;call test_errordialogbox
-;call test_yesnobox
-;call test_inputbox
-;call test_passwordbox
-;call test_statusbox
-;call test_macrodialogbox
-;call test_listbox
-;call test_filenamebox
+call test_messagebox
+call test_errordialogbox
+call test_yesnobox
+call test_inputbox
+call test_passwordbox
+call test_statusbox
+call test_macrodialogbox
+call test_listbox
+call test_filenamebox
 call test_dirnamebox
 messagebox "finish all tests" "test"
 end

Added: branches/cmake/tests/test_file.ttl
===================================================================
--- branches/cmake/tests/test_file.ttl	                        (rev 0)
+++ branches/cmake/tests/test_file.ttl	2018-12-22 17:30:03 UTC (rev 7344)
@@ -0,0 +1,198 @@
+;;;
+;;; file commands
+;;;
+;call test_macrodir
+;call test_open
+;call test_filecommands
+;call test_filesearch
+;call test_filestat
+;call test_find
+;call test_folder
+call test_password
+messagebox "finish all tests" "test_file.ttl"
+end
+
+
+;;;
+;;; test folder
+;;;
+:test_macrodir
+:retry
+getdir macro_dir
+dirnamebox "test_file.ttl folder for test/テストで使用するフォルダ" macro_dir
+s = "folder for test:\nテストで使用するフォルダ:\n"
+strspecial s
+strconcat s macro_dir
+yesnobox s "test_file.ttl"
+if result == 0 goto retry
+setdir macro_dir
+return
+
+;;;
+;;; test fileopen
+;;;
+:test_open
+filenamebox '書き込みファイル' 1
+if result == 0 goto test_open
+fname = inputstr
+fileopen fh fname 1
+filewrite fh "testこんにちは안녕하세요"#13#10
+filewriteln fh "testこんにちは안녕하세요"#13#10
+fileclose fh
+return
+
+;;;
+;;; fileopen (create)
+;;; filewrite
+;;; filewriteln
+;;; fileclose
+;;; filerename
+;;; filecreate
+;;; filedelete
+;;; filecopy
+;;; fileconcat
+;;;
+:test_filecommands
+fname_1 = "00こんにちは.txt"
+fileopen fh fname_1 1
+filewrite fh "test1 こんにちは안녕하세요"#13#10
+fileclose fh
+fname_2 = "00مرحبا هناك.txt"
+filerename fname_1 fname_2
+if result <> 0 messagebox "filerename error" "test_file.ttl"
+filecreate fh fname_1
+filewriteln fh "test2 こんにちは안녕하세요"
+fileclose fh
+messagebox "checkfiles 1" "test_file.ttl"
+fileconcat fname_1 fname_2
+messagebox "checkfiles 2" "test_file.ttl"
+
+if result <> 0 messagebox "fileconcat error" "test_file.ttl"
+fname_3 = "00привет там.txt"
+filecopy fname_1 fname_3
+if result <> 0 messagebox "filecopy error" "test_file.ttl"
+filetruncate fname_1 1024
+if result <> 0 messagebox "filetruncate error" "test_file.ttl"
+messagebox "checkfiles 3" "test_file.ttl"
+filedelete fname_1
+if result <> 0 messagebox "filedelete error" "test_file.ttl"
+filedelete fname_2
+if result <> 0 messagebox "filedelete error" "test_file.ttl"
+filedelete fname_3
+if result <> 0 messagebox "filedelete error" "test_file.ttl"
+messagebox "checkfiles 4" "test_file.ttl"
+
+;;;
+;;; filesearch
+;;;
+:test_filesearch
+fname = "hello ワールド.bin"
+filesearch fname
+if result = 1 messagebox "check filesearch 1" "test_file.ttl"
+;;fileopen fh fname 1 1	;@@@@ TODO read only でファイルが生成できてしまう
+fileopen fh fname 1
+filewriteln fh "this is hello world"
+fileclose fh
+filesearch fname
+if result = 0 messagebox "check filesearch 2" "test_file.ttl"
+filedelete fname
+filesearch fname
+if result = 1 messagebox "check filesearch 3" "test_file.ttl"
+return
+
+;;;
+;;; filestat
+;;;
+:test_filestat
+fname = "statテスト.bin"
+filetruncate fname 10240
+filestat fname size
+if result = -1 messagebox "check filestat 1" "test_file.ttl"
+if size <> 10240 messagebox "check filestat 2" "test_file.ttl"
+filedelete fname
+return
+
+;;;
+;;; findfirst
+;;; findnext
+;;; findclose
+;;;
+:test_find
+n = 0
+filelist = ""
+findfirst dh "*.ttl" filename
+if result = 1 then
+	while result
+		strconcat filelist filename
+		strconcat filelist "\n"
+		n = n + 1
+		findnext dh filename
+	endwhile
+endif
+findclose dh
+strspecial filelist
+messagebox filelist "test_file.ttl"
+return
+
+;;;
+;;; foldercreate
+;;; folderdelete
+;;; foldersearch
+;;; setfileattr
+;;; getfileattr
+;;;
+:test_folder
+dname = "フォルダمجلدaa"
+foldersearch dname
+if result == 1 messagebox "check foldersearch 1" "test_file.ttl"
+foldercreate "フォルダمجلدaa"
+fname = "フォルダمجلدaa/test.txt"
+filecreate fh fname
+filewriteln fh "こんにちは"
+fileclose fh
+getfileattr fname
+if result == -1 messagebox "check getfileattr" "test_file.ttl"
+foldersearch dname
+if result == 0 messagebox "check foldersearch 2" "test_file.ttl"
+folderdelete dname
+if result == 0 messagebox "check folderdelete 1" "test_file.ttl"
+setfileattr fname $1
+if result == 0 messagebox "check setfileattr 1" "test_file.ttl"
+setfileattr fname $80
+if result == 0 messagebox "check setfileattr 2" "test_file.ttl"
+filedelete fname
+folderdelete dname
+if result <> 0 messagebox "check folderdelete 2" "test_file.ttl"
+foldersearch dname
+if result == 1 messagebox "check foldersearch 3" "test_file.ttl"
+return
+
+;;;
+;;; setpassword
+;;; getpassword
+;;; ispassword
+;;; delpassword
+;;;
+:test_password
+pwfile = "パスワード.txt"
+filedelete pwfile
+pw1 = "password"
+setpassword pwfile "password1" pw1
+if result == 0 messagebox "check setpassword 1" "test_file.ttl"
+getpassword pwfile "password1" pw2
+if result == 0 messagebox "check getpassword 2" "test_file.ttl"
+strcompare pw1 pw2
+if result <> 0 messagebox "check setpassword 3" "test_file.ttl"
+getpassword pwfile "password2" pw1
+if result == 0 messagebox "check getpassword 4" "test_file.ttl"
+getpassword pwfile "password2" pw2
+if result == 0 messagebox "check getpassword 5" "test_file.ttl"
+strcompare pw1 pw2
+if result <> 0 messagebox "check setpassword 6" "test_file.ttl"
+ispassword pwfile "password2"
+if result <> 1 messagebox "check ispassword 7" "test_file.ttl"
+delpassword pwfile "password2"
+ispassword pwfile "password2"
+if result <> 0 messagebox "check ispassword 8" "test_file.ttl"
+filedelete pwfile
+return


Ttssh2-commit メーリングリストの案内
Back to archive index