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.10 - (hide annotations) (download) (as text)
Mon May 14 13:29:58 2007 UTC (16 years, 11 months ago) by maya
Branch: MAIN
Changes since 1.9: +47 -1 lines
File MIME type: text/x-c++src
ログファイル名中の &h を、接続中のホスト名に変換する機能を追加した。

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

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