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

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