Develop and Download Open Source Software

Browse Subversion Repository

Diff of /trunk/teraterm/teraterm/addsetting.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 6095 by yutakapon, Sat Nov 7 17:59:01 2015 UTC revision 6119 by yutakapon, Thu Nov 12 15:04:55 2015 UTC
# Line 1674  BEGIN_MESSAGE_MAP(CCygwinPropPageDlg, CP Line 1674  BEGIN_MESSAGE_MAP(CCygwinPropPageDlg, CP
1674  END_MESSAGE_MAP()  END_MESSAGE_MAP()
1675    
1676  // CCygwinPropPageDlg メッセージ ハンドラ  // CCygwinPropPageDlg メッセージ ハンドラ
 #define CYGTERM_FILE "cygterm.cfg"  // CygTerm configuration file  
1677    
1678  BOOL CCygwinPropPageDlg::OnInitDialog()  BOOL CCygwinPropPageDlg::OnInitDialog()
1679  {  {
         char *cfgfile = CYGTERM_FILE; // CygTerm configuration file  
         char cfg[MAX_PATH];  
         FILE *fp;  
         char buf[256], *head, *body;  
1680          char uimsg[MAX_UIMSG];          char uimsg[MAX_UIMSG];
1681          CButton *btn;          CButton *btn;
1682    
# Line 1720  BOOL CCygwinPropPageDlg::OnInitDialog() Line 1715  BOOL CCygwinPropPageDlg::OnInitDialog()
1715          get_lang_msg("DLG_TAB_CYGWIN_PATH", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);          get_lang_msg("DLG_TAB_CYGWIN_PATH", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
1716          SetDlgItemText(IDC_CYGWIN_PATH_LABEL, ts.UIMsg);          SetDlgItemText(IDC_CYGWIN_PATH_LABEL, ts.UIMsg);
1717    
1718          // try to read CygTerm config file          memcpy(&settings, &ts.CygtermSettings, sizeof(cygterm_t));
         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;  
                                 }  
1719    
                         } else {  
                                 // TODO: error check  
   
                         }  
                 }  
                 fclose(fp);  
         }  
1720          SetDlgItemText(IDC_TERM_EDIT, settings.term);          SetDlgItemText(IDC_TERM_EDIT, settings.term);
1721          SetDlgItemText(IDC_TERM_TYPE, settings.term_type);          SetDlgItemText(IDC_TERM_TYPE, settings.term_type);
1722          SetDlgItemText(IDC_PORT_START, settings.port_start);          SetDlgItemText(IDC_PORT_START, settings.port_start);
# Line 1836  BOOL CCygwinPropPageDlg::OnCommand(WPARA Line 1761  BOOL CCygwinPropPageDlg::OnCommand(WPARA
1761    
1762  void CCygwinPropPageDlg::OnOK()  void CCygwinPropPageDlg::OnOK()
1763  {  {
         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];  
1764          CButton *btn;          CButton *btn;
1765    
1766          // writing to CygTerm config file          // writing to CygTerm config file
# Line 1861  void CCygwinPropPageDlg::OnOK() Line 1778  void CCygwinPropPageDlg::OnOK()
1778          btn = (CButton *)GetDlgItem(IDC_AGENT_PROXY);          btn = (CButton *)GetDlgItem(IDC_AGENT_PROXY);
1779          settings.agent_proxy = btn->GetCheck();          settings.agent_proxy = btn->GetCheck();
1780    
1781          strncpy_s(cfg, sizeof(cfg), ts.HomeDir, _TRUNCATE);          memcpy(&ts.CygtermSettings, &settings, sizeof(cygterm_t));
1782          AppendSlash(cfg, sizeof(cfg));  
1783          strncat_s(cfg, sizeof(cfg), cfgfile, _TRUNCATE);          // 設定を書き込むためフラグを立てておく。
1784            ts.CygtermSettings.update_flag = TRUE;
         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(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 ファイルへの保存が成功したら、メッセージダイアログを表示する。  
                         // 改めて、Save setupを実行する必要はないことを注意喚起する。  
                         // (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);  
                 }  
         }  
1785    
1786          // Cygwin install path          // Cygwin install path
1787          GetDlgItemText(IDC_CYGWIN_PATH, ts.CygwinDirectory, sizeof(ts.CygwinDirectory));          GetDlgItemText(IDC_CYGWIN_PATH, ts.CygwinDirectory, sizeof(ts.CygwinDirectory));

Legend:
Removed from v.6095  
changed lines
  Added in v.6119

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26