Develop and Download Open Source Software

Browse CVS Repository

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

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


Revision 1.12 - (hide annotations) (download) (as text)
Fri May 25 09:56:05 2007 UTC (16 years, 9 months ago) by yutakapon
Branch: MAIN
Changes since 1.11: +42 -7 lines
File MIME type: text/x-c++src
タイムスタンプ付きログで1KBごとに不要な改行が入るバグを修正。

1 yutakakn 1.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 yutakapon 1.12 /*
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 yutakakn 1.1 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 maya 1.8 #ifdef I18N
181     HWND HFTDlg;
182     #endif
183 yutakakn 1.1
184     FTDlg = new CFileTransDlg();
185    
186     if (FTDlg!=NULL)
187     {
188 maya 1.8 #ifdef I18N
189     FTDlg->Create(fv, &cv, &ts);
190     #else
191 yutakakn 1.1 FTDlg->Create(fv, &cv);
192 maya 1.8 #endif
193 yutakakn 1.1 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 maya 1.8 #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 yutakakn 1.1 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 maya 1.10 // &h ?ス?ス?スz?スX?スg?ス?ス?ス?ス?スu?ス?ス (2007.5.14)
267     void ConvertLogname(char *c)
268     {
269     char buf[MAXPATHLEN], buf2[MAXPATHLEN], *p = c;
270    
271 maya 1.11 memset(buf, 0, sizeof(buf));
272    
273 maya 1.10 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 yutakakn 1.1 extern "C" {
306     void LogStart()
307     {
308 yutakakn 1.2 LONG Option;
309    
310     if ((FileLog) || (BinLog)) return;
311 yutakakn 1.1
312 yutakakn 1.2 if (! LoadTTFILE()) return;
313     if (! NewFileVar(&LogVar))
314     {
315     FreeTTFILE();
316     return;
317     }
318     LogVar->OpId = OpLog;
319 yutakakn 1.1
320 yutakakn 1.2 if (strlen(&(LogVar->FullName[LogVar->DirLen]))==0)
321     {
322 maya 1.4 // LOWORD
323     // 0x0001 = Binary
324     // HIWORD
325     // 0x0001 = Append
326 yutakakn 1.2 // 0x1000 = plain text (2005.2.20 yutaka)
327 maya 1.4 // 0x2000 = timestamp (2006.7.23 maya)
328 yutakakn 1.3 // teraterm.ini?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スf?スt?スH?ス?ス?スg?スI?スv?スV?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スB(2005.5.7 yutaka)
329 maya 1.4 Option = MAKELONG(ts.TransBin,ts.Append |
330     (0x1000 * ts.LogTypePlainText) |
331     (0x2000 * ts.LogTimestamp));
332 maya 1.6
333     // ?ス?ス?スO?ス?ス?スf?スt?スH?ス?ス?スg?スt?ス@?スC?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス (2006.8.28 maya)
334     strncat(LogVar->FullName, ts.LogDefaultName, sizeof(LogVar->FullName));
335     ParseStrftimeFileName(LogVar->FullName);
336    
337 maya 1.10 // &h ?ス?ス?スz?スX?スg?ス?ス?ス?ス?スu?ス?ス (2007.5.14)
338     ConvertLogname(LogVar->FullName);
339    
340 yutakakn 1.2 if (! (*GetTransFname)(LogVar, ts.FileDir, GTF_LOG, &Option))
341     {
342     FreeFileVar(&LogVar);
343     FreeTTFILE();
344     return;
345     }
346     ts.TransBin = LOWORD(Option);
347     ts.Append = HIWORD(Option);
348    
349     if (ts.Append & 0x1000) {
350     ts.LogTypePlainText = 1;
351     } else {
352     ts.LogTypePlainText = 0;
353     }
354 maya 1.4
355     if (ts.Append & 0x2000) {
356     ts.LogTimestamp = 1;
357     }
358     else {
359     ts.LogTimestamp = 0;
360     }
361    
362 yutakakn 1.2 ts.Append &= 0x1; // 1bit?ス?ス?ス}?スX?スN?ス?ス?ス?ス
363 yutakakn 1.1
364 yutakakn 1.2 }
365 maya 1.10 else {
366     // &h ?ス?ス?スz?スX?スg?ス?ス?ス?ス?スu?ス?ス (2007.5.14)
367     ConvertLogname(LogVar->FullName);
368 yutakakn 1.2 (*SetFileVar)(LogVar);
369 maya 1.10 }
370 yutakakn 1.1
371 yutakakn 1.2 if (ts.TransBin > 0)
372     {
373     BinLog = TRUE;
374     FileLog = FALSE;
375     if (! CreateBinBuf())
376     {
377     FileTransEnd(OpLog);
378     return;
379     }
380     }
381     else {
382     BinLog = FALSE;
383     FileLog = TRUE;
384     if (! CreateLogBuf())
385     {
386     FileTransEnd(OpLog);
387     return;
388     }
389     }
390     cv.LStart = cv.LogPtr;
391     cv.LCount = 0;
392 yutakakn 1.1
393 yutakakn 1.2 HelpId = HlpFileLog;
394 yutakapon 1.12 /* 2007.05.24 Gentaro */
395     eLineEnd = Line_LineHead;
396    
397 yutakakn 1.2 if (ts.Append > 0)
398     {
399     LogVar->FileHandle = _lopen(LogVar->FullName,OF_WRITE);
400 yutakapon 1.12 if (LogVar->FileHandle>0){
401 yutakakn 1.2 _llseek(LogVar->FileHandle,0,2);
402 yutakapon 1.12 /* 2007.05.24 Gentaro
403     If log file already exists,
404     a newline is inserted before the first timestamp.
405     */
406     eLineEnd = Line_FileHead;
407     }
408 yutakakn 1.2 else
409     LogVar->FileHandle = _lcreat(LogVar->FullName,0);
410     }
411     else
412     LogVar->FileHandle = _lcreat(LogVar->FullName,0);
413     LogVar->FileOpen = (LogVar->FileHandle>0);
414     if (! LogVar->FileOpen)
415     {
416     FileTransEnd(OpLog);
417     return;
418     }
419     LogVar->ByteCount = 0;
420 yutakakn 1.1
421 yutakakn 1.2 if (! OpenFTDlg(LogVar))
422     FileTransEnd(OpLog);
423 yutakakn 1.1 }
424     }
425    
426     void LogPut1(BYTE b)
427     {
428     LogLast = b;
429     cv.LogBuf[cv.LogPtr] = b;
430     cv.LogPtr++;
431     if (cv.LogPtr>=InBuffSize)
432     cv.LogPtr = cv.LogPtr-InBuffSize;
433    
434     if (FileLog)
435     {
436     if (cv.LCount>=InBuffSize)
437     {
438     cv.LCount = InBuffSize;
439     cv.LStart = cv.LogPtr;
440     }
441     else cv.LCount++;
442     }
443     else
444     cv.LCount = 0;
445    
446     if (DDELog)
447     {
448     if (cv.DCount>=InBuffSize)
449     {
450     cv.DCount = InBuffSize;
451     cv.DStart = cv.LogPtr;
452     }
453     else cv.DCount++;
454     }
455 yutakapon 1.7 else {
456 yutakakn 1.1 cv.DCount = 0;
457 yutakapon 1.7 // ?ス?ス?スO?ス?ス?ス?ス?ス?ス?ス?ス?ス}?スN?ス?ス?ス?ス?スX?スg?ス[?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スC?ス?ス?スB
458     // ?ス?ス?スO?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スx?ス}?スN?ス?ス?ス?ス?ス~?ス?ス?ス?ス?ス?ス?スA?スo?スb?スt?ス@?ス?ス?スC?ス?ス?スf?スb?スN?スX?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スA
459     // ?ス?ス?スx?ス}?スN?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スf?ス[?ス^?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スB
460     // ?ス}?スN?ス?ス?ス?ス?ス?ス?ス~?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スC?ス?ス?スf?スb?スN?スX?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スB
461     // (2006.12.26 yutaka)
462     cv.DStart = cv.LogPtr;
463     }
464 yutakakn 1.1 }
465    
466     void Log1Byte(BYTE b)
467     {
468     if (b==0x0d)
469     {
470     LogLast = b;
471     return;
472     }
473     if ((b==0x0a) && (LogLast==0x0d))
474     LogPut1(0x0d);
475     LogPut1(b);
476     }
477    
478     static BOOL Get1(PCHAR Buf, int *Start, int *Count, PBYTE b)
479     {
480     if (*Count<=0) return FALSE;
481     *b = Buf[*Start];
482     (*Start)++;
483     if (*Start>=InBuffSize)
484     *Start = *Start-InBuffSize;
485     (*Count)--;
486     return TRUE;
487     }
488    
489    
490    
491     static CRITICAL_SECTION g_filelog_lock; /* ?ス?ス?スb?スN?スp?ス?ス?ス?ス */
492    
493     void logfile_lock_initialize(void)
494     {
495     InitializeCriticalSection(&g_filelog_lock);
496     }
497    
498     static inline void logfile_lock(void)
499     {
500     EnterCriticalSection(&g_filelog_lock);
501     }
502    
503     static inline void logfile_unlock(void)
504     {
505     LeaveCriticalSection(&g_filelog_lock);
506     }
507    
508     // ?スR?ス?ス?ス?ス?スg?ス?ス?ス?ス?スO?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
509     void CommentLogToFile(char *buf, int size)
510     {
511     DWORD wrote;
512    
513     if (LogVar == NULL || !LogVar->FileOpen) {
514 maya 1.8 #ifdef I18N
515     char uimsg[MAX_UIMSG];
516     strcpy(uimsg, "ERROR");
517     get_lang_msg("MSG_ERROR", uimsg, ts.UILanguageFile);
518     strcpy(ts.UIMsg, "It is not opened by the log file yet.");
519     get_lang_msg("MSG_COMMENT_LOG_OPEN_ERROR", ts.UIMsg, ts.UILanguageFile);
520     ::MessageBox(NULL, ts.UIMsg, uimsg, MB_OK|MB_ICONEXCLAMATION);
521     #else
522 yutakakn 1.1 ::MessageBox(NULL, "It is not opened by the log file yet.", "ERROR", MB_OK|MB_ICONEXCLAMATION);
523 maya 1.8 #endif
524 yutakakn 1.1 return;
525     }
526    
527     logfile_lock();
528     WriteFile((HANDLE)LogVar->FileHandle, buf, size, &wrote, NULL);
529     WriteFile((HANDLE)LogVar->FileHandle, "\r\n", 2, &wrote, NULL); // ?ス?ス?スs
530 yutakapon 1.12 /* Set Line End Flag
531     2007.05.24 Gentaro
532     */
533     eLineEnd = Line_LineHead;
534 yutakakn 1.1 logfile_unlock();
535     }
536    
537     void LogToFile()
538     {
539     PCHAR Buf;
540     int Start, Count;
541     BYTE b;
542    
543     if (! LogVar->FileOpen) return;
544     if (FileLog)
545     {
546     Buf = cv.LogBuf;
547     Start = cv.LStart;
548     Count = cv.LCount;
549     }
550     else if (BinLog)
551     {
552     Buf = cv.BinBuf;
553     Start = cv.BStart;
554     Count = cv.BCount;
555     }
556     else
557     return;
558    
559     if (Buf==NULL) return;
560     if (Count==0) return;
561    
562     // ?ス?ス?スb?スN?ス?ス?ス?ス?ス?ス(2004.8.6 yutaka)
563     logfile_lock();
564    
565     while (Get1(Buf,&Start,&Count,&b))
566     {
567     if (((cv.FilePause & OpLog)==0) && (! cv.ProtoFlag))
568     {
569 maya 1.4 // ?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スo?ス?ス(2006.7.23 maya)
570 yutakakn 1.5 // ?ス?ス?スt?スt?スH?ス[?ス}?スb?スg?ス?ス?ス?ス?ス{?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スE?スW?ス?ス?ス?ス?ス?ス?スX?ス?ス?ス?ス (2006.7.23 yutaka)
571 yutakapon 1.12 /* 2007.05.24 Gentaro */
572     if ( ts.LogTimestamp && eLineEnd ) {
573 yutakakn 1.5 #if 0
574 maya 1.4 SYSTEMTIME LocalTime;
575     GetLocalTime(&LocalTime);
576     char strtime[27];
577    
578     // format time
579     sprintf(strtime, "[%04d/%02d/%02d %02d:%02d:%02d.%03d] ",
580     LocalTime.wYear, LocalTime.wMonth,LocalTime.wDay,
581     LocalTime.wHour, LocalTime.wMinute, LocalTime.wSecond,
582     LocalTime.wMilliseconds);
583 yutakakn 1.5 #else
584     time_t tick = time(NULL);
585     char *strtime = ctime(&tick);
586     #endif
587 yutakapon 1.12 /* 2007.05.24 Gentaro */
588     if( eLineEnd == Line_FileHead ){
589     _lwrite(LogVar->FileHandle,"\r\n",2);
590 maya 1.4 }
591 yutakakn 1.5 _lwrite(LogVar->FileHandle,"[",1);
592     // ?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スI?ス[?ス?ス \n ?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スB
593     _lwrite(LogVar->FileHandle, strtime, strlen(strtime) - 1);
594     _lwrite(LogVar->FileHandle,"] ",2);
595 maya 1.4 }
596 yutakapon 1.12
597     /* 2007.05.24 Gentaro */
598     if( b == 0x0a ){
599     eLineEnd = Line_LineHead; /* set endmark*/
600     }
601     else {
602     eLineEnd = Line_Other; /* clear endmark*/
603     }
604 maya 1.4
605 yutakakn 1.1 _lwrite(LogVar->FileHandle,(PCHAR)&b,1);
606     (LogVar->ByteCount)++;
607     }
608     }
609    
610     logfile_unlock();
611    
612     if (FileLog)
613     {
614     cv.LStart = Start;
615     cv.LCount = Count;
616     }
617     else {
618     cv.BStart = Start;
619     cv.BCount = Count;
620     }
621     if (((cv.FilePause & OpLog) !=0) || cv.ProtoFlag) return;
622     if (FLogDlg!=NULL)
623     FLogDlg->RefreshNum();
624     }
625    
626     BOOL CreateLogBuf()
627     {
628     if (cv.HLogBuf==NULL)
629     {
630     cv.HLogBuf = GlobalAlloc(GMEM_MOVEABLE,InBuffSize);
631     cv.LogBuf = NULL;
632     cv.LogPtr = 0;
633     cv.LStart = 0;
634     cv.LCount = 0;
635     cv.DStart = 0;
636     cv.DCount = 0;
637     }
638     return (cv.HLogBuf!=NULL);
639     }
640    
641     void FreeLogBuf()
642     {
643     if ((cv.HLogBuf==NULL) || FileLog || DDELog) return;
644     if (cv.LogBuf!=NULL) GlobalUnlock(cv.HLogBuf);
645     GlobalFree(cv.HLogBuf);
646     cv.HLogBuf = NULL;
647     cv.LogBuf = NULL;
648     cv.LogPtr = 0;
649     cv.LStart = 0;
650     cv.LCount = 0;
651     cv.DStart = 0;
652     cv.DCount = 0;
653     }
654    
655     BOOL CreateBinBuf()
656     {
657     if (cv.HBinBuf==NULL)
658     {
659     cv.HBinBuf = GlobalAlloc(GMEM_MOVEABLE,InBuffSize);
660     cv.BinBuf = NULL;
661     cv.BinPtr = 0;
662     cv.BStart = 0;
663     cv.BCount = 0;
664     }
665     return (cv.HBinBuf!=NULL);
666     }
667    
668     void FreeBinBuf()
669     {
670     if ((cv.HBinBuf==NULL) || BinLog) return;
671     if (cv.BinBuf!=NULL) GlobalUnlock(cv.HBinBuf);
672     GlobalFree(cv.HBinBuf);
673     cv.HBinBuf = NULL;
674     cv.BinBuf = NULL;
675     cv.BinPtr = 0;
676     cv.BStart = 0;
677     cv.BCount = 0;
678     }
679    
680     extern "C" {
681     void FileSendStart()
682     {
683     LONG Option;
684    
685     if (! cv.Ready || FSend) return;
686     if (cv.ProtoFlag)
687     {
688     FreeFileVar(&SendVar);
689     return;
690     }
691    
692     if (! LoadTTFILE()) return;
693     if (! NewFileVar(&SendVar))
694     {
695     FreeTTFILE();
696     return;
697     }
698     SendVar->OpId = OpSendFile;
699    
700     FSend = TRUE;
701    
702     if (strlen(&(SendVar->FullName[SendVar->DirLen]))==0)
703     {
704     Option = MAKELONG(ts.TransBin,0);
705 maya 1.6 SendVar->FullName[0] = 0;
706 yutakakn 1.1 if (! (*GetTransFname)(SendVar, ts.FileDir, GTF_SEND, &Option))
707 maya 1.8 {
708 yutakakn 1.1 FileTransEnd(OpSendFile);
709     return;
710     }
711     ts.TransBin = LOWORD(Option);
712     }
713     else
714     (*SetFileVar)(SendVar);
715    
716     SendVar->FileHandle = _lopen(SendVar->FullName,OF_READ);
717     SendVar->FileOpen = (SendVar->FileHandle>0);
718     if (! SendVar->FileOpen)
719     {
720     FileTransEnd(OpSendFile);
721     return;
722     }
723     SendVar->ByteCount = 0;
724    
725     TalkStatus = IdTalkFile;
726     FileRetrySend = FALSE;
727     FileRetryEcho = FALSE;
728     FileCRSend = FALSE;
729    
730     if (! OpenFTDlg(SendVar))
731     FileTransEnd(OpSendFile);
732     }
733     }
734    
735     void FileTransEnd(WORD OpId)
736     /* OpId = 0: close Log and FileSend
737     OpLog: close Log
738     OpSendFile: close FileSend */
739     {
740     if (((OpId==0) || (OpId==OpLog)) &&
741     (FileLog || BinLog))
742     {
743     FileLog = FALSE;
744     BinLog = FALSE;
745     if (FLogDlg!=NULL)
746     {
747     FLogDlg->DestroyWindow();
748     FLogDlg = NULL;
749     }
750     FreeFileVar(&LogVar);
751     FreeLogBuf();
752     FreeBinBuf();
753     FreeTTFILE();
754     }
755    
756     if (((OpId==0) || (OpId==OpSendFile)) &&
757     FSend)
758     {
759     FSend = FALSE;
760     TalkStatus = IdTalkKeyb;
761     if (SendDlg!=NULL)
762     {
763     SendDlg->DestroyWindow();
764     SendDlg = NULL;
765     }
766     FreeFileVar(&SendVar);
767     FreeTTFILE();
768     }
769    
770     EndDdeCmnd(0);
771     }
772    
773     // vtwin.cpp ?ス?ス?ス?ス?スR?ス[?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スAextern "C"?ス?ス?スt?ス?ス?ス?ス?スB(2004.11.3 yutaka)
774     extern "C" {
775     int FSOut1(BYTE b)
776     {
777     if (ts.TransBin > 0)
778     return CommBinaryOut(&cv,(PCHAR)&b,1);
779     else if ((b>=0x20) || (b==0x09) || (b==0x0A) || (b==0x0D))
780     return CommTextOut(&cv,(PCHAR)&b,1);
781     else
782     return 1;
783     }
784    
785     int FSEcho1(BYTE b)
786     {
787     if (ts.TransBin > 0)
788     return CommBinaryEcho(&cv,(PCHAR)&b,1);
789     else
790     return CommTextEcho(&cv,(PCHAR)&b,1);
791     }
792     }
793    
794     extern "C" {
795     void FileSend()
796     {
797     WORD c, fc;
798     LONG BCOld;
799    
800     if ((SendDlg==NULL) ||
801     ((cv.FilePause & OpSendFile) !=0)) return;
802    
803     BCOld = SendVar->ByteCount;
804    
805     if (FileRetrySend)
806     {
807     FileRetryEcho = (ts.LocalEcho>0);
808     c = FSOut1(FileByte);
809     FileRetrySend = (c==0);
810     if (FileRetrySend) return;
811     }
812    
813     if (FileRetryEcho)
814     {
815     c = FSEcho1(FileByte);
816     FileRetryEcho = (c==0);
817     if (FileRetryEcho) return;
818     }
819    
820     do {
821     fc = _lread(SendVar->FileHandle,&FileByte,1);
822     SendVar->ByteCount = SendVar->ByteCount + fc;
823    
824     if (FileCRSend && (fc==1) && (FileByte==0x0A))
825     {
826     fc = _lread(SendVar->FileHandle,&FileByte,1);
827     SendVar->ByteCount = SendVar->ByteCount + fc;
828     }
829    
830     if (fc!=0)
831     {
832     c = FSOut1(FileByte);
833     FileCRSend = (ts.TransBin==0) && (FileByte==0x0D);
834     FileRetrySend = (c==0);
835     if (FileRetrySend)
836     {
837     if (SendVar->ByteCount != BCOld)
838     SendDlg->RefreshNum();
839     return;
840     }
841     if (ts.LocalEcho>0)
842     {
843     c = FSEcho1(FileByte);
844     FileRetryEcho = (c==0);
845     if (FileRetryEcho) return;
846     }
847     }
848     if ((fc==0) || (SendVar->ByteCount % 100 == 0))
849     {
850     SendDlg->RefreshNum();
851     BCOld = SendVar->ByteCount;
852     if (fc!=0) return;
853     }
854     } while (fc!=0);
855    
856     FileTransEnd(OpSendFile);
857     }
858     }
859    
860     extern "C" {
861     void FLogChangeButton(BOOL Pause)
862     {
863     if (FLogDlg!=NULL)
864     FLogDlg->ChangeButton(Pause);
865     }
866     }
867    
868     extern "C" {
869     void FLogRefreshNum()
870     {
871     if (FLogDlg!=NULL)
872     FLogDlg->RefreshNum();
873     }
874     }
875    
876     BOOL OpenProtoDlg(PFileVar fv, int IdProto, int Mode, WORD Opt1, WORD Opt2)
877     {
878     int vsize;
879     PProtoDlg pd;
880 maya 1.8 #ifdef I18N
881     HWND Hpd;
882     #endif
883 yutakakn 1.1
884     ProtoId = IdProto;
885    
886     switch (ProtoId) {
887     case PROTO_KMT:
888     vsize = sizeof(TKmtVar);
889     break;
890     case PROTO_XM:
891     vsize = sizeof(TXVar);
892     break;
893     case PROTO_ZM:
894     vsize = sizeof(TZVar);
895     break;
896     case PROTO_BP:
897     vsize = sizeof(TBPVar);
898     break;
899     case PROTO_QV:
900     vsize = sizeof(TQVVar);
901     break;
902     }
903     ProtoVar = (PCHAR)malloc(vsize);
904     if (ProtoVar==NULL) return FALSE;
905    
906     switch (ProtoId) {
907     case PROTO_KMT:
908     ((PKmtVar)ProtoVar)->KmtMode = Mode;
909     break;
910     case PROTO_XM:
911     ((PXVar)ProtoVar)->XMode = Mode;
912     ((PXVar)ProtoVar)->XOpt = Opt1;
913     ((PXVar)ProtoVar)->TextFlag = 1 - (Opt2 & 1);
914     break;
915     case PROTO_ZM:
916     ((PZVar)ProtoVar)->BinFlag = (Opt1 & 1) != 0;
917     ((PZVar)ProtoVar)->ZMode = Mode;
918     break;
919     case PROTO_BP:
920     ((PBPVar)ProtoVar)->BPMode = Mode;
921     break;
922     case PROTO_QV:
923     ((PQVVar)ProtoVar)->QVMode = Mode;
924     break;
925     }
926    
927     pd = new CProtoDlg();
928     if (pd==NULL)
929     {
930     free(ProtoVar);
931     ProtoVar = NULL;
932     return FALSE;
933     }
934 maya 1.8 #ifdef I18N
935     pd->Create(fv,&ts);
936     #else
937 yutakakn 1.1 pd->Create(fv);
938 maya 1.8 #endif
939    
940     #ifdef I18N
941     Hpd=pd->GetSafeHwnd();
942    
943     GetDlgItemText(Hpd, IDC_PROT_FILENAME, ts.UIMsg, sizeof(ts.UIMsg));
944     get_lang_msg("DLG_PROT_FIELNAME", ts.UIMsg, ts.UILanguageFile);
945     SetDlgItemText(Hpd, IDC_PROT_FILENAME, ts.UIMsg);
946     GetDlgItemText(Hpd, IDC_PROT_PROT, ts.UIMsg, sizeof(ts.UIMsg));
947     get_lang_msg("DLG_PROT_PROTO", ts.UIMsg, ts.UILanguageFile);
948     SetDlgItemText(Hpd, IDC_PROT_PROT, ts.UIMsg);
949     GetDlgItemText(Hpd, IDC_PROT_PACKET, ts.UIMsg, sizeof(ts.UIMsg));
950     get_lang_msg("DLG_PROT_PACKET", ts.UIMsg, ts.UILanguageFile);
951     SetDlgItemText(Hpd, IDC_PROT_PACKET, ts.UIMsg);
952     GetDlgItemText(Hpd, IDC_PROT_TRANS, ts.UIMsg, sizeof(ts.UIMsg));
953     get_lang_msg("DLG_PROT_TRANS", ts.UIMsg, ts.UILanguageFile);
954     SetDlgItemText(Hpd, IDC_PROT_TRANS, ts.UIMsg);
955     GetDlgItemText(Hpd, IDCANCEL, ts.UIMsg, sizeof(ts.UIMsg));
956     get_lang_msg("BTN_CANCEL", ts.UIMsg, ts.UILanguageFile);
957     SetDlgItemText(Hpd, IDCANCEL, ts.UIMsg);
958     #endif
959 yutakakn 1.1
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 maya 1.8 break;
1088 yutakakn 1.1 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 maya 1.8 break;
1105 yutakakn 1.1 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 maya 1.6 FileVar->FullName[0] = 0;
1220 yutakakn 1.1 if (! (*GetTransFname)(FileVar, ts.FileDir, GTF_BP, &Option))
1221 maya 1.8 {
1222 yutakakn 1.1 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 yutakakn 1.2
1277     /*
1278 yutakakn 1.3 * $Log: filesys.cpp,v $
1279 yutakapon 1.12 * Revision 1.11 2007/05/14 14:07:14 maya
1280     * ?スo?スb?スt?ス@?ス?ス?スN?ス?ス?スA?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スC?ス?ス?ス?ス?ス?ス?スB
1281     *
1282 maya 1.11 * Revision 1.10 2007/05/14 13:29:58 maya
1283     * ?ス?ス?スO?スt?ス@?スC?ス?ス?ス?ス?ス?ス?ス?ス &h ?ス?ス?スA?ス?ス?ス?ス?ス?ス?ス?ス?スz?スX?スg?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス@?ス\?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スB
1284     *
1285 maya 1.10 * Revision 1.9 2007/01/21 16:18:35 maya
1286     * ?ス\?ス?ス?ス?ス?スb?スZ?ス[?スW?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
1287     *
1288 maya 1.9 * Revision 1.8 2007/01/04 15:11:44 maya
1289     * ?ス\?ス?ス?ス?ス?スb?スZ?ス[?スW?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
1290     *
1291 maya 1.8 * Revision 1.7 2006/12/25 16:13:54 yutakapon
1292     * ?ス?ス?スO?ス?ス?ス?ス?ス?ス?ス?ス?ス}?スN?ス?ス?ス?ス?スX?スg?ス[?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スC?ス?ス?スB
1293     * ?ス?ス?スO?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スx?ス}?スN?ス?ス?ス?ス?ス~?ス?ス?ス?ス?ス?ス?スA?スo?スb?スt?ス@?ス?ス?スC?ス?ス?スf?スb?スN?スX?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スA
1294     * ?ス?ス?スx?ス}?スN?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スf?ス[?ス^?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スB
1295     * ?ス}?スN?ス?ス?ス?ス?ス?ス?ス~?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スC?ス?ス?スf?スb?スN?スX?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スB
1296     *
1297 yutakapon 1.7 * Revision 1.6 2006/08/28 12:27:16 maya
1298     * ?スf?スt?スH?ス?ス?スg?ス?ス?ス?ス?スO?スt?ス@?スC?ス?ス?ス?ス?ス?ス?スw?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スB
1299     * ?スG?スf?スB?スb?スg?スR?ス?ス?スg?ス?ス?ス[?ス?ス?ス?ス "Additional settings" ?ス_?スC?スA?ス?ス?スO?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スB
1300     * teraterm.ini ?スt?ス@?スC?ス?ス?ス?ス LogDefaultName ?スG?ス?ス?スg?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スB
1301     * ?スt?ス@?スC?ス?ス?ス?ス?ス?ス strftime ?ス?ス?スt?スH?ス[?ス}?スb?スg?ス?ス?スg?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スB
1302     *
1303 maya 1.6 * Revision 1.5 2006/07/23 14:12:26 yutakakn
1304     * ?ス?ス?スO?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スt?スt?スH?ス[?ス}?スb?スg?ス?ス?ス?ス?スE?スW?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スX?ス?ス?ス?ス?スB
1305     *
1306 yutakakn 1.5 * Revision 1.4 2006/07/22 16:15:54 maya
1307     * ?ス?ス?スO?スL?ス^?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス@?ス\?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スB
1308     *
1309 maya 1.4 * Revision 1.3 2005/05/07 09:49:24 yutakakn
1310     * teraterm.ini?ス?ス LogTypePlainText ?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スB
1311     *
1312 yutakakn 1.3 * Revision 1.2 2005/02/20 14:51:29 yutakakn
1313     * ?ス?ス?スO?スt?ス@?スC?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス"plain text"?ス?ス?ス?ス?ス?ス?スB?ス?ス?ス?ス?スI?スv?スV?ス?ス?ス?ス?ス?ス?スL?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スA?ス?ス?スO?スt?ス@?スC?ス?ス?ス?ス
1314     * ASCII?ス?ス?ス\?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スB
1315     *
1316     * ?ス?ス?ス?ス?スA?ス?ス?ス?ス?ス?ス?ス?ス?スL?ス?ス?ス?ス?スN?ス^?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スB
1317     * ?ス@?スEBS
1318     * ?ス@?スEASCII(0x00-0x1f)?ス?ス?ス?ス?ス?ス?ス?ス?ス\?ス?ス?ス?ス?ス?ス?ス?ス
1319     *
1320     * ?ス?ス?ス?ス?ス?ス?スA?ス?ス?スO?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スO?ス?ス?ス?ス?ス?ス?ス?ス?スB
1321     * ?ス@?スEHT
1322     * ?ス@?スECR
1323     * ?ス@?スELF
1324     *
1325 yutakakn 1.2 */

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