[Ttssh2-commit] [8705] StrVarPtr() の戻り値を char * から const char * に変更

Back to archive index
scmno****@osdn***** scmno****@osdn*****
2020年 4月 12日 (日) 00:56:16 JST


Revision: 8705
          https://osdn.net/projects/ttssh2/scm/svn/commits/8705
Author:   zmatsuo
Date:     2020-04-12 00:56:16 +0900 (Sun, 12 Apr 2020)
Log Message:
-----------
StrVarPtr() の戻り値を char * から const char * に変更

- StrVarPtr() で得たポインタを直接操作しないようにした
  - 従来は MaxStrLen byte の領域が保証されていた
  - 文字列が可変長となったため領域は可変長
- 新たな文字列を作成した後、SetStrVal() で再設定するようにした
- 型を変更して警告やエラーが出る部分を修正した

Modified Paths:
--------------
    trunk/teraterm/ttpmacro/ttl.cpp
    trunk/teraterm/ttpmacro/ttl.h
    trunk/teraterm/ttpmacro/ttl_gui.cpp
    trunk/teraterm/ttpmacro/ttmdde.c
    trunk/teraterm/ttpmacro/ttmdde.h
    trunk/teraterm/ttpmacro/ttmenc.c
    trunk/teraterm/ttpmacro/ttmenc.h
    trunk/teraterm/ttpmacro/ttmparse.c
    trunk/teraterm/ttpmacro/ttmparse.h

-------------- next part --------------
Modified: trunk/teraterm/ttpmacro/ttl.cpp
===================================================================
--- trunk/teraterm/ttpmacro/ttl.cpp	2020-04-11 15:56:06 UTC (rev 8704)
+++ trunk/teraterm/ttpmacro/ttl.cpp	2020-04-11 15:56:16 UTC (rev 8705)
@@ -2385,7 +2385,7 @@
 	char Temp[512];
 	WORD Err;
 	TVarId VarId;
-	PCHAR VarStr;
+	const char *VarStr;
 	int result = 0;  /* failure */
 
 	Err = 0;
@@ -2470,7 +2470,9 @@
 		return Err;
 	}
 
-	result = GetSpecialFolder(StrVarPtr(VarId), sizeof(TStrVal), type);
+	char folder[MaxStrLen];
+	result = GetSpecialFolder(folder, sizeof(folder), type);
+	SetStrVal(VarId, folder);
 	SetResult(result);
 
 	return Err;
@@ -2483,7 +2485,7 @@
 	TStrVal Str1, Str2, tzStr;
 	time_t time1;
 	struct tm *ptm;
-	char *format;
+	const char *format;
 	BOOL set_result;
 	const char *tz = NULL;
 	char tz_copy[128]; 
