Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions doc/en/html/about/history.html
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,11 @@ <h3 id="teraterm_5.6.3">YYYY.MM.DD (Ver 5.6.3 not released yet)</h3>
Fixed an issue where YMODEM transfers from the local host to a remote system did not stop on the receiver side when the Cancel button was pressed during file transmission.
(<a href="https://github.com/TeraTermProject/teraterm/issues/1439" target="_blank">issue #1439</a>)
</li>
<li>
Fixed an issue where the settings (color, font and menu language) from the setup file specified with the /F= command line option were not applied to the duplicated session.
This bug was introduced in 5.6.0.
(<a href="https://github.com/TeraTermProject/teraterm/issues/1453" target="_blank">issue #1453</a>)
</li>
</ul>
</li>

Expand Down
5 changes: 5 additions & 0 deletions doc/ja/html/about/history.html
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,11 @@ <h3 id="teraterm_5.6.3">YYYY.MM.DD (Ver 5.6.3 not released yet)</h3>
YMODEMを使用したファイル送信中にCancelボタンを押下しても、受信側のYMODEMが停止しない不具合を修正した。
(<a href="https://github.com/TeraTermProject/teraterm/issues/1439" target="_blank">issue #1439</a>)
</li>
<li>
セッションの複製で、コマンドラインの /F= で指定した設定(色,フォント,メニューの言語)が複製先に反映されない不具合を修正した。
5.6.0 からの不具合。
(<a href="https://github.com/TeraTermProject/teraterm/issues/1453" target="_blank">issue #1453</a>)
</li>
</ul>
</li>

Expand Down
6 changes: 6 additions & 0 deletions teraterm/teraterm/ttdde.c
Original file line number Diff line number Diff line change
Expand Up @@ -614,11 +614,17 @@ static HDDEDATA AcceptExecute(HSZ TopicHSz, HDDEDATA Data)
if (LoadTTSET()) {
char *tmp_u8;
wchar_t *commandline;
wchar_t *prev_setup = _wcsdup(ts.SetupFNameW);
asprintf(&tmp_u8, "a %s", ParamFileName); // "a" = dummy exe name
commandline = ToWcharU8(tmp_u8);
(*ParseParam)(commandline, &ts, NULL);
free(commandline);
free(tmp_u8);
if (prev_setup != NULL && _wcsicmp(prev_setup, ts.SetupFNameW) != 0) {
/* /F= 縺ァ險ュ螳壹ヵ繧。繧、繝ォ縺悟、画峩縺輔l縺溘りェュ縺ソ逶エ縺励※陦ィ遉コ縺ク蜀埼←逕ィ縺吶k */
PostMessage(HVTWin, WM_USER_ACCELCOMMAND, IdCmdRestoreSetup, 0);
}
free(prev_setup);
}
FreeTTSET();
cv.NoMsg = 1; /* suppress error messages */
Expand Down
28 changes: 28 additions & 0 deletions teraterm/teraterm/vtdisp.c
Original file line number Diff line number Diff line change
Expand Up @@ -2258,6 +2258,34 @@ void DispChangeWinSize(vtdraw_t *vt, int Nx, int Ny)
InvalidateRect(vt->hVTWin,NULL,FALSE);
}

/**
* 險ュ螳(濶イ,繝輔か繝ウ繝,繝。繝九Η繝シ)繧定。ィ遉コ縺ク驕ゥ逕ィ縺吶k
* 螳溯。御クュ縺ォ /F= 謖�ョ壹〒險ュ螳壹ヵ繧。繧、繝ォ繧定ェュ縺ソ逶エ縺励◆蠕
* (繧サ繝�す繝ァ繝ウ隍�」ス縺ョ DDE 邨檎罰謗・邯壹d譁ー隕乗磁邯壹ム繧、繧「繝ュ繧ー)縺ォ蜻シ縺カ縲
*
* 譯∵焚繝サ陦梧焚縺ッ螟峨∴縺壹√ヵ繧ゥ繝ウ繝医↓蜷医o縺帙※繧ヲ繧」繝ウ繝峨え繧オ繧、繧コ繧貞�險育ョ励☆繧九
*
* @param[in] vt 蟇セ雎。縺ョ謠冗判繧ウ繝ウ繝�く繧ケ繝医
* NULL(繧ヲ繧」繝ウ繝峨え逕滓�蜑)縺ョ縺ィ縺阪�菴輔b縺励↑縺
* (襍キ蜍墓凾縺ッ InitDisp() / ChangeFont() 縺 pts 縺九i驕ゥ逕ィ縺吶k)
* @param[in] pts 驕ゥ逕ィ縺吶k險ュ螳壹ら樟迥カ縺ッ &ts 繧呈ク。縺吶%縺ィ
*
* @todo ChangeFont() 縺ョ蠑墓焚縺ォ pts 繧呈ク。縺帙k繧医≧縺ォ縺吶k
* @todo ChangeFont() 縺ッ DispChangeFont() 縺ョ縺サ縺�′螯・蠖薙◎縺
*/
void DispApplySetup(vtdraw_t *vt, const TTTSet *pts)
{
if (vt == NULL || pts == NULL) {
return;
}
TColorTheme color_theme;
ThemeGetColorDefaultTS(pts, &color_theme);
ThemeSetColor(vt, &color_theme);
ChangeFont(vt, 0);
DispChangeWinSize(vt, WinWidth, WinHeight);
PostMessage(vt->hVTWin, WM_USER_CHANGEMENU, 0, 0);
}

/**
* 繧ヲ繧」繝ウ繝峨え縺ョ繧オ繧、繧コ縺悟、牙喧縺吶k譎(WM_SIZE縺檎匱逕溘@縺滓凾)縺ォ縲
* AdjustSize == TRUE縺ョ譎ゅ↓繧ウ繝シ繝ォ縺輔l繧
Expand Down
1 change: 1 addition & 0 deletions teraterm/teraterm/vtdisp.h
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,7 @@ void DispEnableCaret(vtdraw_t *vt, BOOL On);
BOOL IsCaretEnabled(void);
void DispSetCaretWidth(BOOL DW);
void DispChangeWinSize(vtdraw_t *vt, int Nx, int Ny);
void DispApplySetup(vtdraw_t *vt, const TTTSet *pts);
void ResizeWindow(vtdraw_t *vt, int x, int y, int w, int h, int cw, int ch);
ttdc_t *PaintWindow(vtdraw_t *vt, HDC PaintDC, RECT PaintRect, BOOL fBkGnd,
int* Xs, int* Ys, int* Xe, int* Ye);
Expand Down
48 changes: 23 additions & 25 deletions teraterm/teraterm/vtwin.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -556,21 +556,25 @@ CVTWindow::CVTWindow(HINSTANCE hInstance)
WNDCLASSW wc;
RECT rect;
DWORD Style;
BOOL isFirstInstance;
m_hInst = hInstance;

CommInit(&cv);
cv.ts = &ts;
isFirstInstance = StartTeraTerm(&ts);
StartTeraTerm(&ts);

TTXInit(&ts, &cv); /* TTPLUG */

MsgDlgHelp = RegisterWindowMessage(HELPMSGSTRING);

ParseFOption(&ts);
/* Parse command line parameters */
{
// GetCommandLineW() in MSDN remark
// The lifetime of the returned value is managed by the
// system, applications should not free or modify this value.
wchar_t *ParamW = _wcsdup(GetCommandLineW());
ParseFOption(ParamW, &ts);
free(ParamW);

if (isFirstInstance) {
/* first instance */
if (LoadTTSET()) {
/* read setup info from "teraterm.ini" */
(*ReadIniFile)(ts.SetupFNameW, &ts);
Expand All @@ -580,29 +584,14 @@ CVTWindow::CVTWindow(HINSTANCE hInstance)
abort();
}

} else {
// 2縺、繧∽サ・髯阪�繝励Ο繧サ繧ケ縺ォ縺翫>縺ヲ繧ゅ√ョ繧」繧ケ繧ッ縺九i TERATERM.INI 繧定ェュ繧縲(2004.11.4 yutaka)
if (LoadTTSET()) {
/* read setup info from "teraterm.ini" */
(*ReadIniFile)(ts.SetupFNameW, &ts);
FreeTTSET();
}
else {
abort();
wchar_t *ParamW = _wcsdup(GetCommandLineW());
(*ParseParam)(ParamW, &ts, &(TopicName[0]));
free(ParamW);
}
FreeTTSET();
}

/* Parse command line parameters*/
if (LoadTTSET()) {
// GetCommandLineW() in MSDN remark
// The lifetime of the returned value is managed by the
// system, applications should not free or modify this value.
wchar_t *ParamW = _wcsdup(GetCommandLineW());
(*ParseParam)(ParamW, &ts, &(TopicName[0]));
free(ParamW);
}
FreeTTSET();

// duplicate session縺ョ謖�ョ壹′縺ゅk縺ェ繧峨∝�譛峨Γ繝「繝ェ縺九i繧ウ繝斐�縺吶k (2004.12.7 yutaka)
if (ts.DuplicateSession == 1) {
// 蜈ア譛峨Γ繝「繝ェ縺ョ蠎ァ讓吶�隍�」ス蜈��迴セ蝨ィ縺ョ繧ヲ繧」繝ウ繝峨え蠎ァ讓吶↓縺ェ繧九
Expand Down Expand Up @@ -3850,9 +3839,15 @@ void CVTWindow::OnFileNewConnection()

if ((GetHNRec.PortType==IdTCPIP) && LoadTTSET()) {
wchar_t *command = NULL;
wchar_t *prev_setup = _wcsdup(ts.SetupFNameW);
awcscats(&command, ttermpro, L" ", hostname, NULL);
(*ParseParam)(command, &ts, NULL);
free(command);
if (prev_setup != NULL && _wcsicmp(prev_setup, ts.SetupFNameW) != 0) {
// /F= 縺ァ險ュ螳壹ヵ繧。繧、繝ォ縺瑚ェュ縺ソ逶エ縺輔l縺溘り牡,繝輔か繝ウ繝,繝。繝九Η繝シ繧定。ィ遉コ縺ク蜀埼←逕ィ縺吶k
DispApplySetup(vt_src, &ts);
}
free(prev_setup);
FreeTTSET();
}
SetKeyMap();
Expand Down Expand Up @@ -4013,10 +4008,13 @@ void CVTWindow::OnDuplicateSession()
wcsncat_s(Command, _countof(Command), ts.KeyCnfFNW, _TRUNCATE);
}

if (ParseFOption(&ts)) {
wchar_t *setup_def = GetDefaultSetupFNameW(NULL);
if (wcscmp(setup_def, ts.SetupFNameW) != 0) {
// INI繝輔ぃ繧、繝ォ縺後ョ繝輔か繝ォ繝医→逡ー縺ェ縺」縺ヲ縺�k縲/F= 縺ァ謖�ョ壹☆繧
wcsncat_s(Command, _countof(Command), L" /F=", _TRUNCATE);
wcsncat_s(Command, _countof(Command), ts.SetupFNameW, _TRUNCATE);
}
free(setup_def);

wchar_t *hostnameW = ToWcharA(ts.HostName);
const wchar_t *commandline = wcschr(Command, L' ') + 1; // 螳溯。後ヵ繧。繧、繝ォ蜷堺サ・髯
Expand Down
30 changes: 20 additions & 10 deletions teraterm/ttpset/ttset.c
Original file line number Diff line number Diff line change
Expand Up @@ -3639,17 +3639,28 @@ static wchar_t *GetFilePath(const wchar_t *command_line, const wchar_t *default_
return full_path;
}

BOOL ParseFOption(PTTSet ts) {
wchar_t Temp[MaxStrLen]; // ttpmacro縺九i蜻シ縺ー繧後k縺薙→繧呈Φ螳壹@MaxStrLen繧オ繧、繧コ縺ィ縺吶k
wchar_t *Param, *start, *cur, *next;
/**
* 繧ウ繝槭Φ繝峨Λ繧、繝ウ縺ョ /F= 繧定ァ」驥医@縺ヲ ts->SetupFNameW 縺ォ繧サ繝�ヨ縺吶k
* (ANSI迚 ts->SetupFName 縺ォ繧ゅそ繝�ヨ縺吶k, 蟒�ュ「莠亥ョ)
*
* @param[in] command_line (蜀�ョケ縺ッ遐エ螢翫&繧後k)
* the first term shuld be executable filename of Tera Term
* @param[out] ts
* @retval TRUE /F= 縺悟ュ伜惠縺励◆
* @retval FALSE /F= 縺悟ュ伜惠縺励↑縺
*
* @todo 蛻晄悄蛹匁凾縺ォ縺励°菴ソ逕ィ縺励※縺�↑縺, 蛻晄悄蛹冶ソ題セコ縺ォ遘サ蜍輔@縺ヲ static 蛹
* @todo GetParam() 縺ョ蠑墓焚3 縺ッ const, 謌サ繧雁、 const, 蜍慕噪譁�ュ励ヰ繝�ヵ繧。迚医′蠢�ヲ
*/
BOOL ParseFOption(const wchar_t *command_line, PTTSet ts)
{
wchar_t Temp[MaxStrLen]; // 繝代Λ繝。繝シ繧ソ繧貞叙繧雁�縺呎枚蟄励ヰ繝�ヵ繧。
const wchar_t *cur;
const wchar_t *next;
BOOL isFopt = FALSE;

/* the first term shuld be executable filename of Tera Term */
Param = _wcsdup(GetCommandLineW());
start = GetParam(Temp, _countof(Temp), Param);

cur = start;
while ((next = GetParam(Temp, _countof(Temp), cur))) {
cur = GetParam(Temp, _countof(Temp), (wchar_t *)command_line);
while ((next = GetParam(Temp, _countof(Temp), (wchar_t *)cur))) {
DequoteParam(Temp, _countof(Temp), Temp);
if (_wcsnicmp(Temp, L"/F=", 3) == 0) { /* setup filename */
isFopt = TRUE;
Expand All @@ -3663,7 +3674,6 @@ BOOL ParseFOption(PTTSet ts) {
}
cur = next;
}
free(Param);
return isFopt;
}

Expand Down
2 changes: 1 addition & 1 deletion teraterm/ttpset/ttset.h
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ extern "C" {

typedef struct TKeyMap_st *PKeyMap;

BOOL ParseFOption(PTTSet ts);
BOOL ParseFOption(const wchar_t *command_line, PTTSet ts);
void SaveVTPos(const PTTSet ts);

void PASCAL _ReadIniFile(const wchar_t *FName, PTTSet ts);
Expand Down
Loading