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

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