@@ -3610,7 +3612,7 @@
  * src \x82Ɋ܂܂\xEA\x82\xE9 0x01 \x82\xF0 0x01 0x02 \x82ɒu\x82\xAB\x8A\xB7\x82\xA6\x82\xC4 dst \x82ɃR\x83s\x81[\x82\xB7\x82\xE9\x81B
  * TStrVal \x82ɂ\xCD 0x00 \x82\xAA\x8A܂܂\xEA\x82鎖\x82\xAA\x96\xB3\x82\xA2(\x8FI\x92[\x82Ƌ\xE6\x95ʂł\xAB\x82Ȃ\xA2)\x82̂\xC5 0x00 \x82͍l\x97\xB6\x82\xB7\x82\xE9\x95K\x97v\x82Ȃ\xB5\x81B
  */
-static void AddBroadcastString(char *dst, int dstlen, char *src)
+static void AddBroadcastString(char *dst, int dstlen, const char *src)
 {
 	int i;
 
@@ -4390,7 +4392,11 @@
 		Err = ErrSyntax;
 	if (Err!=0) return Err;
 
-	strncat_s(StrVarPtr(VarId),MaxStrLen,Str,_TRUNCATE);
+	char dest[MaxStrLen];
+	const char *src = StrVarPtr(VarId);
+	strcpy_s(dest, MaxStrLen, src);
+	strncat_s(dest, MaxStrLen, Str, _TRUNCATE);
+	SetStrVal(VarId, dest);
 	return Err;
 }
 
@@ -4414,8 +4420,10 @@
 	SrcLen = strlen(Str)-From+1;
 	if (Len > SrcLen) Len = SrcLen;
 	if (Len < 0) Len = 0;
-	memcpy(StrVarPtr(VarId),&(Str[From-1]),Len);
-	StrVarPtr(VarId)[Len] = 0;
+	char dest[MaxStrLen];
+	memcpy(dest,&(Str[From-1]),Len);
+	dest[Len] = 0;
+	SetStrVal(VarId, dest);
 	return Err;
 }
 
@@ -4531,7 +4539,9 @@
 		Err = ErrSyntax;
 	if (Err!=0) return Err;
 
-	srcptr = StrVarPtr(VarId);
+	char dest[MaxStrLen];
+	strcpy_s(dest, sizeof(dest), StrVarPtr(VarId));
+	srcptr = dest;
 	srclen = strlen(srcptr);
 	if (Index <= 0 || Index > srclen+1) {
 		Err = ErrSyntax;
@@ -4543,6 +4553,7 @@
 	if (Err!=0) return Err;
 
 	insert_string(srcptr, Index, Str);
+	SetStrVal(VarId, dest);
 
 	return Err;
 }
@@ -4597,7 +4608,9 @@
 		Err = ErrSyntax;
 	if (Err!=0) return Err;
 
-	srcptr = StrVarPtr(VarId);
+	char dest[MaxStrLen];
+	strcpy_s(dest, sizeof(dest), StrVarPtr(VarId));
+	srcptr = dest;
 	srclen = strlen(srcptr);
 	if (Len <=0 || Index <= 0 || (Index-1 + Len) > srclen) {
 		Err = ErrSyntax;
@@ -4605,6 +4618,7 @@
 	if (Err!=0) return Err;
 
 	remove_string(srcptr, Index, Len);
+	SetStrVal(VarId, dest);
 
 	return Err;
 }
@@ -4616,7 +4630,8 @@
 	TStrVal oldstr;
 	TStrVal newstr;
 	TStrVal tmpstr;
-	char *srcptr, *matchptr;
+	const char *srcptr;
+	const char *matchptr;
 	char *p;
 	int srclen, oldlen, matchlen;
 	int pos, ret;
@@ -4670,9 +4685,11 @@
 		goto error;
 	}
 
-	strncpy_s(srcptr, MaxStrLen, tmpstr, pos + ret);
-	strncat_s(srcptr, MaxStrLen, newstr, _TRUNCATE);
-	strncat_s(srcptr, MaxStrLen, tmpstr + pos + ret + matchlen, _TRUNCATE);
+	char dest[MaxStrLen];
+	strncpy_s(dest, sizeof(dest), tmpstr, pos + ret);
+	strncat_s(dest, sizeof(dest), newstr, _TRUNCATE);
+	strncat_s(dest, sizeof(dest), tmpstr + pos + ret + matchlen, _TRUNCATE);
+	SetStrVal(VarId, dest);
 
 	result = 1;
 
@@ -4703,7 +4720,10 @@
 		SetStrVal(VarId, srcstr);
 	}
 	else { // strspecial strvar
-		RestoreNewLine(StrVarPtr(VarId));
+		char dest[MaxStrLen];
+		strcpy_s(dest, sizeof(dest), StrVarPtr(VarId));
+		RestoreNewLine(dest);
+		SetStrVal(VarId, dest);
 	}
 
 	return Err;
@@ -4727,7 +4747,9 @@
 		Err = ErrSyntax;
 	if (Err!=0) return Err;
 
-	srcptr = StrVarPtr(VarId);
+	char dest[MaxStrLen];
+	strcpy_s(dest, sizeof(dest), StrVarPtr(VarId));
+	srcptr = dest;
 	srclen = strlen(srcptr);
 
 	// \x8D폜\x82\xB7\x82镶\x8E\x9A\x82̃e\x81[\x83u\x83\x8B\x82\xF0\x8D\xEC\x82\xE9\x81B
