svnno****@sourc*****
svnno****@sourc*****
2015年 11月 13日 (金) 00:04:56 JST
Revision: 6119 http://sourceforge.jp/projects/ttssh2/scm/svn/commits/6119 Author: yutakapon Date: 2015-11-13 00:04:55 +0900 (Fri, 13 Nov 2015) Log Message: ----------- チケット #35710 Cygwin設定の見直し 項番1に対応させた。 1. 設定ダイアログでOK押下しただけで、cygterm.cfgを書き換えないようにし、 Save setupで保存するように、本来あるべき姿に変更する。 Ticket Links: ------------ http://sourceforge.jp/projects/ttssh2/tracker/detail/35710 Modified Paths: -------------- trunk/teraterm/common/teraterm.h trunk/teraterm/common/tttypes.h trunk/teraterm/teraterm/addsetting.cpp trunk/teraterm/teraterm/addsetting.h trunk/teraterm/ttpset/ttset.c -------------- next part -------------- Modified: trunk/teraterm/common/teraterm.h =================================================================== --- trunk/teraterm/common/teraterm.h 2015-11-12 14:33:12 UTC (rev 6118) +++ trunk/teraterm/common/teraterm.h 2015-11-12 15:04:55 UTC (rev 6119) @@ -3,6 +3,8 @@ All rights reserved. */ /* IPv6 modification is Copyright(C) 2000, 2001 Jun-ya kato <kato****@win6*****> */ +#pragma once + #ifndef NO_INET6 #ifndef _WINSOCKAPI_ #define _WINSOCKAPI_ /* Prevent inclusion of winsock.h in windows.h */ @@ -39,3 +41,17 @@ fclose(fp); \ } \ } + +typedef struct cygterm { + BOOL update_flag; + char term[128]; + char term_type[80]; + char port_start[80]; + char port_range[80]; + char shell[80]; + char env1[128]; + char env2[128]; + BOOL login_shell; + BOOL home_chdir; + BOOL agent_proxy; +} cygterm_t; Modified: trunk/teraterm/common/tttypes.h =================================================================== --- trunk/teraterm/common/tttypes.h 2015-11-12 14:33:12 UTC (rev 6118) +++ trunk/teraterm/common/tttypes.h 2015-11-12 15:04:55 UTC (rev 6119) @@ -4,6 +4,7 @@ /* Constants and types for Tera Term */ #include <locale.h> +#include "teraterm.h" #define IdBreakTimer 1 #define IdDelayTimer 2 @@ -588,6 +589,7 @@ WORD FileSendHighSpeedMode; WORD AutoComPortReconnect; WORD BGImgBrightness; + cygterm_t CygtermSettings; }; typedef struct tttset TTTSet, *PTTSet; @@ -1055,6 +1057,7 @@ * added tttset.FileSendHighSpeedMode * added tttset.AutoComPortReconnect * added tttset.BGImgBrightness + * added tttset.CygtermSettings * * - At version 4.85, ttset_memfilemap was replaced with ttset_memfilemap_25. * added tttset.AcceleratorNewConnection Modified: trunk/teraterm/teraterm/addsetting.cpp =================================================================== --- trunk/teraterm/teraterm/addsetting.cpp 2015-11-12 14:33:12 UTC (rev 6118) +++ trunk/teraterm/teraterm/addsetting.cpp 2015-11-12 15:04:55 UTC (rev 6119) @@ -1674,14 +1674,9 @@ END_MESSAGE_MAP() // CCygwinPropPageDlg \x83\x81\x83b\x83Z\x81[\x83W \x83n\x83\x93\x83h\x83\x89 -#define CYGTERM_FILE "cygterm.cfg" // CygTerm configuration file BOOL CCygwinPropPageDlg::OnInitDialog() { - char *cfgfile = CYGTERM_FILE; // CygTerm configuration file - char cfg[MAX_PATH]; - FILE *fp; - char buf[256], *head, *body; char uimsg[MAX_UIMSG]; CButton *btn; @@ -1720,78 +1715,8 @@ get_lang_msg("DLG_TAB_CYGWIN_PATH", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile); SetDlgItemText(IDC_CYGWIN_PATH_LABEL, ts.UIMsg); - // try to read CygTerm config file - memset(&settings, 0, sizeof(settings)); - _snprintf_s(settings.term, sizeof(settings.term), _TRUNCATE, "ttermpro.exe %%s %%d /E /KR=SJIS /KT=SJIS /VTICON=CygTerm /nossh"); - _snprintf_s(settings.term_type, sizeof(settings.term_type), _TRUNCATE, "vt100"); - _snprintf_s(settings.port_start, sizeof(settings.port_start), _TRUNCATE, "20000"); - _snprintf_s(settings.port_range, sizeof(settings.port_range), _TRUNCATE, "40"); - _snprintf_s(settings.shell, sizeof(settings.shell), _TRUNCATE, "auto"); - _snprintf_s(settings.env1, sizeof(settings.env1), _TRUNCATE, "MAKE_MODE=unix"); - _snprintf_s(settings.env2, sizeof(settings.env2), _TRUNCATE, ""); - settings.login_shell = FALSE; - settings.home_chdir = FALSE; - settings.agent_proxy = FALSE; + memcpy(&settings, &ts.CygtermSettings, sizeof(cygterm_t)); - strncpy_s(cfg, sizeof(cfg), ts.HomeDir, _TRUNCATE); - AppendSlash(cfg, sizeof(cfg)); - strncat_s(cfg, sizeof(cfg), cfgfile, _TRUNCATE); - - fp = fopen(cfg, "r"); - if (fp != NULL) { - while (fgets(buf, sizeof(buf), fp) != NULL) { - int len = strlen(buf); - - if (buf[len - 1] == '\n') - buf[len - 1] = '\0'; - - split_buffer(buf, '=', &head, &body); - if (head == NULL || body == NULL) - continue; - - if (_stricmp(head, "TERM") == 0) { - _snprintf_s(settings.term, sizeof(settings.term), _TRUNCATE, "%s", body); - - } else if (_stricmp(head, "TERM_TYPE") == 0) { - _snprintf_s(settings.term_type, sizeof(settings.term_type), _TRUNCATE, "%s", body); - - } else if (_stricmp(head, "PORT_START") == 0) { - _snprintf_s(settings.port_start, sizeof(settings.port_start), _TRUNCATE, "%s", body); - - } else if (_stricmp(head, "PORT_RANGE") == 0) { - _snprintf_s(settings.port_range, sizeof(settings.port_range), _TRUNCATE, "%s", body); - - } else if (_stricmp(head, "SHELL") == 0) { - _snprintf_s(settings.shell, sizeof(settings.shell), _TRUNCATE, "%s", body); - - } else if (_stricmp(head, "ENV_1") == 0) { - _snprintf_s(settings.env1, sizeof(settings.env1), _TRUNCATE, "%s", body); - - } else if (_stricmp(head, "ENV_2") == 0) { - _snprintf_s(settings.env2, sizeof(settings.env2), _TRUNCATE, "%s", body); - - } else if (_stricmp(head, "LOGIN_SHELL") == 0) { - if (strchr("YyTt", *body)) { - settings.login_shell = TRUE; - } - - } else if (_stricmp(head, "HOME_CHDIR") == 0) { - if (strchr("YyTt", *body)) { - settings.home_chdir = TRUE; - } - - } else if (_stricmp(head, "SSH_AGENT_PROXY") == 0) { - if (strchr("YyTt", *body)) { - settings.agent_proxy = TRUE; - } - - } else { - // TODO: error check - - } - } - fclose(fp); - } SetDlgItemText(IDC_TERM_EDIT, settings.term); SetDlgItemText(IDC_TERM_TYPE, settings.term_type); SetDlgItemText(IDC_PORT_START, settings.port_start); @@ -1836,14 +1761,6 @@ void CCygwinPropPageDlg::OnOK() { - char *cfgfile = CYGTERM_FILE; // CygTerm configuration file - char *tmpfile = "cygterm.tmp"; - char cfg[MAX_PATH]; - char tmp[MAX_PATH]; - FILE *fp; - FILE *tmp_fp; - char buf[256], *head, *body; - char uimsg[MAX_UIMSG]; CButton *btn; // writing to CygTerm config file @@ -1861,141 +1778,11 @@ btn = (CButton *)GetDlgItem(IDC_AGENT_PROXY); settings.agent_proxy = btn->GetCheck(); - strncpy_s(cfg, sizeof(cfg), ts.HomeDir, _TRUNCATE); - AppendSlash(cfg, sizeof(cfg)); - strncat_s(cfg, sizeof(cfg), cfgfile, _TRUNCATE); + memcpy(&ts.CygtermSettings, &settings, sizeof(cygterm_t)); - strncpy_s(tmp, sizeof(tmp), ts.HomeDir, _TRUNCATE); - AppendSlash(tmp, sizeof(tmp)); - strncat_s(tmp, sizeof(tmp), tmpfile, _TRUNCATE); + // \x90ݒ\xE8\x82\xF0\x8F\x91\x82\xAB\x8D\x9E\x82ނ\xBD\x82߃t\x83\x89\x83O\x82𗧂ĂĂ\xA8\x82\xAD\x81B + ts.CygtermSettings.update_flag = TRUE; - fp = fopen(cfg, "r"); - tmp_fp = fopen(tmp, "w"); - if (tmp_fp == NULL) { - get_lang_msg("MSG_ERROR", uimsg, sizeof(uimsg), "ERROR", ts.UILanguageFile); - get_lang_msg("MSG_CYGTERM_CONF_WRITEFILE_ERROR", ts.UIMsg, sizeof(ts.UIMsg), - "Can't write CygTerm configuration file (%d).", ts.UILanguageFile); - _snprintf_s(buf, sizeof(buf), _TRUNCATE, ts.UIMsg, GetLastError()); - MessageBox(buf, uimsg, MB_ICONEXCLAMATION); - } else { - if (fp != NULL) { - while (fgets(buf, sizeof(buf), fp) != NULL) { - int len = strlen(buf); - - if (buf[len - 1] == '\n') - buf[len - 1] = '\0'; - - split_buffer(buf, '=', &head, &body); - if (head == NULL || body == NULL) { - fprintf(tmp_fp, "%s\n", buf); - } - else if (_stricmp(head, "TERM") == 0) { - fprintf(tmp_fp, "TERM = %s\n", settings.term); - settings.term[0] = '\0'; - } - else if (_stricmp(head, "TERM_TYPE") == 0) { - fprintf(tmp_fp, "TERM_TYPE = %s\n", settings.term_type); - settings.term_type[0] = '\0'; - } - else if (_stricmp(head, "PORT_START") == 0) { - fprintf(tmp_fp, "PORT_START = %s\n", settings.port_start); - settings.port_start[0] = '\0'; - } - else if (_stricmp(head, "PORT_RANGE") == 0) { - fprintf(tmp_fp, "PORT_RANGE = %s\n", settings.port_range); - settings.port_range[0] = '\0'; - } - else if (_stricmp(head, "SHELL") == 0) { - fprintf(tmp_fp, "SHELL = %s\n", settings.shell); - settings.shell[0] = '\0'; - } - else if (_stricmp(head, "ENV_1") == 0) { - fprintf(tmp_fp, "ENV_1 = %s\n", settings.env1); - settings.env1[0] = '\0'; - } - else if (_stricmp(head, "ENV_2") == 0) { - fprintf(tmp_fp, "ENV_2 = %s\n", settings.env2); - settings.env2[0] = '\0'; - } - else if (_stricmp(head, "LOGIN_SHELL") == 0) { - fprintf(tmp_fp, "LOGIN_SHELL = %s\n", (settings.login_shell == TRUE) ? "yes" : "no"); - settings.login_shell = FALSE; - } - else if (_stricmp(head, "HOME_CHDIR") == 0) { - fprintf(tmp_fp, "HOME_CHDIR = %s\n", (settings.home_chdir == TRUE) ? "yes" : "no"); - settings.home_chdir = FALSE; - } - else if (_stricmp(head, "SSH_AGENT_PROXY") == 0) { - fprintf(tmp_fp, "SSH_AGENT_PROXY = %s\n", (settings.agent_proxy == TRUE) ? "yes" : "no"); - settings.agent_proxy = FALSE; - } - else { - fprintf(tmp_fp, "%s = %s\n", head, body); - } - } - fclose(fp); - } - else { - fputs("# CygTerm setting\n", tmp_fp); - fputs("\n", tmp_fp); - } - if (settings.term[0] != '\0') { - fprintf(tmp_fp, "TERM = %s\n", settings.term); - } - if (settings.term_type[0] != '\0') { - fprintf(tmp_fp, "TERM_TYPE = %s\n", settings.term_type); - } - if (settings.port_start[0] != '\0') { - fprintf(tmp_fp, "PORT_START = %s\n", settings.port_start); - } - if (settings.port_range[0] != '\0') { - fprintf(tmp_fp, "PORT_RANGE = %s\n", settings.port_range); - } - if (settings.shell[0] != '\0') { - fprintf(tmp_fp, "SHELL = %s\n", settings.shell); - } - if (settings.env1[0] != '\0') { - fprintf(tmp_fp, "ENV_1 = %s\n", settings.env1); - } - if (settings.env2[0] != '\0') { - fprintf(tmp_fp, "ENV_2 = %s\n", settings.env2); - } - if (settings.login_shell) { - fprintf(tmp_fp, "LOGIN_SHELL = yes\n"); - } - if (settings.home_chdir) { - fprintf(tmp_fp, "HOME_CHDIR = yes\n"); - } - if (settings.agent_proxy) { - fprintf(tmp_fp, "SSH_AGENT_PROXY = yes\n"); - } - fclose(tmp_fp); - - if (remove(cfg) != 0 && errno != ENOENT) { - get_lang_msg("MSG_ERROR", uimsg, sizeof(uimsg), "ERROR", ts.UILanguageFile); - get_lang_msg("MSG_CYGTERM_CONF_REMOVEFILE_ERROR", ts.UIMsg, sizeof(ts.UIMsg), - "Can't remove old CygTerm configuration file (%d).", ts.UILanguageFile); - _snprintf_s(buf, sizeof(buf), _TRUNCATE, ts.UIMsg, GetLastError()); - MessageBox(buf, uimsg, MB_ICONEXCLAMATION); - } - else if (rename(tmp, cfg) != 0) { - get_lang_msg("MSG_ERROR", uimsg, sizeof(uimsg), "ERROR", ts.UILanguageFile); - get_lang_msg("MSG_CYGTERM_CONF_RENAMEFILE_ERROR", ts.UIMsg, sizeof(ts.UIMsg), - "Can't rename CygTerm configuration file (%d).", ts.UILanguageFile); - _snprintf_s(buf, sizeof(buf), _TRUNCATE, ts.UIMsg, GetLastError()); - MessageBox(buf, uimsg, MB_ICONEXCLAMATION); - } else { - // cygterm.cfg \x83t\x83@\x83C\x83\x8B\x82ւ̕ۑ\xB6\x82\xAA\x90\xAC\x8C\x{1C2D42}\xBD\x82\xE7\x81A\x83\x81\x83b\x83Z\x81[\x83W\x83_\x83C\x83A\x83\x8D\x83O\x82\xF0\x95\\x8E\xA6\x82\xB7\x82\xE9\x81B - // \x89\xFC\x82߂āASave setup\x82\xF0\x8E\xC0\x8Ds\x82\xB7\x82\xE9\x95K\x97v\x82͂Ȃ\xA2\x82\xB1\x82Ƃ𒍈ӊ\xAB\x8BN\x82\xB7\x82\xE9\x81B - // (2012.5.1 yutaka) - get_lang_msg("MSG_TT_NOTICE", uimsg, sizeof(uimsg), "MSG_TT_NOTICE", ts.UILanguageFile); - get_lang_msg("MSG_CYGTERM_CONF_SAVED_NOTICE", ts.UIMsg, sizeof(ts.UIMsg), - "%s has been saved. Do not do save setup.", ts.UILanguageFile); - _snprintf_s(buf, sizeof(buf), _TRUNCATE, ts.UIMsg, CYGTERM_FILE); - MessageBox(buf, uimsg, MB_OK | MB_ICONINFORMATION); - } - } - // Cygwin install path GetDlgItemText(IDC_CYGWIN_PATH, ts.CygwinDirectory, sizeof(ts.CygwinDirectory)); } Modified: trunk/teraterm/teraterm/addsetting.h =================================================================== --- trunk/teraterm/teraterm/addsetting.h 2015-11-12 14:33:12 UTC (rev 6118) +++ trunk/teraterm/teraterm/addsetting.h 2015-11-12 15:04:55 UTC (rev 6119) @@ -1,6 +1,7 @@ #pragma once #include "tt_res.h" +#include "teraterm.h" typedef struct { @@ -8,21 +9,8 @@ LPCTSTR id; } mouse_cursor_t; -typedef struct cygterm { - char term[128]; - char term_type[80]; - char port_start[80]; - char port_range[80]; - char shell[80]; - char env1[128]; - char env2[128]; - BOOL login_shell; - BOOL home_chdir; - BOOL agent_proxy; -} cygterm_t; - // General Page class CGeneralPropPageDlg : public CPropertyPage { Modified: trunk/teraterm/ttpset/ttset.c =================================================================== --- trunk/teraterm/ttpset/ttset.c 2015-11-12 14:33:12 UTC (rev 6118) +++ trunk/teraterm/ttpset/ttset.c 2015-11-12 15:04:55 UTC (rev 6119) @@ -199,6 +199,267 @@ WritePrivateProfileString(Sect, Key, Temp, FName); } + + +#define CYGTERM_FILE "cygterm.cfg" // CygTerm configuration file + +static void ReadCygtermConfFile(PTTSet ts) +{ + char *cfgfile = CYGTERM_FILE; // CygTerm configuration file + char cfg[MAX_PATH]; + FILE *fp; + char buf[256], *head, *body; + cygterm_t settings; + + // try to read CygTerm config file + memset(&settings, 0, sizeof(settings)); + _snprintf_s(settings.term, sizeof(settings.term), _TRUNCATE, "ttermpro.exe %%s %%d /E /KR=SJIS /KT=SJIS /VTICON=CygTerm /nossh"); + _snprintf_s(settings.term_type, sizeof(settings.term_type), _TRUNCATE, "vt100"); + _snprintf_s(settings.port_start, sizeof(settings.port_start), _TRUNCATE, "20000"); + _snprintf_s(settings.port_range, sizeof(settings.port_range), _TRUNCATE, "40"); + _snprintf_s(settings.shell, sizeof(settings.shell), _TRUNCATE, "auto"); + _snprintf_s(settings.env1, sizeof(settings.env1), _TRUNCATE, "MAKE_MODE=unix"); + _snprintf_s(settings.env2, sizeof(settings.env2), _TRUNCATE, ""); + settings.login_shell = FALSE; + settings.home_chdir = FALSE; + settings.agent_proxy = FALSE; + + strncpy_s(cfg, sizeof(cfg), ts->HomeDir, _TRUNCATE); + AppendSlash(cfg, sizeof(cfg)); + strncat_s(cfg, sizeof(cfg), cfgfile, _TRUNCATE); + + fp = fopen(cfg, "r"); + if (fp != NULL) { + while (fgets(buf, sizeof(buf), fp) != NULL) { + int len = strlen(buf); + + if (buf[len - 1] == '\n') + buf[len - 1] = '\0'; + + split_buffer(buf, '=', &head, &body); + if (head == NULL || body == NULL) + continue; + + if (_stricmp(head, "TERM") == 0) { + _snprintf_s(settings.term, sizeof(settings.term), _TRUNCATE, "%s", body); + + } + else if (_stricmp(head, "TERM_TYPE") == 0) { + _snprintf_s(settings.term_type, sizeof(settings.term_type), _TRUNCATE, "%s", body); + + } + else if (_stricmp(head, "PORT_START") == 0) { + _snprintf_s(settings.port_start, sizeof(settings.port_start), _TRUNCATE, "%s", body); + + } + else if (_stricmp(head, "PORT_RANGE") == 0) { + _snprintf_s(settings.port_range, sizeof(settings.port_range), _TRUNCATE, "%s", body); + + } + else if (_stricmp(head, "SHELL") == 0) { + _snprintf_s(settings.shell, sizeof(settings.shell), _TRUNCATE, "%s", body); + + } + else if (_stricmp(head, "ENV_1") == 0) { + _snprintf_s(settings.env1, sizeof(settings.env1), _TRUNCATE, "%s", body); + + } + else if (_stricmp(head, "ENV_2") == 0) { + _snprintf_s(settings.env2, sizeof(settings.env2), _TRUNCATE, "%s", body); + + } + else if (_stricmp(head, "LOGIN_SHELL") == 0) { + if (strchr("YyTt", *body)) { + settings.login_shell = TRUE; + } + + } + else if (_stricmp(head, "HOME_CHDIR") == 0) { + if (strchr("YyTt", *body)) { + settings.home_chdir = TRUE; + } + + } + else if (_stricmp(head, "SSH_AGENT_PROXY") == 0) { + if (strchr("YyTt", *body)) { + settings.agent_proxy = TRUE; + } + + } + else { + // TODO: error check + + } + } + fclose(fp); + } + + memcpy(&ts->CygtermSettings, &settings, sizeof(cygterm_t)); +} + +static void WriteCygtermConfFile(PTTSet ts) +{ + char *cfgfile = CYGTERM_FILE; // CygTerm configuration file + char *tmpfile = "cygterm.tmp"; + char cfg[MAX_PATH]; + char tmp[MAX_PATH]; + FILE *fp; + FILE *tmp_fp; + char buf[256], *head, *body; + char uimsg[MAX_UIMSG]; + cygterm_t settings; + + // Cygwin\x90ݒ肪\x95ύX\x82\xB3\x82\xEA\x82Ă\xA2\x82Ȃ\xA2\x8Fꍇ\x82́A\x83t\x83@\x83C\x83\x8B\x82\xF0\x8F\x91\x82\xAB\x8D\x9E\x82܂Ȃ\xA2\x81B + if (ts->CygtermSettings.update_flag == FALSE) + return; + // \x83t\x83\x89\x83O\x82𗎂Ƃ\xB5\x81ASave setup\x82\xB7\x82\xE9\x93x\x82ɉ\xBD\x93x\x82\xE0\x8F\x91\x82\xAB\x8D\x9E\x82܂Ȃ\xA2\x82悤\x82ɂ\xB7\x82\xE9\x81B + ts->CygtermSettings.update_flag = FALSE; + + memcpy(&settings, &ts->CygtermSettings, sizeof(cygterm_t)); + + strncpy_s(cfg, sizeof(cfg), ts->HomeDir, _TRUNCATE); + AppendSlash(cfg, sizeof(cfg)); + strncat_s(cfg, sizeof(cfg), cfgfile, _TRUNCATE); + + strncpy_s(tmp, sizeof(tmp), ts->HomeDir, _TRUNCATE); + AppendSlash(tmp, sizeof(tmp)); + strncat_s(tmp, sizeof(tmp), tmpfile, _TRUNCATE); + + fp = fopen(cfg, "r"); + tmp_fp = fopen(tmp, "w"); + if (tmp_fp == NULL) { + get_lang_msg("MSG_ERROR", uimsg, sizeof(uimsg), "ERROR", ts->UILanguageFile); + get_lang_msg("MSG_CYGTERM_CONF_WRITEFILE_ERROR", ts->UIMsg, sizeof(ts->UIMsg), + "Can't write CygTerm configuration file (%d).", ts->UILanguageFile); + _snprintf_s(buf, sizeof(buf), _TRUNCATE, ts->UIMsg, GetLastError()); + MessageBox(NULL, buf, uimsg, MB_ICONEXCLAMATION); + } + else { + if (fp != NULL) { + while (fgets(buf, sizeof(buf), fp) != NULL) { + int len = strlen(buf); + + if (buf[len - 1] == '\n') + buf[len - 1] = '\0'; + + split_buffer(buf, '=', &head, &body); + if (head == NULL || body == NULL) { + fprintf(tmp_fp, "%s\n", buf); + } + else if (_stricmp(head, "TERM") == 0) { + fprintf(tmp_fp, "TERM = %s\n", settings.term); + settings.term[0] = '\0'; + } + else if (_stricmp(head, "TERM_TYPE") == 0) { + fprintf(tmp_fp, "TERM_TYPE = %s\n", settings.term_type); + settings.term_type[0] = '\0'; + } + else if (_stricmp(head, "PORT_START") == 0) { + fprintf(tmp_fp, "PORT_START = %s\n", settings.port_start); + settings.port_start[0] = '\0'; + } + else if (_stricmp(head, "PORT_RANGE") == 0) { + fprintf(tmp_fp, "PORT_RANGE = %s\n", settings.port_range); + settings.port_range[0] = '\0'; + } + else if (_stricmp(head, "SHELL") == 0) { + fprintf(tmp_fp, "SHELL = %s\n", settings.shell); + settings.shell[0] = '\0'; + } + else if (_stricmp(head, "ENV_1") == 0) { + fprintf(tmp_fp, "ENV_1 = %s\n", settings.env1); + settings.env1[0] = '\0'; + } + else if (_stricmp(head, "ENV_2") == 0) { + fprintf(tmp_fp, "ENV_2 = %s\n", settings.env2); + settings.env2[0] = '\0'; + } + else if (_stricmp(head, "LOGIN_SHELL") == 0) { + fprintf(tmp_fp, "LOGIN_SHELL = %s\n", (settings.login_shell == TRUE) ? "yes" : "no"); + settings.login_shell = FALSE; + } + else if (_stricmp(head, "HOME_CHDIR") == 0) { + fprintf(tmp_fp, "HOME_CHDIR = %s\n", (settings.home_chdir == TRUE) ? "yes" : "no"); + settings.home_chdir = FALSE; + } + else if (_stricmp(head, "SSH_AGENT_PROXY") == 0) { + fprintf(tmp_fp, "SSH_AGENT_PROXY = %s\n", (settings.agent_proxy == TRUE) ? "yes" : "no"); + settings.agent_proxy = FALSE; + } + else { + fprintf(tmp_fp, "%s = %s\n", head, body); + } + } + fclose(fp); + } + else { + fputs("# CygTerm setting\n", tmp_fp); + fputs("\n", tmp_fp); + } + if (settings.term[0] != '\0') { + fprintf(tmp_fp, "TERM = %s\n", settings.term); + } + if (settings.term_type[0] != '\0') { + fprintf(tmp_fp, "TERM_TYPE = %s\n", settings.term_type); + } + if (settings.port_start[0] != '\0') { + fprintf(tmp_fp, "PORT_START = %s\n", settings.port_start); + } + if (settings.port_range[0] != '\0') { + fprintf(tmp_fp, "PORT_RANGE = %s\n", settings.port_range); + } + if (settings.shell[0] != '\0') { + fprintf(tmp_fp, "SHELL = %s\n", settings.shell); + } + if (settings.env1[0] != '\0') { + fprintf(tmp_fp, "ENV_1 = %s\n", settings.env1); + } + if (settings.env2[0] != '\0') { + fprintf(tmp_fp, "ENV_2 = %s\n", settings.env2); + } + if (settings.login_shell) { + fprintf(tmp_fp, "LOGIN_SHELL = yes\n"); + } + if (settings.home_chdir) { + fprintf(tmp_fp, "HOME_CHDIR = yes\n"); + } + if (settings.agent_proxy) { + fprintf(tmp_fp, "SSH_AGENT_PROXY = yes\n"); + } + fclose(tmp_fp); + + if (remove(cfg) != 0 && errno != ENOENT) { + get_lang_msg("MSG_ERROR", uimsg, sizeof(uimsg), "ERROR", ts->UILanguageFile); + get_lang_msg("MSG_CYGTERM_CONF_REMOVEFILE_ERROR", ts->UIMsg, sizeof(ts->UIMsg), + "Can't remove old CygTerm configuration file (%d).", ts->UILanguageFile); + _snprintf_s(buf, sizeof(buf), _TRUNCATE, ts->UIMsg, GetLastError()); + MessageBox(NULL, buf, uimsg, MB_ICONEXCLAMATION); + } + else if (rename(tmp, cfg) != 0) { + get_lang_msg("MSG_ERROR", uimsg, sizeof(uimsg), "ERROR", ts->UILanguageFile); + get_lang_msg("MSG_CYGTERM_CONF_RENAMEFILE_ERROR", ts->UIMsg, sizeof(ts->UIMsg), + "Can't rename CygTerm configuration file (%d).", ts->UILanguageFile); + _snprintf_s(buf, sizeof(buf), _TRUNCATE, ts->UIMsg, GetLastError()); + MessageBox(NULL, buf, uimsg, MB_ICONEXCLAMATION); + } + else { + // cygterm.cfg \x83t\x83@\x83C\x83\x8B\x82ւ̕ۑ\xB6\x82\xAA\x90\xAC\x8C\x{1C2D42}\xBD\x82\xE7\x81A\x83\x81\x83b\x83Z\x81[\x83W\x83_\x83C\x83A\x83\x8D\x83O\x82\xF0\x95\\x8E\xA6\x82\xB7\x82\xE9\x81B + // \x89\xFC\x82߂āASave setup\x82\xF0\x8E\xC0\x8Ds\x82\xB7\x82\xE9\x95K\x97v\x82͂Ȃ\xA2\x82\xB1\x82Ƃ𒍈ӊ\xAB\x8BN\x82\xB7\x82\xE9\x81B + // (2012.5.1 yutaka) + // Save setup \x8E\xC0\x8Ds\x8E\x9E\x82ɁACygTerm\x82̐ݒ\xE8\x82\xF0\x95ۑ\xB6\x82\xB7\x82\xE9\x82悤\x82ɂ\xB5\x82\xBD\x82\xB1\x82Ƃɂ\xE6\x82\xE8\x81A + // \x83_\x83C\x83A\x83\x8D\x83O\x95\\x8E\xA6\x82\xAA\x95s\x97v\x82ƂȂ邽\x82߁A\x8D폜\x82\xB7\x82\xE9\x81B + // (2015.11.12 yutaka) +#if 0 + get_lang_msg("MSG_TT_NOTICE", uimsg, sizeof(uimsg), "MSG_TT_NOTICE", ts->UILanguageFile); + get_lang_msg("MSG_CYGTERM_CONF_SAVED_NOTICE", ts->UIMsg, sizeof(ts->UIMsg), + "%s has been saved. Do not do save setup.", ts->UILanguageFile); + _snprintf_s(buf, sizeof(buf), _TRUNCATE, ts->UIMsg, CYGTERM_FILE); + MessageBox(NULL, buf, uimsg, MB_OK | MB_ICONINFORMATION); +#endif + } + } +} + void FAR PASCAL ReadIniFile(PCHAR FName, PTTSet ts) { int i; @@ -1568,6 +1829,9 @@ if (ts->DebugModes == DBGF_NONE) ts->Debug = FALSE; } + + // CygTerm Configuration File + ReadCygtermConfFile(ts); } void FAR PASCAL WriteIniFile(PCHAR FName, PTTSet ts) @@ -2783,6 +3047,9 @@ } } WritePrivateProfileString(Section, "DebugModes", Temp, FName); + + // CygTerm Configuration File + WriteCygtermConfFile(ts); } #define VTEditor "VT editor keypad"