[ttssh2-commit] [9618] ダウンロードフォルダをUnicode化

Back to archive index
scmno****@osdn***** scmno****@osdn*****
2021年 12月 23日 (木) 22:19:07 JST


Revision: 9618
          https://osdn.net/projects/ttssh2/scm/svn/commits/9618
Author:   zmatsuo
Date:     2021-12-23 22:19:06 +0900 (Thu, 23 Dec 2021)
Log Message:
-----------
ダウンロードフォルダをUnicode化

- ts->FileDirW を追加

Modified Paths:
--------------
    trunk/teraterm/common/tttypes.h
    trunk/teraterm/teraterm/filesys_proto.cpp
    trunk/teraterm/ttpset/ttset.c

-------------- next part --------------
Modified: trunk/teraterm/common/tttypes.h
===================================================================
--- trunk/teraterm/common/tttypes.h	2021-12-23 13:18:57 UTC (rev 9617)
+++ trunk/teraterm/common/tttypes.h	2021-12-23 13:19:06 UTC (rev 9618)
@@ -383,7 +383,7 @@
 	WORD XmodemOpt, XmodemBin;
 	int ZmodemDataLen, ZmodemWinSize;
 	int QVWinSize;
-	char FileDir[MAXPATHLEN];
+	char FileDir[MAXPATHLEN];		// switch FileDirW
 	char FileSendFilter[128];
 	WORD Language;
 	char DelimList[52];
@@ -644,6 +644,7 @@
 	wchar_t *UILanguageFileW_ini;		// \x91\x8A\x91΃p\x83X,ini\x83t\x83@\x83C\x83\x8B\x82̒\x86\x90g
 	wchar_t *ExeDirW;					// ttermpro.exe \x82̂\xA0\x82\xE9\x83t\x83H\x83\x8B\x83_
 	wchar_t *LogDirW;					// log\x82\xE2\x83_\x83\x93\x83v\x82\xF0\x92u\x82\xAD\x83t\x83H\x83\x8B\x83_
+	wchar_t *FileDirW;					// \x83_\x83E\x83\x93\x83\x8D\x81[\x83h\x83p\x83X(\x83\x8D\x81[\x83h\x8E\x9E\x8A‹\xAB\x95ϐ\x94\x82\xAA\x93W\x8AJ\x82\xB3\x82\xEA\x82邪\x83Z\x81[\x83u\x8E\x9E\x8E\xB8\x82\xED\x82\xEA\x82\xE9)
 };
 
 typedef struct tttset TTTSet, *PTTSet;

Modified: trunk/teraterm/teraterm/filesys_proto.cpp
===================================================================
--- trunk/teraterm/teraterm/filesys_proto.cpp	2021-12-23 13:18:57 UTC (rev 9617)
+++ trunk/teraterm/teraterm/filesys_proto.cpp	2021-12-23 13:19:06 UTC (rev 9618)
@@ -677,7 +677,7 @@
 static wchar_t **_GetXFname(HWND HWin, BOOL Receive, const wchar_t *caption, LPLONG Option)
 {
 	wchar_t FileDirExpanded[MAX_PATH];
-	ExpandEnvironmentStringsW((wc)ts.FileDir, FileDirExpanded, _countof(FileDirExpanded));
+	ExpandEnvironmentStringsW(ts.FileDirW, FileDirExpanded, _countof(FileDirExpanded));
 	wchar_t *CurDir = FileDirExpanded;
 
 	wchar_t *FNFilter = GetCommonDialogFilterW(!Receive ? ts.FileSendFilter : NULL, ts.UILanguageFile);

Modified: trunk/teraterm/ttpset/ttset.c
===================================================================
--- trunk/teraterm/ttpset/ttset.c	2021-12-23 13:18:57 UTC (rev 9617)
+++ trunk/teraterm/ttpset/ttset.c	2021-12-23 13:19:06 UTC (rev 9618)
@@ -1297,18 +1297,24 @@
 	                        sizeof(ts->XModemRcvCommand), FName);
 
 	/* Default directory for file transfer */
-	GetPrivateProfileString(Section, "FileDir", "",
-	                        ts->FileDir, sizeof(ts->FileDir), FName);
-	if (strlen(ts->FileDir) == 0)
-		GetDownloadFolder(ts->FileDir, sizeof(ts->FileDir));
-	else {
-		char FileDirExpanded[MAX_PATH];
-		ExpandEnvironmentStrings(ts->FileDir, FileDirExpanded, sizeof(FileDirExpanded));
-		_getcwd(Temp, sizeof(Temp));
-		if (_chdir(FileDirExpanded) != 0)
-			GetDownloadFolder(ts->FileDir, sizeof(ts->FileDir));
-		_chdir(Temp);
+	hGetPrivateProfileStringW(SectionW, L"FileDir", L"", FName, &ts->FileDirW);
+	if (ts->FileDirW != NULL && ts->FileDirW[0] != 0) {
+		wchar_t *FileDirExpanded;
+		hExpandEnvironmentStringsW(ts->FileDirW, &FileDirExpanded);
+		free(ts->FileDirW);
+		ts->FileDirW = NULL;
+		if (DoesFolderExistW(FileDirExpanded)) {
+			ts->FileDirW = FileDirExpanded;
+		}
+		else {
+			free(FileDirExpanded);
+		}
 	}
+	if (ts->FileDirW == NULL || ts->FileDirW[0] == 0) {
+		free(ts->FileDirW);
+		ts->FileDirW = GetDownloadFolderW();
+	}
+	WideCharToACP_t(ts->FileDirW, ts->FileDir, sizeof(ts->FileDir));
 
 	/* filter on file send (2007.6.5 maya) */
 	GetPrivateProfileString(Section, "FileSendFilter", "",
@@ -2774,7 +2780,7 @@
 	                          ts->XModemRcvCommand, FName);
 
 	/* Default directory for file transfer */
-	WritePrivateProfileString(Section, "FileDir", ts->FileDir, FName);
+	WritePrivateProfileStringW(SectionW, L"FileDir", ts->FileDirW, FName);
 
 	/* filter on file send (2007.6.5 maya) */
 	WritePrivateProfileString(Section, "FileSendFilter",
@@ -3855,15 +3861,12 @@
 		else if (_wcsnicmp(Temp, L"/FD=", 4) == 0) {	/* file transfer directory */
 			wcsncpy_s(Temp2, _countof(Temp2), &Temp[4], _TRUNCATE);
 			if (wcslen(Temp2) > 0) {
-				char TempDir[MAXPATHLEN];
-				_getcwd(TempDir, _countof(TempDir));
-				if (_wchdir(Temp2) == 0) {
-					char *FileDirA = ToCharW(Temp2);
-					strncpy_s(ts->FileDir, sizeof(ts->FileDir), FileDirA,
-					          _TRUNCATE);
-					free(FileDirA);
+				wchar_t *dir = Temp2;
+				if (DoesFolderExistW(dir)) {
+					free(ts->FileDirW);
+					ts->FileDirW = _wcsdup(dir);
+					WideCharToACP_t(ts->FileDirW, ts->FileDir, sizeof(ts->FileDir));
 				}
-				_chdir(TempDir);
 			}
 		}
 		else if (_wcsicmp(Temp, L"/H") == 0)	/* hide title bar */


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