@@ -4760,6 +4782,7 @@
 	// \x8E\x9F\x82ɁA\x90擪\x82\xA9\x82\xE7\x8D\xED\x82\xE9\x81B
 	remove_string(srcptr, 1, start);
 
+	SetStrVal(VarId, dest);
 	return Err;
 }
 
@@ -4889,7 +4912,8 @@
 	int srclen;
 	int i;
 	BOOL ary = FALSE;
-	char *srcptr, *p;
+	char *srcptr;
+	const char *p;
 
 	Err = 0;
 	GetStrVar(&VarId,&Err);
@@ -4919,7 +4943,9 @@
 	if (!ary && (maxvar < 1 || maxvar > MAXVARNUM) )
 		return ErrSyntax;
 
-	srcptr = StrVarPtr(VarId);
+	char dest[MaxStrLen];
+	strcpy_s(dest, sizeof(dest), StrVarPtr(VarId));
+	srcptr = dest;
 	srclen = strlen(srcptr);
 
 	srcptr[0] = '\0';
@@ -4940,6 +4966,7 @@
 			}
 		}
 	}
+	SetStrVal(VarId, dest);
 
 	return Err;
 #undef MAXVARNUM
@@ -4986,7 +5013,7 @@
 		i++;
 	}
 
-	strncpy_s(StrVarPtr(VarId), MaxStrLen, Str, _TRUNCATE);
+	SetStrVal(VarId, Str);
 	return Err;
 }
 
@@ -5016,7 +5043,7 @@
 		i++;
 	}
 
-	strncpy_s(StrVarPtr(VarId), MaxStrLen, Str, _TRUNCATE);
+	SetStrVal(VarId, Str);
 	return Err;
 }
 
@@ -5977,10 +6004,9 @@
 						case TypString:
 							if (StrConst)
 								SetStrVal(VarId,Str);
-							else
-							// StrVarPtr \x82̕Ԃ\xE8\x92l\x82\xAA TStrVal \x82̃|\x83C\x83\x93\x83^\x82ł\xA0\x82邱\x82Ƃ\xF0\x8A\xFA\x91҂\xB5\x82ăT\x83C\x83Y\x82\xF0\x8CŒ\xE8
-							// (2007.6.23 maya)
-								strncpy_s(StrVarPtr(VarId),MaxStrLen,StrVarPtr((TVarId)Val),_TRUNCATE);
+							else {
+								SetStrVal(VarId, StrVarPtr((TVarId)Val));
+							}
 						break;
 						default:
 							Err = ErrSyntax;
@@ -6052,12 +6078,12 @@
 
 // \x90\xB3\x8BK\x95\\x8C\xBB\x82ŃO\x83\x8B\x81[\x83v\x83}\x83b\x83`\x82\xB5\x82\xBD\x95\xB6\x8E\x9A\x97\xF1\x82\xF0\x8BL\x98^\x82\xB7\x82\xE9
 // (2005.10.15 yutaka)
-void SetGroupMatchStr(int no, PCHAR Str)
+void SetGroupMatchStr(int no, const char *Str)
 {
 	WORD VarType;
 	TVarId VarId;
 	char buf[128];
-	char *p;
+	const char *p;
 
 	if (Str == NULL)
 		p = "";

Modified: trunk/teraterm/ttpmacro/ttl.h
===================================================================
--- trunk/teraterm/ttpmacro/ttl.h	2020-04-11 15:56:06 UTC (rev 8704)
+++ trunk/teraterm/ttpmacro/ttl.h	2020-04-11 15:56:16 UTC (rev 8705)
@@ -48,7 +48,7 @@
 void EndTTL();
 void Exec();
 void SetMatchStr(PCHAR Str);
-void SetGroupMatchStr(int no, PCHAR Str);
+void SetGroupMatchStr(int no, const char *Str);
 void SetInputStr(const char *Str);
 void SetResult(int ResultCode);
 BOOL CheckTimeout();

Modified: trunk/teraterm/ttpmacro/ttl_gui.cpp
===================================================================
--- trunk/teraterm/ttpmacro/ttl_gui.cpp	2020-04-11 15:56:06 UTC (rev 8704)
+++ trunk/teraterm/ttpmacro/ttl_gui.cpp	2020-04-11 15:56:16 UTC (rev 8705)
@@ -184,8 +184,7 @@
 		}
 
 		char *filenameU8 = ToU8W(filename);
