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

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