| 203 |
|
|
| 204 |
|
|
| 205 |
#define CYGTERM_FILE "cygterm.cfg" // CygTerm configuration file |
#define CYGTERM_FILE "cygterm.cfg" // CygTerm configuration file |
| 206 |
|
#define CYGTERM_FILE_MAXLINE 100 |
| 207 |
|
|
| 208 |
static void ReadCygtermConfFile(PTTSet ts) |
static void ReadCygtermConfFile(PTTSet ts) |
| 209 |
{ |
{ |
| 310 |
char buf[256], *head, *body; |
char buf[256], *head, *body; |
| 311 |
char uimsg[MAX_UIMSG]; |
char uimsg[MAX_UIMSG]; |
| 312 |
cygterm_t settings; |
cygterm_t settings; |
| 313 |
|
char *line[CYGTERM_FILE_MAXLINE]; |
| 314 |
|
int i, linenum, len; |
| 315 |
|
|
| 316 |
// Cygwin設定が変更されていない場合は、ファイルを書き込まない。 |
// Cygwin設定が変更されていない場合は、ファイルを書き込まない。 |
| 317 |
if (ts->CygtermSettings.update_flag == FALSE) |
if (ts->CygtermSettings.update_flag == FALSE) |
| 329 |
AppendSlash(tmp, sizeof(tmp)); |
AppendSlash(tmp, sizeof(tmp)); |
| 330 |
strncat_s(tmp, sizeof(tmp), tmpfile, _TRUNCATE); |
strncat_s(tmp, sizeof(tmp), tmpfile, _TRUNCATE); |
| 331 |
|
|
| 332 |
|
// cygterm.cfg が存在すれば、いったんメモリにすべて読み込む。 |
| 333 |
|
memset(line, 0, sizeof(line)); |
| 334 |
|
linenum = 0; |
| 335 |
fp = fopen(cfg, "r"); |
fp = fopen(cfg, "r"); |
| 336 |
tmp_fp = fopen(tmp, "w"); |
if (fp) { |
| 337 |
|
i = 0; |
| 338 |
|
while (fgets(buf, sizeof(buf), fp) != NULL) { |
| 339 |
|
len = strlen(buf); |
| 340 |
|
if (buf[len - 1] == '\n') |
| 341 |
|
buf[len - 1] = '\0'; |
| 342 |
|
if (i < CYGTERM_FILE_MAXLINE) |
| 343 |
|
line[i++] = strdup(buf); |
| 344 |
|
else |
| 345 |
|
break; |
| 346 |
|
} |
| 347 |
|
linenum = i; |
| 348 |
|
fclose(fp); |
| 349 |
|
} |
| 350 |
|
|
| 351 |
|
tmp_fp = fopen(cfg, "w"); |
| 352 |
if (tmp_fp == NULL) { |
if (tmp_fp == NULL) { |
| 353 |
get_lang_msg("MSG_ERROR", uimsg, sizeof(uimsg), "ERROR", ts->UILanguageFile); |
get_lang_msg("MSG_ERROR", uimsg, sizeof(uimsg), "ERROR", ts->UILanguageFile); |
| 354 |
get_lang_msg("MSG_CYGTERM_CONF_WRITEFILE_ERROR", ts->UIMsg, sizeof(ts->UIMsg), |
get_lang_msg("MSG_CYGTERM_CONF_WRITEFILE_ERROR", ts->UIMsg, sizeof(ts->UIMsg), |
| 357 |
MessageBox(NULL, buf, uimsg, MB_ICONEXCLAMATION); |
MessageBox(NULL, buf, uimsg, MB_ICONEXCLAMATION); |
| 358 |
} |
} |
| 359 |
else { |
else { |
| 360 |
if (fp != NULL) { |
if (linenum > 0) { |
| 361 |
while (fgets(buf, sizeof(buf), fp) != NULL) { |
for (i = 0; i < linenum; i++) { |
| 362 |
int len = strlen(buf); |
split_buffer(line[i], '=', &head, &body); |
|
|
|
|
if (buf[len - 1] == '\n') |
|
|
buf[len - 1] = '\0'; |
|
|
|
|
|
split_buffer(buf, '=', &head, &body); |
|
| 363 |
if (head == NULL || body == NULL) { |
if (head == NULL || body == NULL) { |
| 364 |
fprintf(tmp_fp, "%s\n", buf); |
fprintf(tmp_fp, "%s\n", line[i]); |
| 365 |
} |
} |
| 366 |
else if (_stricmp(head, "TERM") == 0) { |
else if (_stricmp(head, "TERM") == 0) { |
| 367 |
fprintf(tmp_fp, "TERM = %s\n", settings.term); |
fprintf(tmp_fp, "TERM = %s\n", settings.term); |
| 407 |
fprintf(tmp_fp, "%s = %s\n", head, body); |
fprintf(tmp_fp, "%s = %s\n", head, body); |
| 408 |
} |
} |
| 409 |
} |
} |
|
fclose(fp); |
|
| 410 |
} |
} |
| 411 |
else { |
else { |
| 412 |
fputs("# CygTerm setting\n", tmp_fp); |
fputs("# CygTerm setting\n", tmp_fp); |
| 444 |
} |
} |
| 445 |
fclose(tmp_fp); |
fclose(tmp_fp); |
| 446 |
|
|
| 447 |
|
// ダイレクトにファイルに書き込むようにしたので、下記処理は不要。 |
| 448 |
|
#if 0 |
| 449 |
if (remove(cfg) != 0 && errno != ENOENT) { |
if (remove(cfg) != 0 && errno != ENOENT) { |
| 450 |
get_lang_msg("MSG_ERROR", uimsg, sizeof(uimsg), "ERROR", ts->UILanguageFile); |
get_lang_msg("MSG_ERROR", uimsg, sizeof(uimsg), "ERROR", ts->UILanguageFile); |
| 451 |
get_lang_msg("MSG_CYGTERM_CONF_REMOVEFILE_ERROR", ts->UIMsg, sizeof(ts->UIMsg), |
get_lang_msg("MSG_CYGTERM_CONF_REMOVEFILE_ERROR", ts->UIMsg, sizeof(ts->UIMsg), |
| 467 |
// Save setup 実行時に、CygTermの設定を保存するようにしたことにより、 |
// Save setup 実行時に、CygTermの設定を保存するようにしたことにより、 |
| 468 |
// ダイアログ表示が不要となるため、削除する。 |
// ダイアログ表示が不要となるため、削除する。 |
| 469 |
// (2015.11.12 yutaka) |
// (2015.11.12 yutaka) |
|
#if 0 |
|
| 470 |
get_lang_msg("MSG_TT_NOTICE", uimsg, sizeof(uimsg), "MSG_TT_NOTICE", ts->UILanguageFile); |
get_lang_msg("MSG_TT_NOTICE", uimsg, sizeof(uimsg), "MSG_TT_NOTICE", ts->UILanguageFile); |
| 471 |
get_lang_msg("MSG_CYGTERM_CONF_SAVED_NOTICE", ts->UIMsg, sizeof(ts->UIMsg), |
get_lang_msg("MSG_CYGTERM_CONF_SAVED_NOTICE", ts->UIMsg, sizeof(ts->UIMsg), |
| 472 |
"%s has been saved. Do not do save setup.", ts->UILanguageFile); |
"%s has been saved. Do not do save setup.", ts->UILanguageFile); |
| 473 |
_snprintf_s(buf, sizeof(buf), _TRUNCATE, ts->UIMsg, CYGTERM_FILE); |
_snprintf_s(buf, sizeof(buf), _TRUNCATE, ts->UIMsg, CYGTERM_FILE); |
| 474 |
MessageBox(NULL, buf, uimsg, MB_OK | MB_ICONINFORMATION); |
MessageBox(NULL, buf, uimsg, MB_OK | MB_ICONINFORMATION); |
|
#endif |
|
| 475 |
} |
} |
| 476 |
|
#endif |
| 477 |
|
} |
| 478 |
|
|
| 479 |
|
// 忘れずにメモリフリーしておく。 |
| 480 |
|
for (i = 0; i < linenum; i++) { |
| 481 |
|
free(line[i]); |
| 482 |
} |
} |
| 483 |
|
|
| 484 |
} |
} |
| 485 |
|
|
| 486 |
void FAR PASCAL ReadIniFile(PCHAR FName, PTTSet ts) |
void FAR PASCAL ReadIniFile(PCHAR FName, PTTSet ts) |