-		char *dest = StrVarPtr(VarId);
-		strcpy(dest, filenameU8);
+		SetStrVal(VarId, filenameU8);
 		free(filenameU8);
 
 		SetResult(ret);
@@ -285,9 +284,9 @@
 	if (CheckVar("inputstr",&ValType,&VarId) && (ValType==TypString)) {
 		wchar_t input_string[MaxStrLen];
 		OpenInpDlg(input_string,wc::fromUtf8(Str1),wc::fromUtf8(Str2),wc::fromUtf8(Str3),Paswd);
-		char *output = StrVarPtr(VarId);
-		size_t str_len = MaxStrLen;
-		WideCharToUTF8(input_string, NULL, output, &str_len);
+		char *u8 = ToU8W(input_string);
+		SetStrVal(VarId, u8);
+		free(u8);
 	}
 	return Err;
 }

Modified: trunk/teraterm/ttpmacro/ttmdde.c
===================================================================
--- trunk/teraterm/ttpmacro/ttmdde.c	2020-04-11 15:56:06 UTC (rev 8704)
+++ trunk/teraterm/ttpmacro/ttmdde.c	2020-04-11 15:56:16 UTC (rev 8705)
@@ -360,7 +360,7 @@
 	}
 }
 
-void DDEOut(PCHAR B)
+void DDEOut(const char *B)
 {
 	while (*B) {
 		if (OutLen >= OutBufSize - 1)
@@ -473,7 +473,7 @@
 	RegexActionType = REGEX_NONE; // regex disabled
 }
 
-void SetWait(int Index, PCHAR Str)
+void SetWait(int Index, const char *Str)
 {
 	if (PWaitStr[Index-1])
 		free(PWaitStr[Index-1]);

Modified: trunk/teraterm/ttpmacro/ttmdde.h
===================================================================
--- trunk/teraterm/ttpmacro/ttmdde.h	2020-04-11 15:56:06 UTC (rev 8704)
+++ trunk/teraterm/ttpmacro/ttmdde.h	2020-04-11 15:56:16 UTC (rev 8705)
@@ -39,12 +39,12 @@
 BOOL InitDDE(HWND HWin);
 void EndDDE();
 void DDEOut1Byte(BYTE B);
-void DDEOut(PCHAR B);
+void DDEOut(const char *B);
 void DDESend();
 PCHAR GetRecvLnBuff();
 void FlushRecv();
 void ClearWait();
-void SetWait(int Index, PCHAR Str);
+void SetWait(int Index, const char *Str);
 void ClearWaitN();
 void SetWaitN(int Len);
 int CmpWait(int Index, PCHAR Str);

Modified: trunk/teraterm/ttpmacro/ttmenc.c
===================================================================
--- trunk/teraterm/ttpmacro/ttmenc.c	2020-04-11 15:56:06 UTC (rev 8704)
+++ trunk/teraterm/ttpmacro/ttmenc.c	2020-04-11 15:56:16 UTC (rev 8705)
@@ -33,7 +33,7 @@
 #include <stdlib.h>
 #include <string.h>
 
-BOOL EncSeparate(PCHAR Str, int far *i, LPBYTE b)
+BOOL EncSeparate(const char *Str, int far *i, LPBYTE b)
 {
 	int cptr, bptr;
 	unsigned int d;
@@ -81,7 +81,7 @@
 	return d;
 }
 
-void Encrypt(PCHAR InStr, PCHAR OutStr)
+void Encrypt(const char *InStr, PCHAR OutStr)
 {
 	int i, j;
 	BYTE b, r, r2;

Modified: trunk/teraterm/ttpmacro/ttmenc.h
===================================================================
--- trunk/teraterm/ttpmacro/ttmenc.h	2020-04-11 15:56:06 UTC (rev 8704)
+++ trunk/teraterm/ttpmacro/ttmenc.h	2020-04-11 15:56:16 UTC (rev 8705)
@@ -33,7 +33,7 @@
 extern "C" {
 #endif
 
-void Encrypt(PCHAR InStr, PCHAR OutStr);
+void Encrypt(const char *InStr, PCHAR OutStr);
 void Decrypt(PCHAR InStr, PCHAR OutStr);
 
 #ifdef __cplusplus

Modified: trunk/teraterm/ttpmacro/ttmparse.c
===================================================================
--- trunk/teraterm/ttpmacro/ttmparse.c	2020-04-11 15:56:06 UTC (rev 8704)
+++ trunk/teraterm/ttpmacro/ttmparse.c	2020-04-11 15:56:16 UTC (rev 8705)
@@ -1004,7 +1004,7 @@
 #endif
 }
 
-BOOL NewStrVar(const char *Name, PCHAR InitVal)
+BOOL NewStrVar(const char *Name, const char *InitVal)
 {
 #if 0
 	long P;
@@ -2003,7 +2003,7 @@
 #endif
 }
 
-PCHAR StrVarPtr(TVarId VarId)
+const char *StrVarPtr(TVarId VarId)
 {
 #if 0
 	if (VarId >> 16) {
@@ -2156,7 +2156,7 @@
 	}
 }
 
-void GetAryVarByName(PVarId VarId, PCHAR Name, WORD VarType, LPWORD Err)
+void GetAryVarByName(PVarId VarId, const char *Name, WORD VarType, LPWORD Err)
 {
 	WORD typ;
 

Modified: trunk/teraterm/ttpmacro/ttmparse.h
===================================================================
--- trunk/teraterm/ttpmacro/ttmparse.h	2020-04-11 15:56:06 UTC (rev 8704)
+++ trunk/teraterm/ttpmacro/ttmparse.h	2020-04-11 15:56:16 UTC (rev 8705)
@@ -332,7 +332,7 @@
 BOOL GetString(PCHAR Str, LPWORD Err);
 BOOL CheckVar(const char *Name, LPWORD VarType, PVarId VarId);
 BOOL NewIntVar(const char *Name, int InitVal);
-BOOL NewStrVar(const char *Name, PCHAR InitVal);
+BOOL NewStrVar(const char *Name, const char *InitVal);
 BOOL NewLabVar(const char *Name, BINT InitVal, WORD ILevel);
 int NewIntAryVar(const char *Name, int size);
 int NewStrAryVar(const char *Name, int size);
@@ -347,13 +347,13 @@
 void GetStrVal2(PCHAR Str, LPWORD Err, BOOL AutoConversion);
 void GetStrVar(PVarId VarId, LPWORD Err);
 void SetStrVal(TVarId VarId, const char *Str);
-PCHAR StrVarPtr(TVarId VarId);
+const char *StrVarPtr(TVarId VarId);
 void GetVarType(LPWORD ValType, int far *Val, LPWORD Err);
 TVarId GetIntVarFromArray(TVarId VarId, int Index, LPWORD Err);
 TVarId GetStrVarFromArray(TVarId VarId, int Index, LPWORD Err);
 BOOL GetIndex(int *Index, LPWORD Err);
 void GetAryVar(PVarId VarId, WORD VarType, LPWORD Err);
-void GetAryVarByName(PVarId VarId, PCHAR Name, WORD VarType, LPWORD Err);
+void GetAryVarByName(PVarId VarId, const char *Name, WORD VarType, LPWORD Err);
 void SetIntValInArray(TVarId VarId, int Index, int Val, LPWORD Err);
 void SetStrValInArray(TVarId VarId, int Index, PCHAR Str, LPWORD Err);
 int GetIntAryVarSize(TVarId VarId);


Ttssh2-commit メーリングリストの案内
Back to archive index