[Ttssh2-commit] [9084] zmodem の ZMODEMStart() API を使用しないようにした

アーカイブの一覧に戻る
scmno****@osdn***** scmno****@osdn*****
2020年 12月 20日 (日) 21:12:21 JST


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;


Ttssh2-commit メーリングリストの案内
アーカイブの一覧に戻る