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.14 - (show annotations) (download) (as text)
Thu May 31 14:39:05 2007 UTC (16 years, 10 months ago) by maya
Branch: MAIN
Changes since 1.13: +6 -1 lines
File MIME type: text/x-c++src
接続時に自動的にログ採取を開始できるようにした。

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

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