• R/O
  • SSH
  • HTTPS

ttssh2: Commit


Commit MetaInfo

Revision7951 (tree)
Time2019-08-14 00:29:48
Authormaya

Log Message

FileDir を使用するとき、環境変数を展開するようにした #39456

Change Summary

Incremental Difference

--- trunk/doc/en/html/about/history.html (revision 7950)
+++ trunk/doc/en/html/about/history.html (revision 7951)
@@ -37,6 +37,7 @@
3737 <ul>
3838 <li>MARCO: The <a href="../macro/command/fileopen.html">fileopen</a> command does not cause an error when a file can not be opened. Reverted changes in Ver 4.102.</li>
3939 <!--li><a href="../macro/command/filetruncate.html">filetruncate</a> マクロコマンドがでファルが開けない場合・ファイルサイズの変更に失敗した場合エラーにならないようにした。</li-->
40+ <!--li><a href="../menu/file-chdir.html">ファイル転送のためのディレクトリ</a>に含まれる環境変数を展開するようにした。</li-->
4041 <li>Unspecified string font in IME uses your defined font.</li>
4142 <!--li><a href="../setup/teraterm-win.html#textselect">Disabling text selection when the window is activated by mouse</a>を<a href="../menu/setup-additional.html#SelectOnActivate">ダイアログ</a>で設定できるようにした。</li-->
4243 </ul>
--- trunk/doc/en/html/menu/file-chdir.html (revision 7950)
+++ trunk/doc/en/html/menu/file-chdir.html (revision 7951)
@@ -16,7 +16,8 @@
1616
1717 <h2>"Change directory" dialog box</h2>
1818 <p>
19- Enter a new directory name.
19+ Enter a new directory name.<br />
20+ <!--この設定値が使用されるとき、環境変数が含まれていれば展開されます。-->
2021 </p>
2122 </body>
2223 </html>
--- trunk/doc/ja/html/about/history.html (revision 7950)
+++ trunk/doc/ja/html/about/history.html (revision 7951)
@@ -37,6 +37,7 @@
3737 <ul>
3838 <li><a href="../macro/command/fileopen.html">fileopen</a> マクロコマンドで、ファイルが開けない場合にエラーにならないようにした。Ver 4.102での変更を元に戻した。</li>
3939 <li><a href="../macro/command/filetruncate.html">filetruncate</a> マクロコマンドがでファルが開けない場合・ファイルサイズの変更に失敗した場合エラーにならないようにした。</li>
40+ <li><a href="../menu/file-chdir.html">ファイル転送のためのディレクトリ</a>に含まれる環境変数を展開するようにした。</li>
4041 <li>IMEの未確定文字のフォントが指定フォントと同一になるようにした。</li>
4142 <li><a href="../setup/teraterm-win.html#textselect">マウスでウィンドウを選択したときの文字の選択を禁止する</a>を<a href="../menu/setup-additional.html#SelectOnActivate">ダイアログ</a>で設定できるようにした。</li>
4243 </ul>
--- trunk/doc/ja/html/menu/file-chdir.html (revision 7950)
+++ trunk/doc/ja/html/menu/file-chdir.html (revision 7951)
@@ -16,7 +16,8 @@
1616
1717 <h2>"Change directory" ダイアログボックス</h2>
1818 <p>
19- 新しいディレクトリを入力してください。
19+ 新しいディレクトリを入力してください。<br />
20+ この設定値が使用されるとき、環境変数が含まれていれば展開されます。
2021 </p>
2122 </body>
2223 </html>
--- trunk/teraterm/teraterm/filesys.cpp (revision 7950)
+++ trunk/teraterm/teraterm/filesys.cpp (revision 7951)
@@ -318,8 +318,10 @@
318318 *fv = (PFileVar)malloc(sizeof(TFileVar));
319319 if ((*fv)!=NULL)
320320 {
321+ char FileDirExpanded[MAX_PATH];
322+ ExpandEnvironmentStrings(ts.FileDir, FileDirExpanded, sizeof(FileDirExpanded));
321323 memset(*fv, 0, sizeof(TFileVar));
322- strncpy_s((*fv)->FullName, sizeof((*fv)->FullName),ts.FileDir, _TRUNCATE);
324+ strncpy_s((*fv)->FullName, sizeof((*fv)->FullName), FileDirExpanded, _TRUNCATE);
323325 AppendSlash((*fv)->FullName,sizeof((*fv)->FullName));
324326 (*fv)->DirLen = strlen((*fv)->FullName);
325327 (*fv)->FileOpen = FALSE;
@@ -490,6 +492,7 @@
490492 char buf[512];
491493 const char *crlf = "\r\n";
492494 DWORD crlf_len = 2;
495+ char FileDirExpanded[MAX_PATH];
493496
494497 if ((FileLog) || (BinLog)) return FALSE;
495498
@@ -505,7 +508,8 @@
505508 logdir = ts.LogDefaultPath;
506509 }
507510 else if (strlen(ts.FileDir) > 0) {
508- logdir = ts.FileDir;
511+ ExpandEnvironmentStrings(ts.FileDir, FileDirExpanded, sizeof(FileDirExpanded));
512+ logdir = FileDirExpanded;
509513 }
510514 else {
511515 logdir = ts.HomeDir;
@@ -1174,11 +1178,13 @@
11741178
11751179 FSend = TRUE;
11761180
1177- if (strlen(&(SendVar->FullName[SendVar->DirLen]))==0) {
1181+ if (strlen(&(SendVar->FullName[SendVar->DirLen])) == 0) {
1182+ char FileDirExpanded[MAX_PATH];
1183+ ExpandEnvironmentStrings(ts.FileDir, FileDirExpanded, sizeof(FileDirExpanded));
11781184 if (ts.TransBin)
11791185 Option |= LOGDLG_BINARY;
11801186 SendVar->FullName[0] = 0;
1181- if (! (*GetTransFname)(SendVar, ts.FileDir, GTF_SEND, &Option)) {
1187+ if (! (*GetTransFname)(SendVar, FileDirExpanded, GTF_SEND, &Option)) {
11821188 FileTransEnd(OpSendFile);
11831189 return;
11841190 }
@@ -1632,7 +1638,9 @@
16321638 FileVar->OpId = OpKmtSend;
16331639 if (strlen(&(FileVar->FullName[FileVar->DirLen]))==0)
16341640 {
1635- if (! (*GetMultiFname)(FileVar,ts.FileDir,GMF_KERMIT,&w) ||
1641+ char FileDirExpanded[MAX_PATH];
1642+ ExpandEnvironmentStrings(ts.FileDir, FileDirExpanded, sizeof(FileDirExpanded));
1643+ if (!(*GetMultiFname)(FileVar, FileDirExpanded, GMF_KERMIT, &w) ||
16361644 (FileVar->NumFname==0))
16371645 {
16381646 ProtoEnd();
@@ -1690,9 +1698,11 @@
16901698
16911699 if (strlen(&(FileVar->FullName[FileVar->DirLen]))==0)
16921700 {
1701+ char FileDirExpanded[MAX_PATH];
1702+ ExpandEnvironmentStrings(ts.FileDir, FileDirExpanded, sizeof(FileDirExpanded));
16931703 Option = MAKELONG(ts.XmodemBin,ts.XmodemOpt);
16941704 if (! (*GetXFname)(FileVar->HMainWin,
1695- mode==IdXReceive,&Option,FileVar,ts.FileDir))
1705+ mode==IdXReceive,&Option,FileVar,FileDirExpanded))
16961706 {
16971707 ProtoEnd();
16981708 return;
@@ -1769,6 +1779,9 @@
17691779
17701780 if (mode==IdYSend)
17711781 {
1782+ char FileDirExpanded[MAX_PATH];
1783+ ExpandEnvironmentStrings(ts.FileDir, FileDirExpanded, sizeof(FileDirExpanded));
1784+
17721785 // ファイル転送時のオプションは"Yopt1K"に決め打ち。
17731786 // TODO: "Yopt1K", "YoptG", "YoptSingle"を区別したいならば、IDD_FOPTを拡張する必要あり。
17741787 Opt = Yopt1K;
@@ -1775,7 +1788,7 @@
17751788 FileVar->OpId = OpYSend;
17761789 if (strlen(&(FileVar->FullName[FileVar->DirLen]))==0)
17771790 {
1778- if (! (*GetMultiFname)(FileVar,ts.FileDir,GMF_Y,&Opt) ||
1791+ if (! (*GetMultiFname)(FileVar,FileDirExpanded,GMF_Y,&Opt) ||
17791792 (FileVar->NumFname==0))
17801793 {
17811794 ProtoEnd();
@@ -1815,7 +1828,9 @@
18151828 FileVar->OpId = OpZSend;
18161829 if (strlen(&(FileVar->FullName[FileVar->DirLen]))==0)
18171830 {
1818- if (! (*GetMultiFname)(FileVar,ts.FileDir,GMF_Z,&Opt) ||
1831+ char FileDirExpanded[MAX_PATH];
1832+ ExpandEnvironmentStrings(ts.FileDir, FileDirExpanded, sizeof(FileDirExpanded));
1833+ if (! (*GetMultiFname)(FileVar,FileDirExpanded,GMF_Z,&Opt) ||
18191834 (FileVar->NumFname==0))
18201835 {
18211836 if (mode == IdZAutoS) {
@@ -1852,8 +1867,10 @@
18521867 FileVar->OpId = OpBPSend;
18531868 if (strlen(&(FileVar->FullName[FileVar->DirLen]))==0)
18541869 {
1870+ char FileDirExpanded[MAX_PATH];
1871+ ExpandEnvironmentStrings(ts.FileDir, FileDirExpanded, sizeof(FileDirExpanded));
18551872 FileVar->FullName[0] = 0;
1856- if (! (*GetTransFname)(FileVar, ts.FileDir, GTF_BP, &Option))
1873+ if (! (*GetTransFname)(FileVar, FileDirExpanded, GTF_BP, &Option))
18571874 {
18581875 ProtoEnd();
18591876 return;
@@ -1886,7 +1903,9 @@
18861903 FileVar->OpId = OpQVSend;
18871904 if (strlen(&(FileVar->FullName[FileVar->DirLen]))==0)
18881905 {
1889- if (! (*GetMultiFname)(FileVar,ts.FileDir,GMF_QV, &W) ||
1906+ char FileDirExpanded[MAX_PATH];
1907+ ExpandEnvironmentStrings(ts.FileDir, FileDirExpanded, sizeof(FileDirExpanded));
1908+ if (! (*GetMultiFname)(FileVar,FileDirExpanded,GMF_QV, &W) ||
18901909 (FileVar->NumFname==0))
18911910 {
18921911 ProtoEnd();
--- trunk/teraterm/ttpdlg/ttdlg.c (revision 7950)
+++ trunk/teraterm/ttpdlg/ttdlg.c (revision 7951)
@@ -1829,11 +1829,14 @@
18291829 case IDOK:
18301830 CurDir = (PCHAR)GetWindowLongPtr(Dialog,DWLP_USER);
18311831 if ( CurDir!=NULL ) {
1832+ char FileDirExpanded[MAX_PATH];
18321833 _getcwd(HomeDir,sizeof(HomeDir));
1833- _chdir(CurDir);
1834+ ExpandEnvironmentStrings(CurDir, FileDirExpanded, sizeof(FileDirExpanded));
1835+ _chdir(FileDirExpanded);
18341836 GetDlgItemText(Dialog, IDC_DIRNEW, TmpDir, sizeof(TmpDir));
18351837 if ( strlen(TmpDir)>0 ) {
1836- if (_chdir(TmpDir) != 0) {
1838+ ExpandEnvironmentStrings(TmpDir, FileDirExpanded, sizeof(FileDirExpanded));
1839+ if (_chdir(FileDirExpanded) != 0) {
18371840 get_lang_msg("MSG_TT_ERROR", uimsg2, sizeof(uimsg2), "Tera Term: Error", UILanguageFile);
18381841 get_lang_msg("MSG_FIND_DIR_ERROR", uimsg, sizeof(uimsg), "Cannot find directory", UILanguageFile);
18391842 MessageBox(Dialog,uimsg,uimsg2,MB_ICONEXCLAMATION);
@@ -1840,7 +1843,7 @@
18401843 _chdir(HomeDir);
18411844 return TRUE;
18421845 }
1843- _getcwd(CurDir,MAXPATHLEN);
1846+ strncpy_s(CurDir, MAXPATHLEN, TmpDir, _TRUNCATE);
18441847 }
18451848 _chdir(HomeDir);
18461849 }
@@ -1854,9 +1857,13 @@
18541857 case IDC_SELECT_DIR:
18551858 get_lang_msg("DLG_SELECT_DIR_TITLE", uimsg, sizeof(uimsg),
18561859 "Select new directory", UILanguageFile);
1857- GetDlgItemText(Dialog, IDC_DIRNEW, buf, sizeof(buf));
1858- if (doSelectFolder(Dialog, buf2, sizeof(buf2), buf, uimsg)) {
1859- SetDlgItemText(Dialog, IDC_DIRNEW, buf2);
1860+ {
1861+ char FileDirExpanded[MAX_PATH];
1862+ GetDlgItemText(Dialog, IDC_DIRNEW, buf, sizeof(buf));
1863+ ExpandEnvironmentStrings(buf, FileDirExpanded, sizeof(FileDirExpanded));
1864+ if (doSelectFolder(Dialog, buf2, sizeof(buf2), FileDirExpanded, uimsg)) {
1865+ SetDlgItemText(Dialog, IDC_DIRNEW, buf2);
1866+ }
18601867 }
18611868 return TRUE;
18621869
--- trunk/teraterm/ttpset/ttset.c (revision 7950)
+++ trunk/teraterm/ttpset/ttset.c (revision 7951)
@@ -1190,8 +1190,10 @@
11901190 if (strlen(ts->FileDir) == 0)
11911191 GetDownloadFolder(ts->FileDir, sizeof(ts->FileDir));
11921192 else {
1193+ char FileDirExpanded[MAX_PATH];
1194+ ExpandEnvironmentStrings(ts->FileDir, FileDirExpanded, sizeof(FileDirExpanded));
11931195 _getcwd(Temp, sizeof(Temp));
1194- if (_chdir(ts->FileDir) != 0)
1196+ if (_chdir(FileDirExpanded) != 0)
11951197 GetDownloadFolder(ts->FileDir, sizeof(ts->FileDir));
11961198 _chdir(Temp);
11971199 }
--- trunk/ttssh2/ttxssh/ssh.c (revision 7950)
+++ trunk/ttssh2/ttxssh/ssh.c (revision 7951)
@@ -4071,18 +4071,16 @@
40714071 strncpy_s(c->scp.remotefile, sizeof(c->scp.remotefile), sendfile, _TRUNCATE);
40724072
40734073 if (dstfile == NULL || dstfile[0] == '\0') { // local file path is empty.
4074- char *fn, *cwd;
4074+ char *fn;
4075+ char FileDirExpanded[MAX_PATH];
40754076
40764077 fn = strrchr(sendfile, '/');
40774078 if (fn && fn[1] == '\0')
40784079 goto error;
4079- cwd = pvar->ts->FileDir;
4080- //cwd = _getcwd(NULL, 0);
40814080
4082- _snprintf_s(c->scp.localfilefull, sizeof(c->scp.localfilefull), _TRUNCATE, "%s\\%s", cwd, fn ? fn : sendfile);
4081+ ExpandEnvironmentStrings(pvar->ts->FileDir, FileDirExpanded, sizeof(FileDirExpanded));
4082+ _snprintf_s(c->scp.localfilefull, sizeof(c->scp.localfilefull), _TRUNCATE, "%s\\%s", FileDirExpanded, fn ? fn : sendfile);
40834083 ExtractFileName(c->scp.localfilefull, c->scp.localfile, sizeof(c->scp.localfile)); // file name only
4084-
4085- //free(cwd); // free!!
40864084 } else {
40874085 _snprintf_s(c->scp.localfilefull, sizeof(c->scp.localfilefull), _TRUNCATE, "%s", dstfile);
40884086 ExtractFileName(dstfile, c->scp.localfile, sizeof(c->scp.localfile)); // file name only
--- trunk/ttssh2/ttxssh/ttxssh.c (revision 7950)
+++ trunk/ttssh2/ttxssh/ttxssh.c (revision 7951)
@@ -3919,6 +3919,7 @@
39193919 char recvpath[MAX_PATH] = "";
39203920 char* fn = strrchr(szFileName, '/');
39213921 char recvfn[sizeof(szFileName)];
3922+ char recvdir_expanded[MAX_PATH];
39223923
39233924 // 送信パスを取り出し、ts->ScpSendDir も合わせて更新する。
39243925 hWnd = GetDlgItem(dlg, IDC_SENDFILE_TO);
@@ -3928,6 +3929,7 @@
39283929 // 受信パスを取り出し、ts->FileDir も合わせて更新する。
39293930 hWnd = GetDlgItem(dlg, IDC_RECVFILE_TO);
39303931 SendMessage(hWnd, WM_GETTEXT , sizeof(recvdir), (LPARAM)recvdir);
3932+ ExpandEnvironmentStrings(recvdir, recvdir_expanded, sizeof(recvdir_expanded));
39313933 strncpy_s(pvar->ts->FileDir, sizeof(pvar->ts->FileDir), recvdir, _TRUNCATE);
39323934
39333935 if (fn) {
@@ -3941,7 +3943,7 @@
39413943 }
39423944 strncpy_s(recvfn, sizeof(recvfn), fn, _TRUNCATE);
39433945 replaceInvalidFileNameChar(recvfn, '_');
3944- _snprintf_s(recvpath, sizeof(recvpath), _TRUNCATE, "%s\\%s", recvdir, recvfn);
3946+ _snprintf_s(recvpath, sizeof(recvpath), _TRUNCATE, "%s\\%s", recvdir_expanded, recvfn);
39453947 SSH_scp_transaction(pvar, szFileName, recvpath, FROMREMOTE);
39463948 EndDialog(dlg, 1); // dialog close
39473949 return TRUE;
Show on old repository browser