• R/O
  • SSH
  • HTTPS

ttssh2: Commit


Commit MetaInfo

Revisão6749 (tree)
Hora2017-05-27 09:24:51
Autor(del#1144)

Mensagem de Log

FileDir の初期値をDownloads(XP以前はMy Documents)に変更

Mudança Sumário

Diff

--- trunk/teraterm/common/ttlib.c (revision 6748)
+++ trunk/teraterm/common/ttlib.c (revision 6749)
@@ -823,6 +823,37 @@
823823 return v;
824824 }
825825
826+void GetDownloadFolder(char *dest, int destlen)
827+{
828+ HMODULE hDll;
829+ typedef GUID KNOWNFOLDERID;
830+ typedef HRESULT(WINAPI *SHGETKNOWNFOLDERPATH)(KNOWNFOLDERID*, DWORD, HANDLE, PWSTR*);
831+ // {374DE290-123F-4565-9164-39C4925E467B}
832+ KNOWNFOLDERID FOLDERID_Downloads = { 0x374de290, 0x123f, 0x4565, 0x91, 0x64, 0x39, 0xc4, 0x92, 0x5e, 0x46, 0x7b };
833+ char download[MAX_PATH];
834+
835+ memset(download, 0, sizeof(download));
836+ if (hDll = LoadLibrary("shell32.dll")) {
837+ SHGETKNOWNFOLDERPATH pSHGetKnownFolderPath = (SHGETKNOWNFOLDERPATH)GetProcAddress(hDll, "SHGetKnownFolderPath");
838+ if (pSHGetKnownFolderPath) {
839+ PWSTR pBuffer = NULL;
840+ pSHGetKnownFolderPath(&FOLDERID_Downloads, 0, NULL, &pBuffer);
841+ WideCharToMultiByte(CP_ACP, 0, pBuffer, -1, download, sizeof(download), NULL, NULL);
842+ }
843+ FreeLibrary(hDll);
844+ }
845+ if (strlen(download) == 0) {
846+ LPITEMIDLIST pidl;
847+ if (SHGetSpecialFolderLocation(NULL, CSIDL_PERSONAL, &pidl) == NOERROR) {
848+ SHGetPathFromIDList(pidl, download);
849+ CoTaskMemFree(pidl);
850+ }
851+ }
852+ if (strlen(download) > 0) {
853+ strncpy_s(dest, destlen, download, _TRUNCATE);
854+ }
855+}
856+
826857 void WINAPI GetDefaultFName(char *home, char *file, char *dest, int destlen)
827858 {
828859 // My Documents に file がある場合、
--- trunk/teraterm/common/ttlib.h (revision 6748)
+++ trunk/teraterm/common/ttlib.h (revision 6749)
@@ -37,6 +37,7 @@
3737 BOOL GetNthString(PCHAR Source, int Nth, int Size, PCHAR Dest);
3838 void GetNthNum(PCHAR Source, int Nth, int far *Num);
3939 int GetNthNum2(PCHAR Source, int Nth, int defval);
40+void GetDownloadFolder(char *dest, int destlen);
4041 void WINAPI GetDefaultFName(char *home, char *file, char *dest, int destlen);
4142 void GetDefaultSetupFName(char *home, char *dest, int destlen);
4243 void GetUILanguageFile(char *buf, int buflen);
--- trunk/teraterm/ttpset/ttset.c (revision 6748)
+++ trunk/teraterm/ttpset/ttset.c (revision 6749)
@@ -1102,11 +1102,11 @@
11021102 GetPrivateProfileString(Section, "FileDir", "",
11031103 ts->FileDir, sizeof(ts->FileDir), FName);
11041104 if (strlen(ts->FileDir) == 0)
1105- strncpy_s(ts->FileDir, sizeof(ts->FileDir), ts->HomeDir, _TRUNCATE);
1105+ GetDownloadFolder(ts->FileDir, sizeof(ts->FileDir));
11061106 else {
11071107 _getcwd(Temp, sizeof(Temp));
11081108 if (_chdir(ts->FileDir) != 0)
1109- strncpy_s(ts->FileDir, sizeof(ts->FileDir), ts->HomeDir, _TRUNCATE);
1109+ GetDownloadFolder(ts->FileDir, sizeof(ts->FileDir));
11101110 _chdir(Temp);
11111111 }
11121112
Show on old repository browser