Develop and Download Open Source Software

Browse CVS Repository

Contents of /ttssh2/teraterm/source/teraterm/filesys.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.17 - (show annotations) (download) (as text)
Mon Aug 13 22:26:08 2007 UTC (16 years, 8 months ago) by maya
Branch: MAIN
Changes since 1.16: +31 -47 lines
File MIME type: text/x-c++src
国際化関数を修正した。
NO_I18N マクロを削除した。

1 /* Tera Term
2 Copyright(C) 1994-1998 T. Teranishi
3 All rights reserved. */
4
5 /* TERATERM.EXE, file transfer routines */
6 #include "stdafx.h"
7 #include "teraterm.h"
8 #include "tttypes.h"
9 #include "ttftypes.h"
10 #ifdef TERATERM32
11 #include "tt_res.h"
12 #else
13 #include "tt_res16.h"
14 #endif
15 #include "ftdlg.h"
16 #include "protodlg.h"
17 #include "ttwinman.h"
18 #include "commlib.h"
19 #include "ttcommon.h"
20 #include "ttdde.h"
21 #include "ttlib.h"
22 #include "helpid.h"
23
24 #include "filesys.h"
25
26 PFileVar LogVar = NULL;
27 PFileVar SendVar = NULL;
28 PFileVar FileVar = NULL;
29 static PCHAR ProtoVar = NULL;
30 static int ProtoId;
31
32 static BYTE LogLast = 0;
33 BOOL FileLog = FALSE;
34 BOOL BinLog = FALSE;
35 BOOL DDELog = FALSE;
36 static BOOL FileRetrySend, FileRetryEcho, FileCRSend;
37 static BYTE FileByte;
38
39 static BOOL FSend = FALSE;
40
41 static HMODULE HTTFILE = NULL;
42 static int TTFILECount = 0;
43
44 PGetSetupFname GetSetupFname;
45 PGetTransFname GetTransFname;
46 PGetMultiFname GetMultiFname;
47 PGetGetFname GetGetFname;
48 PSetFileVar SetFileVar;
49 PGetXFname GetXFname;
50 PProtoInit ProtoInit;
51 PProtoParse ProtoParse;
52 PProtoTimeOutProc ProtoTimeOutProc;
53 PProtoCancel ProtoCancel;
54
55 #define IdGetSetupFname 1
56 #define IdGetTransFname 2
57 #define IdGetMultiFname 3
58 #define IdGetGetFname 4
59 #define IdSetFileVar 5
60 #define IdGetXFname 6
61
62 #define IdProtoInit 7
63 #define IdProtoParse 8
64 #define IdProtoTimeOutProc 9
65 #define IdProtoCancel 10
66
67 /*
68 Line Head flag for timestamping
69 2007.05.24 Gentaro
70 */
71 enum enumLineEnd {
72 Line_Other = 0,
73 Line_LineHead = 1,
74 Line_FileHead = 2,
75 };
76
77 enum enumLineEnd eLineEnd = Line_LineHead;
78
79 BOOL LoadTTFILE()
80 {
81 BOOL Err;
82
83 #ifdef TERATERM32
84 if (HTTFILE != NULL)
85 #else
86 if (HTTFILE >= HINSTANCE_ERROR)
87 #endif
88 {
89 TTFILECount++;
90 return TRUE;
91 }
92 else
93 TTFILECount = 0;
94
95 #ifdef TERATERM32
96 HTTFILE = LoadLibrary("TTPFILE.DLL");
97 if (HTTFILE == NULL) return FALSE;
98 #else
99 HTTFILE = LoadLibrary("TTFILE.DLL");
100 if (HTTFILE < HINSTANCE_ERROR) return FALSE;
101 #endif
102
103 Err = FALSE;
104 GetSetupFname = (PGetSetupFname)GetProcAddress(HTTFILE,
105 MAKEINTRESOURCE(IdGetSetupFname));
106 if (GetSetupFname==NULL) Err = TRUE;
107
108 GetTransFname = (PGetTransFname)GetProcAddress(HTTFILE,
109 MAKEINTRESOURCE(IdGetTransFname));
110 if (GetTransFname==NULL) Err = TRUE;
111
112 GetMultiFname = (PGetMultiFname)GetProcAddress(HTTFILE,
113 MAKEINTRESOURCE(IdGetMultiFname));
114 if (GetMultiFname==NULL) Err = TRUE;
115
116 GetGetFname = (PGetGetFname)GetProcAddress(HTTFILE,
117 MAKEINTRESOURCE(IdGetGetFname));
118 if (GetGetFname==NULL) Err = TRUE;
119
120 SetFileVar = (PSetFileVar)GetProcAddress(HTTFILE,
121 MAKEINTRESOURCE(IdSetFileVar));
122 if (SetFileVar==NULL) Err = TRUE;
123
124 GetXFname = (PGetXFname)GetProcAddress(HTTFILE,
125 MAKEINTRESOURCE(IdGetXFname));
126 if (GetXFname==NULL) Err = TRUE;
127
128 ProtoInit = (PProtoInit)GetProcAddress(HTTFILE,
129 MAKEINTRESOURCE(IdProtoInit));
130 if (ProtoInit==NULL) Err = TRUE;
131
132 ProtoParse = (PProtoParse)GetProcAddress(HTTFILE,
133 MAKEINTRESOURCE(IdProtoParse));
134 if (ProtoParse==NULL) Err = TRUE;
135
136 ProtoTimeOutProc = (PProtoTimeOutProc)GetProcAddress(HTTFILE,
137 MAKEINTRESOURCE(IdProtoTimeOutProc));
138 if (ProtoTimeOutProc==NULL) Err = TRUE;
139
140 ProtoCancel = (PProtoCancel)GetProcAddress(HTTFILE,
141 MAKEINTRESOURCE(IdProtoCancel));
142 if (ProtoCancel==NULL) Err = TRUE;
143
144 if (Err)
145 {
146 FreeLibrary(HTTFILE);
147 HTTFILE = NULL;
148 return FALSE;
149 }
150 else {
151 TTFILECount = 1;
152 return TRUE;
153 }
154 }
155
156 BOOL FreeTTFILE()
157 {
158 if (TTFILECount==0) return FALSE;
159 TTFILECount--;
160 if (TTFILECount>0) return TRUE;
161 #ifdef TERATERM32
162 if (HTTFILE!=NULL)
163 #else
164 if (HTTFILE>=HINSTANCE_ERROR)
165 #endif
166 {
167 FreeLibrary(HTTFILE);
168 HTTFILE = NULL;
169 }
170 return TRUE;
171 }
172
173 static PFileTransDlg FLogDlg = NULL;
174 static PFileTransDlg SendDlg = NULL;
175 static PProtoDlg PtDlg = NULL;
176
177 BOOL OpenFTDlg(PFileVar fv)
178 {
179 PFileTransDlg FTDlg;
180 HWND HFTDlg;
181 char uimsg[MAX_UIMSG];
182
183 FTDlg = new CFileTransDlg();
184
185 if (FTDlg!=NULL)
186 {
187 FTDlg->Create(fv, &cv, &ts);
188 FTDlg->RefreshNum();
189 if (fv->OpId == OpLog)
190 FTDlg->ShowWindow(SW_MINIMIZE);
191 }
192
193 if (fv->OpId==OpLog)
194 FLogDlg = FTDlg; /* Log */
195 else
196 SendDlg = FTDlg; /* File send */
197
198 HFTDlg=FTDlg->GetSafeHwnd();
199
200 GetDlgItemText(HFTDlg, IDC_TRANS_FILENAME, uimsg, sizeof(uimsg));
201 get_lang_msg("DLG_FILETRANS_FILENAME", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
202 SetDlgItemText(HFTDlg, IDC_TRANS_FILENAME, ts.UIMsg);
203 GetDlgItemText(HFTDlg, IDC_FULLPATH_LABEL, uimsg, sizeof(uimsg));
204 get_lang_msg("DLG_FILETRANS_FULLPATH", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
205 SetDlgItemText(HFTDlg, IDC_FULLPATH_LABEL, ts.UIMsg);
206 GetDlgItemText(HFTDlg, IDC_TRANS_TRANS, uimsg, sizeof(uimsg));
207 get_lang_msg("DLG_FILETRANS_TRNAS", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
208 SetDlgItemText(HFTDlg, IDC_TRANS_TRANS, ts.UIMsg);
209 GetDlgItemText(HFTDlg, IDCANCEL, uimsg, sizeof(uimsg));
210 get_lang_msg("BTN_CANCEL", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
211 SetDlgItemText(HFTDlg, IDCANCEL, ts.UIMsg);
212 GetDlgItemText(HFTDlg, IDC_TRANSPAUSESTART, uimsg, sizeof(uimsg));
213 get_lang_msg("DLG_FILETRANS_PAUSE", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
214 SetDlgItemText(HFTDlg, IDC_TRANSPAUSESTART, ts.UIMsg);
215 GetDlgItemText(HFTDlg, IDC_TRANSHELP, uimsg, sizeof(uimsg));
216 get_lang_msg("BTN_HELP", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
217 SetDlgItemText(HFTDlg, IDC_TRANSHELP, ts.UIMsg);
218
219 return (FTDlg!=NULL);
220 }
221
222 BOOL NewFileVar(PFileVar *fv)
223 {
224 if ((*fv)==NULL)
225 {
226 *fv = (PFileVar)malloc(sizeof(TFileVar));
227 if ((*fv)!=NULL)
228 {
229 memset(*fv, 0, sizeof(TFileVar));
230 strncpy_s((*fv)->FullName, sizeof((*fv)->FullName),ts.FileDir, _TRUNCATE);
231 AppendSlash((*fv)->FullName,sizeof((*fv)->FullName));
232 (*fv)->DirLen = strlen((*fv)->FullName);
233 (*fv)->FileOpen = FALSE;
234 (*fv)->OverWrite = ((ts.FTFlag & FT_RENAME) == 0);
235 (*fv)->HMainWin = HVTWin;
236 (*fv)->Success = FALSE;
237 (*fv)->NoMsg = FALSE;
238 }
239 }
240
241 return ((*fv)!=NULL);
242 }
243
244 void FreeFileVar(PFileVar *fv)
245 {
246 if ((*fv)!=NULL)
247 {
248 if ((*fv)->FileOpen) _lclose((*fv)->FileHandle);
249 if ((*fv)->FnStrMemHandle>0)
250 {
251 GlobalUnlock((*fv)->FnStrMemHandle);
252 GlobalFree((*fv)->FnStrMemHandle);
253 }
254 free(*fv);
255 *fv = NULL;
256 }
257 }
258
259 // &h ?ス?ス?スz?スX?スg?ス?ス?ス?ス?スu?ス?ス (2007.5.14)
260 void ConvertLogname(char *c, int destlen)
261 {
262 char buf[MAXPATHLEN], buf2[MAXPATHLEN], *p = c;
263
264 memset(buf, 0, sizeof(buf));
265
266 while(*p != '\0') {
267 if (*p == '&' && *(p+1) != '\0') {
268 switch (*(p+1)) {
269 case 'h':
270 if (cv.Open) {
271 if (cv.PortType == IdTCPIP) {
272 strncat_s(buf,sizeof(buf),ts.HostName,_TRUNCATE);
273 }
274 else if (cv.PortType == IdSerial) {
275 strncpy_s(buf2,sizeof(buf2),buf,_TRUNCATE);
276 _snprintf_s(buf, sizeof(buf), _TRUNCATE, "%sCOM%d", buf2, ts.ComPort);
277 }
278 }
279 break;
280 default:
281 strncpy_s(buf2,sizeof(buf2),p,2);
282 strncat_s(buf,sizeof(buf),buf2,_TRUNCATE);
283 }
284 p++;
285 }
286 else {
287 strncpy_s(buf2,sizeof(buf2),p,1);
288 strncat_s(buf,sizeof(buf),buf2,_TRUNCATE);
289 }
290 p++;
291 }
292 strncpy_s(c, destlen, buf, _TRUNCATE);
293 }
294
295 extern "C" {
296 void LogStart()
297 {
298 LONG Option;
299 char *logdir;
300
301 if ((FileLog) || (BinLog)) return;
302
303 if (! LoadTTFILE()) return;
304 if (! NewFileVar(&LogVar))
305 {
306 FreeTTFILE();
307 return;
308 }
309 LogVar->OpId = OpLog;
310
311 if (strlen(ts.LogDefaultPath) > 0) {
312 logdir = ts.LogDefaultPath;
313 }
314 else if (strlen(ts.FileDir) > 0) {
315 logdir = ts.FileDir;
316 }
317 else {
318 logdir = ts.HomeDir;
319 }
320
321 if (strlen(&(LogVar->FullName[LogVar->DirLen]))==0)
322 {
323 // LOWORD
324 // 0x0001 = Binary
325 // HIWORD
326 // 0x0001 = Append
327 // 0x1000 = plain text (2005.2.20 yutaka)
328 // 0x2000 = timestamp (2006.7.23 maya)
329 // teraterm.ini?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スf?スt?スH?ス?ス?スg?スI?スv?スV?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スB(2005.5.7 yutaka)
330 Option = MAKELONG(ts.TransBin,ts.Append |
331 (0x1000 * ts.LogTypePlainText) |
332 (0x2000 * ts.LogTimestamp));
333
334 // ?ス?ス?スO?ス?ス?スf?スt?スH?ス?ス?スg?スt?ス@?スC?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス (2006.8.28 maya)
335 strncat_s(LogVar->FullName, sizeof(LogVar->FullName), ts.LogDefaultName, _TRUNCATE);
336
337 ParseStrftimeFileName(LogVar->FullName, sizeof(LogVar->FullName));
338
339 // &h ?ス?ス?スz?スX?スg?ス?ス?ス?ス?スu?ス?ス (2007.5.14)
340 ConvertLogname(LogVar->FullName, sizeof(LogVar->FullName));
341
342 if (! (*GetTransFname)(LogVar, logdir, GTF_LOG, &Option))
343 {
344 FreeFileVar(&LogVar);
345 FreeTTFILE();
346 return;
347 }
348 ts.TransBin = LOWORD(Option);
349 ts.Append = HIWORD(Option);
350
351 if (ts.Append & 0x1000) {
352 ts.LogTypePlainText = 1;
353 } else {
354 ts.LogTypePlainText = 0;
355 }
356
357 if (ts.Append & 0x2000) {
358 ts.LogTimestamp = 1;
359 }
360 else {
361 ts.LogTimestamp = 0;
362 }
363
364 ts.Append &= 0x1; // 1bit?ス?ス?ス}?スX?スN?ス?ス?ス?ス
365
366 }
367 else {
368 // LogVar->DirLen = 0 ?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
369 // ?スt?ス?ス?スp?スX?スE?ス?ス?ス?ス?スp?スX?ス?ス?ス?ス?ス?ス LogVar->FullName ?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スK?スv?ス?ス?ス?ス?ス?ス
370 char FileName[MAX_PATH];
371
372 // ?スt?ス?ス?スp?スX?ス?ス
373 strncpy_s(FileName, sizeof(FileName), LogVar->FullName, _TRUNCATE);
374 ConvFName(logdir,FileName,sizeof(FileName),"",LogVar->FullName,sizeof(LogVar->FullName));
375
376 ParseStrftimeFileName(LogVar->FullName, sizeof(LogVar->FullName));
377
378 // &h ?ス?ス?スz?スX?スg?ス?ス?ス?ス?スu?ス?ス (2007.5.14)
379 ConvertLogname(LogVar->FullName, sizeof(LogVar->FullName));
380 (*SetFileVar)(LogVar);
381 }
382
383 if (ts.TransBin > 0)
384 {
385 BinLog = TRUE;
386 FileLog = FALSE;
387 if (! CreateBinBuf())
388 {
389 FileTransEnd(OpLog);
390 return;
391 }
392 }
393 else {
394 BinLog = FALSE;
395 FileLog = TRUE;
396 if (! CreateLogBuf())
397 {
398 FileTransEnd(OpLog);
399 return;
400 }
401 }
402 cv.LStart = cv.LogPtr;
403 cv.LCount = 0;
404
405 HelpId = HlpFileLog;
406 /* 2007.05.24 Gentaro */
407 eLineEnd = Line_LineHead;
408
409 if (ts.Append > 0)
410 {
411 LogVar->FileHandle = _lopen(LogVar->FullName,OF_WRITE);
412 if (LogVar->FileHandle>0){
413 _llseek(LogVar->FileHandle,0,2);
414 /* 2007.05.24 Gentaro
415 If log file already exists,
416 a newline is inserted before the first timestamp.
417 */
418 eLineEnd = Line_FileHead;
419 }
420 else
421 LogVar->FileHandle = _lcreat(LogVar->FullName,0);
422 }
423 else
424 LogVar->FileHandle = _lcreat(LogVar->FullName,0);
425 LogVar->FileOpen = (LogVar->FileHandle>0);
426 if (! LogVar->FileOpen)
427 {
428 FileTransEnd(OpLog);
429 return;
430 }
431 LogVar->ByteCount = 0;
432
433 if (! OpenFTDlg(LogVar))
434 FileTransEnd(OpLog);
435 }
436 }
437
438 void LogPut1(BYTE b)
439 {
440 LogLast = b;
441 cv.LogBuf[cv.LogPtr] = b;
442 cv.LogPtr++;
443 if (cv.LogPtr>=InBuffSize)
444 cv.LogPtr = cv.LogPtr-InBuffSize;
445
446 if (FileLog)
447 {
448 if (cv.LCount>=InBuffSize)
449 {
450 cv.LCount = InBuffSize;
451 cv.LStart = cv.LogPtr;
452 }
453 else cv.LCount++;
454 }
455 else
456 cv.LCount = 0;
457
458 if (DDELog)
459 {
460 if (cv.DCount>=InBuffSize)
461 {
462 cv.DCount = InBuffSize;
463 cv.DStart = cv.LogPtr;
464 }
465 else cv.DCount++;
466 }
467 else {
468 cv.DCount = 0;
469 // ?ス?ス?スO?ス?ス?ス?ス?ス?ス?ス?ス?ス}?スN?ス?ス?ス?ス?スX?スg?ス[?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スC?ス?ス?スB
470 // ?ス?ス?スO?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スx?ス}?スN?ス?ス?ス?ス?ス~?ス?ス?ス?ス?ス?ス?スA?スo?スb?スt?ス@?ス?ス?スC?ス?ス?スf?スb?スN?スX?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スA
471 // ?ス?ス?スx?ス}?スN?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スf?ス[?ス^?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スB
472 // ?ス}?スN?ス?ス?ス?ス?ス?ス?ス~?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スC?ス?ス?スf?スb?スN?スX?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スB
473 // (2006.12.26 yutaka)
474 cv.DStart = cv.LogPtr;
475 }
476 }
477
478 void Log1Byte(BYTE b)
479 {
480 if (b==0x0d)
481 {
482 LogLast = b;
483 return;
484 }
485 if ((b==0x0a) && (LogLast==0x0d))
486 LogPut1(0x0d);
487 LogPut1(b);
488 }
489
490 static BOOL Get1(PCHAR Buf, int *Start, int *Count, PBYTE b)
491 {
492 if (*Count<=0) return FALSE;
493 *b = Buf[*Start];
494 (*Start)++;
495 if (*Start>=InBuffSize)
496 *Start = *Start-InBuffSize;
497 (*Count)--;
498 return TRUE;
499 }
500
501
502
503 static CRITICAL_SECTION g_filelog_lock; /* ?ス?ス?スb?スN?スp?ス?ス?ス?ス */
504
505 void logfile_lock_initialize(void)
506 {
507 InitializeCriticalSection(&g_filelog_lock);
508 }
509
510 static inline void logfile_lock(void)
511 {
512 EnterCriticalSection(&g_filelog_lock);
513 }
514
515 static inline void logfile_unlock(void)
516 {
517 LeaveCriticalSection(&g_filelog_lock);
518 }
519
520 // ?スR?ス?ス?ス?ス?スg?ス?ス?ス?ス?スO?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
521 void CommentLogToFile(char *buf, int size)
522 {
523 DWORD wrote;
524
525 if (LogVar == NULL || !LogVar->FileOpen) {
526 char uimsg[MAX_UIMSG];
527 get_lang_msg("MSG_ERROR", uimsg, sizeof(uimsg), "ERROR", ts.UILanguageFile);
528 get_lang_msg("MSG_COMMENT_LOG_OPEN_ERROR", ts.UIMsg, sizeof(ts.UIMsg),
529 "It is not opened by the log file yet.", ts.UILanguageFile);
530 ::MessageBox(NULL, ts.UIMsg, uimsg, MB_OK|MB_ICONEXCLAMATION);
531 return;
532 }
533
534 logfile_lock();
535 WriteFile((HANDLE)LogVar->FileHandle, buf, size, &wrote, NULL);
536 WriteFile((HANDLE)LogVar->FileHandle, "\r\n", 2, &wrote, NULL); // ?ス?ス?スs
537 /* Set Line End Flag
538 2007.05.24 Gentaro
539 */
540 eLineEnd = Line_LineHead;
541 logfile_unlock();
542 }
543
544 void LogToFile()
545 {
546 PCHAR Buf;
547 int Start, Count;
548 BYTE b;
549
550 if (! LogVar->FileOpen) return;
551 if (FileLog)
552 {
553 Buf = cv.LogBuf;
554 Start = cv.LStart;
555 Count = cv.LCount;
556 }
557 else if (BinLog)
558 {
559 Buf = cv.BinBuf;
560 Start = cv.BStart;
561 Count = cv.BCount;
562 }
563 else
564 return;
565
566 if (Buf==NULL) return;
567 if (Count==0) return;
568
569 // ?ス?ス?スb?スN?ス?ス?ス?ス?ス?ス(2004.8.6 yutaka)
570 logfile_lock();
571
572 while (Get1(Buf,&Start,&Count,&b))
573 {
574 if (((cv.FilePause & OpLog)==0) && (! cv.ProtoFlag))
575 {
576 // ?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スo?ス?ス(2006.7.23 maya)
577 // ?ス?ス?スt?スt?スH?ス[?ス}?スb?スg?ス?ス?ス?ス?ス{?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スE?スW?ス?ス?ス?ス?ス?ス?スX?ス?ス?ス?ス (2006.7.23 yutaka)
578 /* 2007.05.24 Gentaro */
579 if ( ts.LogTimestamp && eLineEnd ) {
580 #if 0
581 SYSTEMTIME LocalTime;
582 GetLocalTime(&LocalTime);
583 char strtime[27];
584
585 // format time
586 sprintf(strtime, "[%04d/%02d/%02d %02d:%02d:%02d.%03d] ",
587 LocalTime.wYear, LocalTime.wMonth,LocalTime.wDay,
588 LocalTime.wHour, LocalTime.wMinute, LocalTime.wSecond,
589 LocalTime.wMilliseconds);
590 #else
591 time_t tick = time(NULL);
592 char *strtime = ctime(&tick);
593 #endif
594 /* 2007.05.24 Gentaro */
595 if( eLineEnd == Line_FileHead ){
596 _lwrite(LogVar->FileHandle,"\r\n",2);
597 }
598 _lwrite(LogVar->FileHandle,"[",1);
599 // ?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スI?ス[?ス?ス \n ?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スB
600 _lwrite(LogVar->FileHandle, strtime, strlen(strtime) - 1);
601 _lwrite(LogVar->FileHandle,"] ",2);
602 }
603
604 /* 2007.05.24 Gentaro */
605 if( b == 0x0a ){
606 eLineEnd = Line_LineHead; /* set endmark*/
607 }
608 else {
609 eLineEnd = Line_Other; /* clear endmark*/
610 }
611
612 _lwrite(LogVar->FileHandle,(PCHAR)&b,1);
613 (LogVar->ByteCount)++;
614 }
615 }
616
617 logfile_unlock();
618
619 if (FileLog)
620 {
621 cv.LStart = Start;
622 cv.LCount = Count;
623 }
624 else {
625 cv.BStart = Start;
626 cv.BCount = Count;
627 }
628 if (((cv.FilePause & OpLog) !=0) || cv.ProtoFlag) return;
629 if (FLogDlg!=NULL)
630 FLogDlg->RefreshNum();
631 }
632
633 BOOL CreateLogBuf()
634 {
635 if (cv.HLogBuf==NULL)
636 {
637 cv.HLogBuf = GlobalAlloc(GMEM_MOVEABLE,InBuffSize);
638 cv.LogBuf = NULL;
639 cv.LogPtr = 0;
640 cv.LStart = 0;
641 cv.LCount = 0;
642 cv.DStart = 0;
643 cv.DCount = 0;
644 }
645 return (cv.HLogBuf!=NULL);
646 }
647
648 void FreeLogBuf()
649 {
650 if ((cv.HLogBuf==NULL) || FileLog || DDELog) return;
651 if (cv.LogBuf!=NULL) GlobalUnlock(cv.HLogBuf);
652 GlobalFree(cv.HLogBuf);
653 cv.HLogBuf = NULL;
654 cv.LogBuf = NULL;
655 cv.LogPtr = 0;
656 cv.LStart = 0;
657 cv.LCount = 0;
658 cv.DStart = 0;
659 cv.DCount = 0;
660 }
661
662 BOOL CreateBinBuf()
663 {
664 if (cv.HBinBuf==NULL)
665 {
666 cv.HBinBuf = GlobalAlloc(GMEM_MOVEABLE,InBuffSize);
667 cv.BinBuf = NULL;
668 cv.BinPtr = 0;
669 cv.BStart = 0;
670 cv.BCount = 0;
671 }
672 return (cv.HBinBuf!=NULL);
673 }
674
675 void FreeBinBuf()
676 {
677 if ((cv.HBinBuf==NULL) || BinLog) return;
678 if (cv.BinBuf!=NULL) GlobalUnlock(cv.HBinBuf);
679 GlobalFree(cv.HBinBuf);
680 cv.HBinBuf = NULL;
681 cv.BinBuf = NULL;
682 cv.BinPtr = 0;
683 cv.BStart = 0;
684 cv.BCount = 0;
685 }
686
687 extern "C" {
688 void FileSendStart()
689 {
690 LONG Option;
691
692 if (! cv.Ready || FSend) return;
693 if (cv.ProtoFlag)
694 {
695 FreeFileVar(&SendVar);
696 return;
697 }
698
699 if (! LoadTTFILE()) return;
700 if (! NewFileVar(&SendVar))
701 {
702 FreeTTFILE();
703 return;
704 }
705 SendVar->OpId = OpSendFile;
706
707 FSend = TRUE;
708
709 if (strlen(&(SendVar->FullName[SendVar->DirLen]))==0)
710 {
711 Option = MAKELONG(ts.TransBin,0);
712 SendVar->FullName[0] = 0;
713 if (! (*GetTransFname)(SendVar, ts.FileDir, GTF_SEND, &Option))
714 {
715 FileTransEnd(OpSendFile);
716 return;
717 }
718 ts.TransBin = LOWORD(Option);
719 }
720 else
721 (*SetFileVar)(SendVar);
722
723 SendVar->FileHandle = _lopen(SendVar->FullName,OF_READ);
724 SendVar->FileOpen = (SendVar->FileHandle>0);
725 if (! SendVar->FileOpen)
726 {
727 FileTransEnd(OpSendFile);
728 return;
729 }
730 SendVar->ByteCount = 0;
731
732 TalkStatus = IdTalkFile;
733 FileRetrySend = FALSE;
734 FileRetryEcho = FALSE;
735 FileCRSend = FALSE;
736
737 if (! OpenFTDlg(SendVar))
738 FileTransEnd(OpSendFile);
739 }
740 }
741
742 void FileTransEnd(WORD OpId)
743 /* OpId = 0: close Log and FileSend
744 OpLog: close Log
745 OpSendFile: close FileSend */
746 {
747 if (((OpId==0) || (OpId==OpLog)) &&
748 (FileLog || BinLog))
749 {
750 FileLog = FALSE;
751 BinLog = FALSE;
752 if (FLogDlg!=NULL)
753 {
754 FLogDlg->DestroyWindow();
755 FLogDlg = NULL;
756 }
757 FreeFileVar(&LogVar);
758 FreeLogBuf();
759 FreeBinBuf();
760 FreeTTFILE();
761 }
762
763 if (((OpId==0) || (OpId==OpSendFile)) &&
764 FSend)
765 {
766 FSend = FALSE;
767 TalkStatus = IdTalkKeyb;
768 if (SendDlg!=NULL)
769 {
770 SendDlg->DestroyWindow();
771 SendDlg = NULL;
772 }
773 FreeFileVar(&SendVar);
774 FreeTTFILE();
775 }
776
777 EndDdeCmnd(0);
778 }
779
780 // vtwin.cpp ?ス?ス?ス?ス?スR?ス[?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スAextern "C"?ス?ス?スt?ス?ス?ス?ス?スB(2004.11.3 yutaka)
781 extern "C" {
782 int FSOut1(BYTE b)
783 {
784 if (ts.TransBin > 0)
785 return CommBinaryOut(&cv,(PCHAR)&b,1);
786 else if ((b>=0x20) || (b==0x09) || (b==0x0A) || (b==0x0D))
787 return CommTextOut(&cv,(PCHAR)&b,1);
788 else
789 return 1;
790 }
791
792 int FSEcho1(BYTE b)
793 {
794 if (ts.TransBin > 0)
795 return CommBinaryEcho(&cv,(PCHAR)&b,1);
796 else
797 return CommTextEcho(&cv,(PCHAR)&b,1);
798 }
799 }
800
801 extern "C" {
802 void FileSend()
803 {
804 WORD c, fc;
805 LONG BCOld;
806
807 if ((SendDlg==NULL) ||
808 ((cv.FilePause & OpSendFile) !=0)) return;
809
810 BCOld = SendVar->ByteCount;
811
812 if (FileRetrySend)
813 {
814 FileRetryEcho = (ts.LocalEcho>0);
815 c = FSOut1(FileByte);
816 FileRetrySend = (c==0);
817 if (FileRetrySend) return;
818 }
819
820 if (FileRetryEcho)
821 {
822 c = FSEcho1(FileByte);
823 FileRetryEcho = (c==0);
824 if (FileRetryEcho) return;
825 }
826
827 do {
828 fc = _lread(SendVar->FileHandle,&FileByte,1);
829 SendVar->ByteCount = SendVar->ByteCount + fc;
830
831 if (FileCRSend && (fc==1) && (FileByte==0x0A))
832 {
833 fc = _lread(SendVar->FileHandle,&FileByte,1);
834 SendVar->ByteCount = SendVar->ByteCount + fc;
835 }
836
837 if (fc!=0)
838 {
839 c = FSOut1(FileByte);
840 FileCRSend = (ts.TransBin==0) && (FileByte==0x0D);
841 FileRetrySend = (c==0);
842 if (FileRetrySend)
843 {
844 if (SendVar->ByteCount != BCOld)
845 SendDlg->RefreshNum();
846 return;
847 }
848 if (ts.LocalEcho>0)
849 {
850 c = FSEcho1(FileByte);
851 FileRetryEcho = (c==0);
852 if (FileRetryEcho) return;
853 }
854 }
855 if ((fc==0) || (SendVar->ByteCount % 100 == 0))
856 {
857 SendDlg->RefreshNum();
858 BCOld = SendVar->ByteCount;
859 if (fc!=0) return;
860 }
861 } while (fc!=0);
862
863 FileTransEnd(OpSendFile);
864 }
865 }
866
867 extern "C" {
868 void FLogChangeButton(BOOL Pause)
869 {
870 if (FLogDlg!=NULL)
871 FLogDlg->ChangeButton(Pause);
872 }
873 }
874
875 extern "C" {
876 void FLogRefreshNum()
877 {
878 if (FLogDlg!=NULL)
879 FLogDlg->RefreshNum();
880 }
881 }
882
883 BOOL OpenProtoDlg(PFileVar fv, int IdProto, int Mode, WORD Opt1, WORD Opt2)
884 {
885 int vsize;
886 PProtoDlg pd;
887 HWND Hpd;
888 char uimsg[MAX_UIMSG];
889
890 ProtoId = IdProto;
891
892 switch (ProtoId) {
893 case PROTO_KMT:
894 vsize = sizeof(TKmtVar);
895 break;
896 case PROTO_XM:
897 vsize = sizeof(TXVar);
898 break;
899 case PROTO_ZM:
900 vsize = sizeof(TZVar);
901 break;
902 case PROTO_BP:
903 vsize = sizeof(TBPVar);
904 break;
905 case PROTO_QV:
906 vsize = sizeof(TQVVar);
907 break;
908 }
909 ProtoVar = (PCHAR)malloc(vsize);
910 if (ProtoVar==NULL) return FALSE;
911
912 switch (ProtoId) {
913 case PROTO_KMT:
914 ((PKmtVar)ProtoVar)->KmtMode = Mode;
915 break;
916 case PROTO_XM:
917 ((PXVar)ProtoVar)->XMode = Mode;
918 ((PXVar)ProtoVar)->XOpt = Opt1;
919 ((PXVar)ProtoVar)->TextFlag = 1 - (Opt2 & 1);
920 break;
921 case PROTO_ZM:
922 ((PZVar)ProtoVar)->BinFlag = (Opt1 & 1) != 0;
923 ((PZVar)ProtoVar)->ZMode = Mode;
924 break;
925 case PROTO_BP:
926 ((PBPVar)ProtoVar)->BPMode = Mode;
927 break;
928 case PROTO_QV:
929 ((PQVVar)ProtoVar)->QVMode = Mode;
930 break;
931 }
932
933 pd = new CProtoDlg();
934 if (pd==NULL)
935 {
936 free(ProtoVar);
937 ProtoVar = NULL;
938 return FALSE;
939 }
940 pd->Create(fv,&ts);
941
942 Hpd=pd->GetSafeHwnd();
943
944 GetDlgItemText(Hpd, IDC_PROT_FILENAME, uimsg, sizeof(uimsg));
945 get_lang_msg("DLG_PROT_FIELNAME", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
946 SetDlgItemText(Hpd, IDC_PROT_FILENAME, ts.UIMsg);
947 GetDlgItemText(Hpd, IDC_PROT_PROT, uimsg, sizeof(uimsg));
948 get_lang_msg("DLG_PROT_PROTO", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
949 SetDlgItemText(Hpd, IDC_PROT_PROT, ts.UIMsg);
950 GetDlgItemText(Hpd, IDC_PROT_PACKET, uimsg, sizeof(uimsg));
951 get_lang_msg("DLG_PROT_PACKET", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
952 SetDlgItemText(Hpd, IDC_PROT_PACKET, ts.UIMsg);
953 GetDlgItemText(Hpd, IDC_PROT_TRANS, uimsg, sizeof(uimsg));
954 get_lang_msg("DLG_PROT_TRANS", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
955 SetDlgItemText(Hpd, IDC_PROT_TRANS, ts.UIMsg);
956 GetDlgItemText(Hpd, IDCANCEL, uimsg, sizeof(uimsg));
957 get_lang_msg("BTN_CANCEL", ts.UIMsg, sizeof(ts.UIMsg), uimsg, ts.UILanguageFile);
958 SetDlgItemText(Hpd, IDCANCEL, ts.UIMsg);
959
960 (*ProtoInit)(ProtoId,FileVar,ProtoVar,&cv,&ts);
961
962 PtDlg = pd;
963 return TRUE;
964 }
965
966 extern "C" {
967 void CloseProtoDlg()
968 {
969 if (PtDlg!=NULL)
970 {
971 PtDlg->DestroyWindow();
972 PtDlg = NULL;
973
974 ::KillTimer(FileVar->HMainWin,IdProtoTimer);
975 if ((ProtoId==PROTO_QV) &&
976 (((PQVVar)ProtoVar)->QVMode==IdQVSend))
977 CommTextOut(&cv,"\015",1);
978 if (FileVar->LogFlag)
979 _lclose(FileVar->LogFile);
980 FileVar->LogFile = 0;
981 if (ProtoVar!=NULL)
982 {
983 free(ProtoVar);
984 ProtoVar = NULL;
985 }
986 }
987 }
988 }
989
990 BOOL ProtoStart()
991 {
992 if (cv.ProtoFlag) return FALSE;
993 if (FSend)
994 {
995 FreeFileVar(&FileVar);
996 return FALSE;
997 }
998
999 if (! LoadTTFILE()) return FALSE;
1000 NewFileVar(&FileVar);
1001
1002 if (FileVar==NULL)
1003 {
1004 FreeTTFILE();
1005 return FALSE;
1006 }
1007 cv.ProtoFlag = TRUE;
1008 return TRUE;
1009 }
1010
1011 void ProtoEnd()
1012 {
1013 if (! cv.ProtoFlag) return;
1014 cv.ProtoFlag = FALSE;
1015
1016 /* Enable transmit delay (serial port) */
1017 cv.DelayFlag = TRUE;
1018 TalkStatus = IdTalkKeyb;
1019
1020 CloseProtoDlg();
1021
1022 if ((FileVar!=NULL) && FileVar->Success)
1023 EndDdeCmnd(1);
1024 else
1025 EndDdeCmnd(0);
1026
1027 FreeTTFILE();
1028 FreeFileVar(&FileVar);
1029 }
1030
1031 extern "C" {
1032 int ProtoDlgParse()
1033 {
1034 int P;
1035
1036 P = ActiveWin;
1037 if (PtDlg==NULL) return P;
1038
1039 if ((*ProtoParse)(ProtoId,FileVar,ProtoVar,&cv))
1040 P = 0; /* continue */
1041 else {
1042 CommSend(&cv);
1043 ProtoEnd();
1044 }
1045 return P;
1046 }
1047 }
1048
1049 extern "C" {
1050 void ProtoDlgTimeOut()
1051 {
1052 if (PtDlg!=NULL)
1053 (*ProtoTimeOutProc)(ProtoId,FileVar,ProtoVar,&cv);
1054 }
1055 }
1056
1057 extern "C" {
1058 void ProtoDlgCancel()
1059 {
1060 if ((PtDlg!=NULL) &&
1061 (*ProtoCancel)(ProtoId,FileVar,ProtoVar,&cv))
1062 ProtoEnd();
1063 }
1064 }
1065
1066 extern "C" {
1067 void KermitStart(int mode)
1068 {
1069 WORD w;
1070
1071 if (! ProtoStart()) return;
1072
1073 switch (mode) {
1074 case IdKmtSend:
1075 FileVar->OpId = OpKmtSend;
1076 if (strlen(&(FileVar->FullName[FileVar->DirLen]))==0)
1077 {
1078 if (! (*GetMultiFname)(FileVar,ts.FileDir,GMF_KERMIT,&w) ||
1079 (FileVar->NumFname==0))
1080 {
1081 ProtoEnd();
1082 return;
1083 }
1084 }
1085 else
1086 (*SetFileVar)(FileVar);
1087 break;
1088 case IdKmtReceive:
1089 FileVar->OpId = OpKmtRcv;
1090 break;
1091 case IdKmtGet:
1092 FileVar->OpId = OpKmtSend;
1093 if (strlen(&(FileVar->FullName[FileVar->DirLen]))==0)
1094 {
1095 if (! (*GetGetFname)(FileVar->HMainWin,FileVar) ||
1096 (strlen(FileVar->FullName)==0))
1097 {
1098 ProtoEnd();
1099 return;
1100 }
1101 }
1102 else
1103 (*SetFileVar)(FileVar);
1104 break;
1105 case IdKmtFinish:
1106 FileVar->OpId = OpKmtFin;
1107 break;
1108 default:
1109 ProtoEnd();
1110 return;
1111 }
1112 TalkStatus = IdTalkQuiet;
1113
1114 /* disable transmit delay (serial port) */
1115 cv.DelayFlag = FALSE;
1116
1117 if (! OpenProtoDlg(FileVar,PROTO_KMT,mode,0,0))
1118 ProtoEnd();
1119 }
1120 }
1121
1122 extern "C" {
1123 void XMODEMStart(int mode)
1124 {
1125 LONG Option;
1126
1127 if (! ProtoStart()) return;
1128
1129 if (mode==IdXReceive)
1130 FileVar->OpId = OpXRcv;
1131 else
1132 FileVar->OpId = OpXSend;
1133
1134 if (strlen(&(FileVar->FullName[FileVar->DirLen]))==0)
1135 {
1136 Option = MAKELONG(ts.XmodemBin,ts.XmodemOpt);
1137 if (! (*GetXFname)(FileVar->HMainWin,
1138 mode==IdXReceive,&Option,FileVar,ts.FileDir))
1139 {
1140 ProtoEnd();
1141 return;
1142 }
1143 ts.XmodemOpt = HIWORD(Option);
1144 ts.XmodemBin = LOWORD(Option);
1145 }
1146 else
1147 (*SetFileVar)(FileVar);
1148
1149 if (mode==IdXReceive)
1150 FileVar->FileHandle = _lcreat(FileVar->FullName,0);
1151 else
1152 FileVar->FileHandle = _lopen(FileVar->FullName,OF_READ);
1153
1154 FileVar->FileOpen = FileVar->FileHandle>0;
1155 if (! FileVar->FileOpen)
1156 {
1157 ProtoEnd();
1158 return;
1159 }
1160 TalkStatus = IdTalkQuiet;
1161
1162 /* disable transmit delay (serial port) */
1163 cv.DelayFlag = FALSE;
1164
1165 if (! OpenProtoDlg(FileVar,PROTO_XM,mode,
1166 ts.XmodemOpt,ts.XmodemBin))
1167 ProtoEnd();
1168 }
1169 }
1170
1171 extern "C" {
1172 void ZMODEMStart(int mode)
1173 {
1174 WORD Opt;
1175
1176 if (! ProtoStart()) return;
1177
1178 if (mode==IdZSend)
1179 {
1180 Opt = ts.XmodemBin;
1181 FileVar->OpId = OpZSend;
1182 if (strlen(&(FileVar->FullName[FileVar->DirLen]))==0)
1183 {
1184 if (! (*GetMultiFname)(FileVar,ts.FileDir,GMF_Z,&Opt) ||
1185 (FileVar->NumFname==0))
1186 {
1187 ProtoEnd();
1188 return;
1189 }
1190 ts.XmodemBin = Opt;
1191 }
1192 else
1193 (*SetFileVar)(FileVar);
1194 }
1195 else /* IdZReceive or IdZAuto */
1196 FileVar->OpId = OpZRcv;
1197
1198 TalkStatus = IdTalkQuiet;
1199
1200 /* disable transmit delay (serial port) */
1201 cv.DelayFlag = FALSE;
1202
1203 if (! OpenProtoDlg(FileVar,PROTO_ZM,mode,Opt,0))
1204 ProtoEnd();
1205 }
1206 }
1207
1208 extern "C" {
1209 void BPStart(int mode)
1210 {
1211 LONG Option;
1212
1213 if (! ProtoStart()) return;
1214 if (mode==IdBPSend)
1215 {
1216 FileVar->OpId = OpBPSend;
1217 if (strlen(&(FileVar->FullName[FileVar->DirLen]))==0)
1218 {
1219 FileVar->FullName[0] = 0;
1220 if (! (*GetTransFname)(FileVar, ts.FileDir, GTF_BP, &Option))
1221 {
1222 ProtoEnd();
1223 return;
1224 }
1225 }
1226 else
1227 (*SetFileVar)(FileVar);
1228 }
1229 else /* IdBPReceive or IdBPAuto */
1230 FileVar->OpId = OpBPRcv;
1231
1232 TalkStatus = IdTalkQuiet;
1233
1234 /* disable transmit delay (serial port) */
1235 cv.DelayFlag = FALSE;
1236
1237 if (! OpenProtoDlg(FileVar,PROTO_BP,mode,0,0))
1238 ProtoEnd();
1239 }
1240 }
1241
1242 extern "C" {
1243 void QVStart(int mode)
1244 {
1245 WORD W;
1246
1247 if (! ProtoStart()) return;
1248
1249 if (mode==IdQVSend)
1250 {
1251 FileVar->OpId = OpQVSend;
1252 if (strlen(&(FileVar->FullName[FileVar->DirLen]))==0)
1253 {
1254 if (! (*GetMultiFname)(FileVar,ts.FileDir,GMF_QV, &W) ||
1255 (FileVar->NumFname==0))
1256 {
1257 ProtoEnd();
1258 return;
1259 }
1260 }
1261 else
1262 (*SetFileVar)(FileVar);
1263 }
1264 else
1265 FileVar->OpId = OpQVRcv;
1266
1267 TalkStatus = IdTalkQuiet;
1268
1269 /* disable transmit delay (serial port) */
1270 cv.DelayFlag = FALSE;
1271
1272 if (! OpenProtoDlg(FileVar,PROTO_QV,mode,0,0))
1273 ProtoEnd();
1274 }
1275 }
1276
1277 /*
1278 * $Log: filesys.cpp,v $
1279 * Revision 1.16 2007/08/08 15:56:35 maya
1280 * ?ス?ス?スS?ス?ス?ス?ス?ス?ス?ス?ス?スg?スp?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スX?ス?ス?ス?ス?スB
1281 *
1282 * Revision 1.15 2007/06/06 14:02:53 maya
1283 * ?スv?ス?ス?スv?ス?ス?スZ?スb?スT?ス?ス?ス?ス?ス?ス?ス\?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スAINET6 ?ス?ス I18N ?ス?ス #define ?ス?ス?スt?ス]?ス?ス?ス?ス?ス?ス?スB
1284 *
1285 * Revision 1.14 2007/05/31 14:39:05 maya
1286 * ?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スI?ス?ス?ス?ス?スO?ス?ス?ス?ス?ス?ス?スJ?スn?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スB
1287 *
1288 * Revision 1.13 2007/05/30 16:04:27 maya
1289 * ?スW?ス?ス?ス?ス?ス?ス?スO?ス?ス?ス?ス?ス?ス?ス?ス?スw?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スB
1290 *
1291 * Revision 1.12 2007/05/25 09:56:05 yutakapon
1292 * ?ス^?スC?ス?ス?スX?ス^?ス?ス?スv?スt?ス?ス?ス?ス?スO?ス?ス1KB?ス?ス?ス?ス?ス?ス?スs?スv?ス?ス?ス?ス?スs?ス?ス?ス?ス?ス?ス?スo?スO?ス?ス?スC?ス?ス?スB
1293 *
1294 * Revision 1.11 2007/05/14 14:07:14 maya
1295 * ?スo?スb?スt?ス@?ス?ス?スN?ス?ス?スA?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スC?ス?ス?ス?ス?ス?ス?スB
1296 *
1297 * Revision 1.10 2007/05/14 13:29:58 maya
1298 * ?ス?ス?スO?スt?ス@?スC?ス?ス?ス?ス?ス?ス?ス?ス &h ?ス?ス?スA?ス?ス?ス?ス?ス?ス?ス?ス?スz?スX?スg?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス@?ス\?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スB
1299 *
1300 * Revision 1.9 2007/01/21 16:18:35 maya
1301 * ?ス\?ス?ス?ス?ス?スb?スZ?ス[?スW?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
1302 *
1303 * Revision 1.8 2007/01/04 15:11:44 maya
1304 * ?ス\?ス?ス?ス?ス?スb?スZ?ス[?スW?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
1305 *
1306 * Revision 1.7 2006/12/25 16:13:54 yutakapon
1307 * ?ス?ス?スO?ス?ス?ス?ス?ス?ス?ス?ス?ス}?スN?ス?ス?ス?ス?スX?スg?ス[?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スC?ス?ス?スB
1308 * ?ス?ス?スO?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スx?ス}?スN?ス?ス?ス?ス?ス~?ス?ス?ス?ス?ス?ス?スA?スo?スb?スt?ス@?ス?ス?スC?ス?ス?スf?スb?スN?スX?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スA
1309 * ?ス?ス?スx?ス}?スN?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スf?ス[?ス^?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スB
1310 * ?ス}?スN?ス?ス?ス?ス?ス?ス?ス~?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スC?ス?ス?スf?スb?スN?スX?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スB
1311 *
1312 * Revision 1.6 2006/08/28 12:27:16 maya
1313 * ?スf?スt?スH?ス?ス?スg?ス?ス?ス?ス?スO?スt?ス@?スC?ス?ス?ス?ス?ス?ス?スw?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スB
1314 * ?スG?スf?スB?スb?スg?スR?ス?ス?スg?ス?ス?ス[?ス?ス?ス?ス "Additional settings" ?ス_?スC?スA?ス?ス?スO?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スB
1315 * teraterm.ini ?スt?ス@?スC?ス?ス?ス?ス LogDefaultName ?スG?ス?ス?スg?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スB
1316 * ?スt?ス@?スC?ス?ス?ス?ス?ス?ス strftime ?ス?ス?スt?スH?ス[?ス}?スb?スg?ス?ス?スg?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スB
1317 *
1318 * Revision 1.5 2006/07/23 14:12:26 yutakakn
1319 * ?ス?ス?スO?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スt?スt?スH?ス[?ス}?スb?スg?ス?ス?ス?ス?スE?スW?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スX?ス?ス?ス?ス?スB
1320 *
1321 * Revision 1.4 2006/07/22 16:15:54 maya
1322 * ?ス?ス?スO?スL?ス^?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス@?ス\?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スB
1323 *
1324 * Revision 1.3 2005/05/07 09:49:24 yutakakn
1325 * teraterm.ini?ス?ス LogTypePlainText ?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スB
1326 *
1327 * Revision 1.2 2005/02/20 14:51:29 yutakakn
1328 * ?ス?ス?スO?スt?ス@?スC?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス"plain text"?ス?ス?ス?ス?ス?ス?スB?ス?ス?ス?ス?スI?スv?スV?ス?ス?ス?ス?ス?ス?スL?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スA?ス?ス?スO?スt?ス@?スC?ス?ス?ス?ス
1329 * ASCII?ス?ス?ス\?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スB
1330 *
1331 * ?ス?ス?ス?ス?スA?ス?ス?ス?ス?ス?ス?ス?ス?スL?ス?ス?ス?ス?スN?ス^?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スB
1332 * ?ス@?スEBS
1333 * ?ス@?スEASCII(0x00-0x1f)?ス?ス?ス?ス?ス?ス?ス?ス?ス\?ス?ス?ス?ス?ス?ス?ス?ス
1334 *
1335 * ?ス?ス?ス?ス?ス?ス?スA?ス?ス?スO?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スO?ス?ス?ス?ス?ス?ス?ス?ス?スB
1336 * ?ス@?スEHT
1337 * ?ス@?スECR
1338 * ?ス@?スELF
1339 *
1340 */

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