Revision: 9084 https://osdn.net/projects/ttssh2/scm/svn/commits/9084 Author: zmatsuo Date: 2020-12-20 21:12:21 +0900 (Sun, 20 Dec 2020) Log Message: ----------- zmodem の ZMODEMStart() API を使用しないようにした - ZMODEMStartReceive(), ZMODEMStartSend() に統一 Modified Paths: -------------- trunk/teraterm/teraterm/filesys.h trunk/teraterm/teraterm/filesys_proto.cpp trunk/teraterm/teraterm/ttdde.c trunk/teraterm/teraterm/vtterm.c trunk/teraterm/teraterm/vtwin.cpp trunk/teraterm/ttpfile/zmodem.c -------------- next part -------------- Modified: trunk/teraterm/teraterm/filesys.h =================================================================== --- trunk/teraterm/teraterm/filesys.h 2020-12-20 12:12:10 UTC (rev 9083) +++ trunk/teraterm/teraterm/filesys.h 2020-12-20 12:12:21 UTC (rev 9084) @@ -54,9 +54,8 @@ BOOL XMODEMStartSend(const char *fiename, WORD ParamXmodemOpt); BOOL YMODEMStartReceive(BOOL macro); BOOL YMODEMStartSend(const char *fiename); -void ZMODEMStart(int mode); -BOOL ZMODEMStartReceive(void); -BOOL ZMODEMStartSend(const char *fiename, WORD ParamBinaryFlag); +BOOL ZMODEMStartReceive(BOOL macro, BOOL autostart); +BOOL ZMODEMStartSend(const char *fiename, WORD ParamBinaryFlag, BOOL autostart); void BPStart(int mode); BOOL BPSendStart(const char *filename); BOOL BPStartReceive(void); Modified: trunk/teraterm/teraterm/filesys_proto.cpp =================================================================== --- trunk/teraterm/teraterm/filesys_proto.cpp 2020-12-20 12:12:10 UTC (rev 9083) +++ trunk/teraterm/teraterm/filesys_proto.cpp 2020-12-20 12:12:21 UTC (rev 9084) @@ -1246,6 +1246,11 @@ return TRUE; } +/** + * YMODEM\x8E\xF3\x90M + * + * @param[in] macro TURE\x82̂Ƃ\xAB\x83}\x83N\x83\x8D\x82\xA9\x82\xE7\x8CĂꂽ + */ BOOL YMODEMStartReceive(BOOL macro) { if (FileVar != NULL) { @@ -1287,6 +1292,11 @@ return TRUE; } +/** + * YMODEM\x91\x97\x90M + * + * @param[in] filename \x91\x97\x90M\x83t\x83@\x83C\x83\x8B\x96\xBC(NULL\x82̂Ƃ\xAB\x81A\x83_\x83C\x83A\x83\x8D\x83O\x82őI\x91\xF0\x82\xB7\x82\xE9) + */ BOOL YMODEMStartSend(const char *filename) { if (FileVar != NULL) { @@ -1322,9 +1332,6 @@ } else { fv->FileNames = MakeStrArrayFromStr(filename); - FileVar->DirLen = 0; - strncpy_s(FileVar->FullName, sizeof(FileVar->FullName),filename, _TRUNCATE); - FileVar->NumFname = 1; FileVar->NoMsg = TRUE; } @@ -1339,61 +1346,60 @@ return TRUE; } -void ZMODEMStart(int mode) +/** + * ZMODEM\x8E\xF3\x90M + * + * @param[in] macro TURE\x82̂Ƃ\xAB\x83}\x83N\x83\x8D\x82\xA9\x82\xE7\x8CĂꂽ + * @param[in] autostart TURE\x82̂Ƃ\xAB\x8E\xA9\x93\xAE\x83X\x83^\x81[\x83g + */ +BOOL ZMODEMStartReceive(BOOL macro, BOOL autostart) { - WORD Opt = 0; // TODO \x8Eg\x82\xC1\x82Ă\xA2\x82Ȃ\xA2 - char uimsg[MAX_UIMSG]; - const char *UILanguageFile = ts.UILanguageFile; + if (FileVar != NULL) { + return FALSE; + } + if (!NewFileVar_(&FileVar)) { + return FALSE; + } + if (macro) { + FileVar->NoMsg = TRUE; + } + int mode = autostart ? IdZAutoR : IdZReceive; + if (! ProtoStart()) - return; + return FALSE; TFileVarProto *fv = FileVar; - if (mode == IdZSend || mode == IdZAutoS) - { - strncpy_s(fv->DlgCaption, sizeof(fv->DlgCaption),"Tera Term: ", _TRUNCATE); - get_lang_msg("FILEDLG_TRANS_TITLE_ZSEND", uimsg, sizeof(uimsg), TitZSend, UILanguageFile); - strncat_s(fv->DlgCaption, sizeof(fv->DlgCaption), uimsg, _TRUNCATE); + /* IdZReceive or IdZAutoR */ + FileVar->OpId = OpZRcv; - Opt = ts.XmodemBin; - FileVar->OpId = OpZSend; - if (strlen(&(FileVar->FullName[FileVar->DirLen]))==0) - { - char **filenames = _GetMultiFname(fv->HMainWin, GMF_Z, fv->DlgCaption, &Opt); - if (filenames == NUL) { - if (mode == IdZAutoS) { - CommRawOut(&cv, "\030\030\030\030\030\030\030\030\b\b\b\b\b\b\b\b\b\b", 18); - } - ProtoEnd(); - return; - } - fv->FileNames = filenames; - GetNextFname(fv); - ts.XmodemBin = Opt; - } - else - _SetFileVar(FileVar); - } - else { - /* IdZReceive or IdZAutoR */ - FileVar->OpId = OpZRcv; + char uimsg[MAX_UIMSG]; + const char *UILanguageFile = ts.UILanguageFile; + strncpy_s(fv->DlgCaption, sizeof(fv->DlgCaption),"Tera Term: ", _TRUNCATE); + get_lang_msg("FILEDLG_TRANS_TITLE_ZRCV", uimsg, sizeof(uimsg), TitZRcv, UILanguageFile); + strncat_s(fv->DlgCaption, sizeof(fv->DlgCaption), uimsg, _TRUNCATE); - strncpy_s(fv->DlgCaption, sizeof(fv->DlgCaption),"Tera Term: ", _TRUNCATE); - get_lang_msg("FILEDLG_TRANS_TITLE_ZRCV", uimsg, sizeof(uimsg), TitZRcv, UILanguageFile); - strncat_s(fv->DlgCaption, sizeof(fv->DlgCaption), uimsg, _TRUNCATE); - } - TalkStatus = IdTalkQuiet; /* disable transmit delay (serial port) */ cv.DelayFlag = FALSE; + WORD Opt = 0; if (! OpenProtoDlg(FileVar,PROTO_ZM,mode,Opt,0)) ProtoEnd(); + + return TRUE; } -BOOL ZMODEMStartReceive(void) +/** + * ZMODEM\x91\x97\x90M + * + * @param[in] filename \x91\x97\x90M\x83t\x83@\x83C\x83\x8B\x96\xBC(NULL\x82̂Ƃ\xAB\x81A\x83_\x83C\x83A\x83\x8D\x83O\x82őI\x91\xF0\x82\xB7\x82\xE9) + * @param[in] ParamBinaryFlag binary mode + * @param[in] autostart TURE\x82̂Ƃ\xAB\x8E\xA9\x93\xAE\x83X\x83^\x81[\x83g + */ +BOOL ZMODEMStartSend(const char *filename, WORD ParamBinaryFlag, BOOL autostart) { if (FileVar != NULL) { return FALSE; @@ -1402,29 +1408,47 @@ return FALSE; } - FileVar->NoMsg = TRUE; - ZMODEMStart(IdZReceive); + int mode = autostart ? IdZAutoS : IdZSend; - return TRUE; -} + if (! ProtoStart()) + return FALSE; -BOOL ZMODEMStartSend(const char *fiename, WORD ParamBinaryFlag) -{ - if (FileVar != NULL) { - return FALSE; + TFileVarProto *fv = FileVar; + + char uimsg[MAX_UIMSG]; + const char *UILanguageFile = ts.UILanguageFile; + strncpy_s(fv->DlgCaption, sizeof(fv->DlgCaption),"Tera Term: ", _TRUNCATE); + get_lang_msg("FILEDLG_TRANS_TITLE_ZSEND", uimsg, sizeof(uimsg), TitZSend, UILanguageFile); + strncat_s(fv->DlgCaption, sizeof(fv->DlgCaption), uimsg, _TRUNCATE); + + WORD Opt = ts.XmodemBin; + FileVar->OpId = OpZSend; + if (filename == NULL) { + char **filenames = _GetMultiFname(fv->HMainWin, GMF_Z, fv->DlgCaption, &Opt); + if (filenames == NULL) { + if (mode == IdZAutoS) { + CommRawOut(&cv, "\030\030\030\030\030\030\030\030\b\b\b\b\b\b\b\b\b\b", 18); + } + ProtoEnd(); + return FALSE; + } + fv->FileNames = filenames; + ts.XmodemBin = Opt; } - if (!NewFileVar_(&FileVar)) { - return FALSE; + else { + fv->FileNames = MakeStrArrayFromStr(filename); + ts.XmodemBin = ParamBinaryFlag; + FileVar->NoMsg = TRUE; } - FileVar->DirLen = 0; - strncpy_s(FileVar->FullName, sizeof(FileVar->FullName),fiename, _TRUNCATE); - FileVar->NumFname = 1; - ts.XmodemBin = ParamBinaryFlag; - FileVar->NoMsg = TRUE; + TalkStatus = IdTalkQuiet; - ZMODEMStart(IdZSend); + /* disable transmit delay (serial port) */ + cv.DelayFlag = FALSE; + if (! OpenProtoDlg(FileVar,PROTO_ZM,mode,Opt,0)) + ProtoEnd(); + return TRUE; } Modified: trunk/teraterm/teraterm/ttdde.c =================================================================== --- trunk/teraterm/teraterm/ttdde.c 2020-12-20 12:12:10 UTC (rev 9083) +++ trunk/teraterm/teraterm/ttdde.c 2020-12-20 12:12:21 UTC (rev 9084) @@ -681,7 +681,7 @@ return DDE_FNOTPROCESSED; break; case CmdZmodemRecv: - if (ZMODEMStartReceive()) { + if (ZMODEMStartReceive(TRUE, FALSE)) { DdeCmnd = TRUE; } else @@ -688,7 +688,7 @@ return DDE_FNOTPROCESSED; break; case CmdZmodemSend: - if (ZMODEMStartSend(ParamFileName, ParamBinaryFlag)) { + if (ZMODEMStartSend(ParamFileName, ParamBinaryFlag, FALSE)) { DdeCmnd = TRUE; } else Modified: trunk/teraterm/teraterm/vtterm.c =================================================================== --- trunk/teraterm/teraterm/vtterm.c 2020-12-20 12:12:10 UTC (rev 9083) +++ trunk/teraterm/teraterm/vtterm.c 2020-12-20 12:12:21 UTC (rev 9084) @@ -5494,11 +5494,11 @@ if (state == 2) { if (b =='0') { // ZRQINIT /* Auto ZMODEM activation (Receive) */ - ZMODEMStart(IdZAutoR); + ZMODEMStartReceive(FALSE, TRUE); } else if (b == '1') { // ZRINIT /* Auto ZMODEM activation (Send) */ - ZMODEMStart(IdZAutoS); + ZMODEMStartSend(NULL, 0, TRUE); } } ParseMode = ModeFirst; Modified: trunk/teraterm/teraterm/vtwin.cpp =================================================================== --- trunk/teraterm/teraterm/vtwin.cpp 2020-12-20 12:12:10 UTC (rev 9083) +++ trunk/teraterm/teraterm/vtwin.cpp 2020-12-20 12:12:21 UTC (rev 9084) @@ -4357,13 +4357,13 @@ void CVTWindow::OnFileZRcv() { - ZMODEMStart(IdZReceive); + ZMODEMStartReceive(FALSE, FALSE); } void CVTWindow::OnFileZSend() { HelpId = HlpFileZmodemSend; - ZMODEMStart(IdZSend); + ZMODEMStartSend(NULL, 0, FALSE); } void CVTWindow::OnFileBPRcv() Modified: trunk/teraterm/ttpfile/zmodem.c =================================================================== --- trunk/teraterm/ttpfile/zmodem.c 2020-12-20 12:12:10 UTC (rev 9083) +++ trunk/teraterm/ttpfile/zmodem.c 2020-12-20 12:12:21 UTC (rev 9084) @@ -216,9 +216,9 @@ memset(sendbuf, 0, sizeof(sendbuf)); } -static char *hdrtype_name(int type) +static const char *hdrtype_name(int type) { - static char *s[] = { + static const char *s[] = { "ZRQINIT", "ZRINIT", "ZSINIT", @@ -247,7 +247,7 @@ return NULL; } -int ZRead1Byte(PFileVarProto fv, PZVar zv, PComVar cv, LPBYTE b) +static int ZRead1Byte(PFileVarProto fv, PZVar zv, PComVar cv, LPBYTE b) { char *s; @@ -274,7 +274,7 @@ return 1; } -int ZWrite(PFileVarProto fv, PZVar zv, PComVar cv, PCHAR B, int C) +static int ZWrite(PFileVarProto fv, PZVar zv, PComVar cv, PCHAR B, int C) { int i, j; char *s; @@ -299,7 +299,7 @@ return i; } -void ZPutHex(PZVar zv, int *i, BYTE b) +static void ZPutHex(PZVar zv, int *i, BYTE b) { if (b <= 0x9f) zv->PktOut[*i] = (b >> 4) + 0x30; @@ -315,7 +315,7 @@ (*i)++; } -void ZShHdr(PZVar zv, BYTE HdrType) +static void ZShHdr(PZVar zv, BYTE HdrType) { int i; @@ -355,7 +355,7 @@ #endif } -void ZPutBin(PZVar zv, int *i, BYTE b) +static void ZPutBin(PZVar zv, int *i, BYTE b) /* * lrzsz \x82ł\xCD ZDLE(CAN), DLE, XON, XOFF, @ \x82̒\xBC\x8C\xE3\x82\xCC CR, \x82\xA8\x82\xE6\x82т\xB1\x82\xEA\x82\xE7\x82\xCC * MSB \x82\xAA\x97\xA7\x82\xC1\x82\xBD\x95\xB6\x8E\x9A\x82\xAA\x83G\x83X\x83P\x81[\x83v\x91ΏۂƂȂ\xC1\x82Ă\xA2\x82\xE9\x81B @@ -406,7 +406,7 @@ (*i)++; } -void ZSbHdr(PZVar zv, BYTE HdrType) +static void ZSbHdr(PZVar zv, BYTE HdrType) { int i; @@ -429,7 +429,7 @@ add_sendbuf("%s: %s ", __FUNCTION__, hdrtype_name(HdrType)); } -void ZStoHdr(PZVar zv, LONG Pos) +static void ZStoHdr(PZVar zv, LONG Pos) { zv->TxHdr[ZP0] = LOBYTE(LOWORD(Pos)); zv->TxHdr[ZP1] = HIBYTE(LOWORD(Pos)); @@ -438,7 +438,7 @@ } -LONG ZRclHdr(PZVar zv) +static LONG ZRclHdr(PZVar zv) { LONG L; @@ -448,7 +448,7 @@ return ((L << 8) + (BYTE) (zv->RxHdr[ZP0])); } -void ZSendRInit(PFileVarProto fv, PZVar zv) +static void ZSendRInit(PFileVarProto fv, PZVar zv) { zv->Pos = 0; ZStoHdr(zv, 0); @@ -459,13 +459,13 @@ FTSetTimeOut(fv, zv->TOutInit); } -void ZSendRQInit(PFileVarProto fv, PZVar zv, PComVar cv) +static void ZSendRQInit(PFileVarProto fv, PZVar zv, PComVar cv) { ZStoHdr(zv, 0); ZShHdr(zv, ZRQINIT); } -void ZSendRPOS(PFileVarProto fv, PZVar zv) +static void ZSendRPOS(PFileVarProto fv, PZVar zv) { ZStoHdr(zv, zv->Pos); ZShHdr(zv, ZRPOS); @@ -472,7 +472,7 @@ FTSetTimeOut(fv, zv->TimeOut); } -void ZSendACK(PFileVarProto fv, PZVar zv) +static void ZSendACK(PFileVarProto fv, PZVar zv) { ZStoHdr(zv, 0); ZShHdr(zv, ZACK); @@ -479,13 +479,13 @@ FTSetTimeOut(fv, zv->TimeOut); } -void ZSendNAK(PZVar zv) +static void ZSendNAK(PZVar zv) { ZStoHdr(zv, 0); ZShHdr(zv, ZNAK); } -void ZSendEOF(PZVar zv) +static void ZSendEOF(PZVar zv) { ZStoHdr(zv, zv->Pos); ZShHdr(zv, ZEOF); @@ -492,13 +492,13 @@ zv->ZState = Z_SendEOF; } -void ZSendFIN(PZVar zv) +static void ZSendFIN(PZVar zv) { ZStoHdr(zv, 0); ZShHdr(zv, ZFIN); } -void ZSendCancel(PZVar zv) +static void ZSendCancel(PZVar zv) { int i; @@ -514,7 +514,7 @@ add_sendbuf("%s: ", __FUNCTION__); } -void ZSendInitHdr(PZVar zv) +static void ZSendInitHdr(PZVar zv) { ZStoHdr(zv, 0); if (zv->CtlEsc) @@ -523,7 +523,7 @@ zv->ZState = Z_SendInitHdr; } -void ZSendInitDat(PZVar zv) +static void ZSendInitDat(PZVar zv) { zv->CRC = 0; zv->PktOutCount = 0; @@ -546,7 +546,7 @@ add_sendbuf("%s: ", __FUNCTION__); } -void ZSendFileHdr(PZVar zv) +static void ZSendFileHdr(PZVar zv) { ZStoHdr(zv, 0); if (zv->BinFlag) @@ -557,7 +557,7 @@ zv->ZState = Z_SendFileHdr; } -void ZSendFileDat(PFileVarProto fv, PZVar zv) +static void ZSendFileDat(PFileVarProto fv, PZVar zv) { int i, j; @@ -623,7 +623,7 @@ &(fv->FullName[fv->DirLen]), fv->FileSize); } -void ZSendDataHdr(PZVar zv) +static void ZSendDataHdr(PZVar zv) { ZStoHdr(zv, zv->Pos); ZSbHdr(zv, ZDATA); @@ -630,7 +630,7 @@ zv->ZState = Z_SendDataHdr; } -void ZSendDataDat(PFileVarProto fv, PZVar zv) +static void ZSendDataDat(PFileVarProto fv, PZVar zv) { int c; BYTE b; @@ -688,7 +688,7 @@ add_sendbuf("%s: ", __FUNCTION__); } -BOOL ZInit(PFileVarProto fv, PComVar cv, PTTSet ts) +static BOOL ZInit(PFileVarProto fv, PComVar cv, PTTSet ts) { int Max; char uimsg[MAX_UIMSG]; @@ -810,7 +810,7 @@ return TRUE; } -void ZTimeOutProc(PFileVarProto fv, PComVar cv) +static void ZTimeOutProc(PFileVarProto fv, PComVar cv) { PZVar zv = fv->data; switch (zv->ZState) { @@ -829,7 +829,7 @@ } } -BOOL ZCheckHdr(PFileVarProto fv, PZVar zv) +static BOOL ZCheckHdr(PFileVarProto fv, PZVar zv) { int i; BOOL Ok; @@ -863,7 +863,7 @@ return Ok; } -void ZParseRInit(PFileVarProto fv, PZVar zv) +static void ZParseRInit(PFileVarProto fv, PZVar zv) { int Max; @@ -908,7 +908,7 @@ ZSendFileHdr(zv); } -BOOL ZParseSInit(PZVar zv) +static BOOL ZParseSInit(PZVar zv) { if (zv->ZState != Z_RecvInit) return FALSE; @@ -917,7 +917,7 @@ return TRUE; } -void ZParseHdr(PFileVarProto fv, PZVar zv, PComVar cv) +static void ZParseHdr(PFileVarProto fv, PZVar zv, PComVar cv) { add_recvbuf("%s: RxType %s ", __FUNCTION__, hdrtype_name(zv->RxType)); @@ -1053,7 +1053,7 @@ zv->PktInCount = 0; } -BOOL ZParseFile(PFileVarProto fv, PZVar zv) +static BOOL ZParseFile(PFileVarProto fv, PZVar zv) { BYTE b; int i, j; @@ -1113,7 +1113,7 @@ return TRUE; } -BOOL ZWriteData(PFileVarProto fv, PZVar zv) +static BOOL ZWriteData(PFileVarProto fv, PZVar zv) { int i; BYTE b; @@ -1150,7 +1150,7 @@ return TRUE; } -void ZCheckData(PFileVarProto fv, PZVar zv) +static void ZCheckData(PFileVarProto fv, PZVar zv) { BOOL Ok; @@ -1222,7 +1222,7 @@ } } -BOOL ZParse(PFileVarProto fv, PComVar cv) +static BOOL ZParse(PFileVarProto fv, PComVar cv) { PZVar zv = fv->data; BYTE b; @@ -1471,7 +1471,7 @@ return TRUE; } -void ZCancel(PFileVarProto fv, PComVar cv) +static void ZCancel(PFileVarProto fv, PComVar cv) { PZVar zv = fv->data; (void)cv;