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.14 - (hide 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 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 maya 1.13 char *logdir;
310 yutakakn 1.2
311     if ((FileLog) || (BinLog)) return;
312 yutakakn 1.1
313 yutakakn 1.2 if (! LoadTTFILE()) return;
314     if (! NewFileVar(&LogVar))
315     {
316     FreeTTFILE();
317     return;
318     }
319     LogVar->OpId = OpLog;
320 yutakakn 1.1
321 maya 1.13 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 yutakakn 1.2 if (strlen(&(LogVar->FullName[LogVar->DirLen]))==0)
332     {
333 maya 1.4 // LOWORD
334     // 0x0001 = Binary
335     // HIWORD
336     // 0x0001 = Append
337 yutakakn 1.2 // 0x1000 = plain text (2005.2.20 yutaka)
338 maya 1.4 // 0x2000 = timestamp (2006.7.23 maya)
339 yutakakn 1.3 // teraterm.ini?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スf?スt?スH?ス?ス?スg?スI?スv?スV?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スB(2005.5.7 yutaka)
340 maya 1.4 Option = MAKELONG(ts.TransBin,ts.Append |
341     (0x1000 * ts.LogTypePlainText) |
342     (0x2000 * ts.LogTimestamp));
343 maya 1.6
344     // ?ス?ス?スO?ス?ス?スf?スt?スH?ス?ス?スg?スt?ス@?スC?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス (2006.8.28 maya)
345 maya 1.14 strncat(LogVar->FullName, ts.LogDefaultName, sizeof(LogVar->FullName)-1);
346     LogVar->FullName[sizeof(LogVar->FullName)-1] = '\0';
347 maya 1.13
348 maya 1.6 ParseStrftimeFileName(LogVar->FullName);
349    
350 maya 1.10 // &h ?ス?ス?スz?スX?スg?ス?ス?ス?ス?スu?ス?ス (2007.5.14)
351     ConvertLogname(LogVar->FullName);
352    
353 maya 1.13 if (! (*GetTransFname)(LogVar, logdir, GTF_LOG, &Option))
354 yutakakn 1.2 {
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 maya 1.4
368     if (ts.Append & 0x2000) {
369     ts.LogTimestamp = 1;
370     }
371     else {
372     ts.LogTimestamp = 0;
373     }
374    
375 yutakakn 1.2 ts.Append &= 0x1; // 1bit?ス?ス?ス}?スX?スN?ス?ス?ス?ス
376 yutakakn 1.1
377 yutakakn 1.2 }
378 maya 1.10 else {
379 maya 1.13 // 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 maya 1.14 FileName[sizeof(FileName)-1] = '\0';
386 maya 1.13 ConvFName(logdir,FileName,"",LogVar->FullName);
387    
388     ParseStrftimeFileName(LogVar->FullName);
389    
390 maya 1.10 // &h ?ス?ス?スz?スX?スg?ス?ス?ス?ス?スu?ス?ス (2007.5.14)
391     ConvertLogname(LogVar->FullName);
392 yutakakn 1.2 (*SetFileVar)(LogVar);
393 maya 1.10 }
394 yutakakn 1.1
395 yutakakn 1.2 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 yutakakn 1.1
417 yutakakn 1.2 HelpId = HlpFileLog;
418 yutakapon 1.12 /* 2007.05.24 Gentaro */
419     eLineEnd = Line_LineHead;
420    
421 yutakakn 1.2 if (ts.Append > 0)
422     {
423     LogVar->FileHandle = _lopen(LogVar->FullName,OF_WRITE);
424 yutakapon 1.12 if (LogVar->FileHandle>0){
425 yutakakn 1.2 _llseek(LogVar->FileHandle,0,2);
426 yutakapon 1.12 /* 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 yutakakn 1.2 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 yutakakn 1.1
445 yutakakn 1.2 if (! OpenFTDlg(LogVar))
446     FileTransEnd(OpLog);
447 yutakakn 1.1 }
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 yutakapon 1.7 else {
480 yutakakn 1.1 cv.DCount = 0;
481 yutakapon 1.7 // ?ス?ス?ス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 yutakakn 1.1 }
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 maya 1.8 #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 yutakakn 1.1 ::MessageBox(NULL, "It is not opened by the log file yet.", "ERROR", MB_OK|MB_ICONEXCLAMATION);
547 maya 1.8 #endif
548 yutakakn 1.1 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 yutakapon 1.12 /* Set Line End Flag
555     2007.05.24 Gentaro
556     */
557     eLineEnd = Line_LineHead;
558 yutakakn 1.1 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 maya 1.4 // ?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スo?ス?ス(2006.7.23 maya)
594 yutakakn 1.5 // ?ス?ス?スt?スt?スH?ス[?ス}?スb?スg?ス?ス?ス?ス?ス{?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スE?スW?ス?ス?ス?ス?ス?ス?スX?ス?ス?ス?ス (2006.7.23 yutaka)
595 yutakapon 1.12 /* 2007.05.24 Gentaro */
596     if ( ts.LogTimestamp && eLineEnd ) {
597 yutakakn 1.5 #if 0
598 maya 1.4 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 yutakakn 1.5 #else
608     time_t tick = time(NULL);
609     char *strtime = ctime(&tick);
610     #endif
611 yutakapon 1.12 /* 2007.05.24 Gentaro */
612     if( eLineEnd == Line_FileHead ){
613     _lwrite(LogVar->FileHandle,"\r\n",2);
614 maya 1.4 }
615 yutakakn 1.5 _lwrite(LogVar->FileHandle,"[",1);
616     // ?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スI?ス[?ス?ス \n ?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スB
617     _lwrite(LogVar->FileHandle, strtime, strlen(strtime) - 1);
618     _lwrite(LogVar->FileHandle,"] ",2);
619 maya 1.4 }
620 yutakapon 1.12
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 maya 1.4
629 yutakakn 1.1 _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 maya 1.6 SendVar->FullName[0] = 0;
730 yutakakn 1.1 if (! (*GetTransFname)(SendVar, ts.FileDir, GTF_SEND, &Option))
731 maya 1.8 {
732 yutakakn 1.1 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 maya 1.8 #ifdef I18N
905     HWND Hpd;
906     #endif
907 yutakakn 1.1
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 maya 1.8 #ifdef I18N
959     pd->Create(fv,&ts);
960     #else
961 yutakakn 1.1 pd->Create(fv);
962 maya 1.8 #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 yutakakn 1.1
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 maya 1.8 break;
1112 yutakakn 1.1 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 maya 1.8 break;
1129 yutakakn 1.1 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 maya 1.6 FileVar->FullName[0] = 0;
1244 yutakakn 1.1 if (! (*GetTransFname)(FileVar, ts.FileDir, GTF_BP, &Option))
1245 maya 1.8 {
1246 yutakakn 1.1 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 yutakakn 1.2
1301     /*
1302 yutakakn 1.3 * $Log: filesys.cpp,v $
1303 maya 1.14 * Revision 1.13 2007/05/30 16:04:27 maya
1304     * ?スW?ス?ス?ス?ス?ス?ス?スO?ス?ス?ス?ス?ス?ス?ス?ス?スw?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スB
1305     *
1306 maya 1.13 * 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 yutakapon 1.12 * Revision 1.11 2007/05/14 14:07:14 maya
1310     * ?スo?スb?スt?ス@?ス?ス?スN?ス?ス?スA?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スC?ス?ス?ス?ス?ス?ス?スB
1311     *
1312 maya 1.11 * Revision 1.10 2007/05/14 13:29:58 maya
1313     * ?ス?ス?スO?スt?ス@?スC?ス?ス?ス?ス?ス?ス?ス?ス &h ?ス?ス?スA?ス?ス?ス?ス?ス?ス?ス?ス?スz?スX?スg?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス@?ス\?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スB
1314     *
1315 maya 1.10 * Revision 1.9 2007/01/21 16:18:35 maya
1316     * ?ス\?ス?ス?ス?ス?スb?スZ?ス[?スW?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
1317     *
1318 maya 1.9 * Revision 1.8 2007/01/04 15:11:44 maya
1319     * ?ス\?ス?ス?ス?ス?スb?スZ?ス[?スW?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
1320     *
1321 maya 1.8 * 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 yutakapon 1.7 * 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 maya 1.6 * Revision 1.5 2006/07/23 14:12:26 yutakakn
1334     * ?ス?ス?スO?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スt?スt?スH?ス[?ス}?スb?スg?ス?ス?ス?ス?スE?スW?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スX?ス?ス?ス?ス?スB
1335     *
1336 yutakakn 1.5 * Revision 1.4 2006/07/22 16:15:54 maya
1337     * ?ス?ス?スO?スL?ス^?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス@?ス\?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スB
1338     *
1339 maya 1.4 * Revision 1.3 2005/05/07 09:49:24 yutakakn
1340     * teraterm.ini?ス?ス LogTypePlainText ?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スB
1341     *
1342 yutakakn 1.3 * 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 yutakakn 1.2 */

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