• R/O
  • SSH
  • HTTPS

ttssh2: 提交


Commit MetaInfo

修订版8661 (tree)
时间2020-03-31 00:20:10
作者zmatsuo

Log Message

StrVarPtr() の戻り値を char * から const char * に変更

- StrVarPtr() で得たポインタを直接操作しないようにした

- 従来は MaxStrLen byte の領域が保証されていた
- 文字列が可変長となったため領域は可変長

- 新たな文字列を作成した後、SetStrVal() で再設定するようにした
- 型を変更して警告やエラーが出る部分を修正した

更改概述

差异

--- branches/unicode_macro_2/teraterm/ttpmacro/ttl.cpp (revision 8660)
+++ branches/unicode_macro_2/teraterm/ttpmacro/ttl.cpp (revision 8661)
@@ -2385,7 +2385,7 @@
23852385 char Temp[512];
23862386 WORD Err;
23872387 TVarId VarId;
2388- PCHAR VarStr;
2388+ const char *VarStr;
23892389 int result = 0; /* failure */
23902390
23912391 Err = 0;
@@ -2470,7 +2470,9 @@
24702470 return Err;
24712471 }
24722472
2473- result = GetSpecialFolder(StrVarPtr(VarId), sizeof(TStrVal), type);
2473+ char folder[MaxStrLen];
2474+ result = GetSpecialFolder(folder, sizeof(folder), type);
2475+ SetStrVal(VarId, folder);
24742476 SetResult(result);
24752477
24762478 return Err;
@@ -2483,7 +2485,7 @@
24832485 TStrVal Str1, Str2, tzStr;
24842486 time_t time1;
24852487 struct tm *ptm;
2486- char *format;
2488+ const char *format;
24872489 BOOL set_result;
24882490 const char *tz = NULL;
24892491 char tz_copy[128];
@@ -3610,7 +3612,7 @@
36103612 * src に含まれる 0x01 を 0x01 0x02 に置き換えて dst にコピーする。
36113613 * TStrVal には 0x00 が含まれる事が無い(終端と区別できない)ので 0x00 は考慮する必要なし。
36123614 */
3613-static void AddBroadcastString(char *dst, int dstlen, char *src)
3615+static void AddBroadcastString(char *dst, int dstlen, const char *src)
36143616 {
36153617 int i;
36163618
@@ -4390,7 +4392,11 @@
43904392 Err = ErrSyntax;
43914393 if (Err!=0) return Err;
43924394
4393- strncat_s(StrVarPtr(VarId),MaxStrLen,Str,_TRUNCATE);
4395+ char dest[MaxStrLen];
4396+ const char *src = StrVarPtr(VarId);
4397+ strcpy_s(dest, MaxStrLen, src);
4398+ strncat_s(dest, MaxStrLen, Str, _TRUNCATE);
4399+ SetStrVal(VarId, dest);
43944400 return Err;
43954401 }
43964402
@@ -4414,8 +4420,10 @@
44144420 SrcLen = strlen(Str)-From+1;
44154421 if (Len > SrcLen) Len = SrcLen;
44164422 if (Len < 0) Len = 0;
4417- memcpy(StrVarPtr(VarId),&(Str[From-1]),Len);
4418- StrVarPtr(VarId)[Len] = 0;
4423+ char dest[MaxStrLen];
4424+ memcpy(dest,&(Str[From-1]),Len);
4425+ dest[Len] = 0;
4426+ SetStrVal(VarId, dest);
44194427 return Err;
44204428 }
44214429
@@ -4531,7 +4539,9 @@
45314539 Err = ErrSyntax;
45324540 if (Err!=0) return Err;
45334541
4534- srcptr = StrVarPtr(VarId);
4542+ char dest[MaxStrLen];
4543+ strcpy_s(dest, sizeof(dest), StrVarPtr(VarId));
4544+ srcptr = dest;
45354545 srclen = strlen(srcptr);
45364546 if (Index <= 0 || Index > srclen+1) {
45374547 Err = ErrSyntax;
@@ -4543,6 +4553,7 @@
45434553 if (Err!=0) return Err;
45444554
45454555 insert_string(srcptr, Index, Str);
4556+ SetStrVal(VarId, dest);
45464557
45474558 return Err;
45484559 }
@@ -4597,7 +4608,9 @@
45974608 Err = ErrSyntax;
45984609 if (Err!=0) return Err;
45994610
4600- srcptr = StrVarPtr(VarId);
4611+ char dest[MaxStrLen];
4612+ strcpy_s(dest, sizeof(dest), StrVarPtr(VarId));
4613+ srcptr = dest;
46014614 srclen = strlen(srcptr);
46024615 if (Len <=0 || Index <= 0 || (Index-1 + Len) > srclen) {
46034616 Err = ErrSyntax;
@@ -4605,6 +4618,7 @@
46054618 if (Err!=0) return Err;
46064619
46074620 remove_string(srcptr, Index, Len);
4621+ SetStrVal(VarId, dest);
46084622
46094623 return Err;
46104624 }
@@ -4616,7 +4630,8 @@
46164630 TStrVal oldstr;
46174631 TStrVal newstr;
46184632 TStrVal tmpstr;
4619- char *srcptr, *matchptr;
4633+ const char *srcptr;
4634+ const char *matchptr;
46204635 char *p;
46214636 int srclen, oldlen, matchlen;
46224637 int pos, ret;
@@ -4670,9 +4685,11 @@
46704685 goto error;
46714686 }
46724687
4673- strncpy_s(srcptr, MaxStrLen, tmpstr, pos + ret);
4674- strncat_s(srcptr, MaxStrLen, newstr, _TRUNCATE);
4675- strncat_s(srcptr, MaxStrLen, tmpstr + pos + ret + matchlen, _TRUNCATE);
4688+ char dest[MaxStrLen];
4689+ strncpy_s(dest, sizeof(dest), tmpstr, pos + ret);
4690+ strncat_s(dest, sizeof(dest), newstr, _TRUNCATE);
4691+ strncat_s(dest, sizeof(dest), tmpstr + pos + ret + matchlen, _TRUNCATE);
4692+ SetStrVal(VarId, dest);
46764693
46774694 result = 1;
46784695
@@ -4703,7 +4720,10 @@
47034720 SetStrVal(VarId, srcstr);
47044721 }
47054722 else { // strspecial strvar
4706- RestoreNewLine(StrVarPtr(VarId));
4723+ char dest[MaxStrLen];
4724+ strcpy_s(dest, sizeof(dest), StrVarPtr(VarId));
4725+ RestoreNewLine(dest);
4726+ SetStrVal(VarId, dest);
47074727 }
47084728
47094729 return Err;
@@ -4727,7 +4747,9 @@
47274747 Err = ErrSyntax;
47284748 if (Err!=0) return Err;
47294749
4730- srcptr = StrVarPtr(VarId);
4750+ char dest[MaxStrLen];
4751+ strcpy_s(dest, sizeof(dest), StrVarPtr(VarId));
4752+ srcptr = dest;
47314753 srclen = strlen(srcptr);
47324754
47334755 // 削除する文字のテーブルを作る。
@@ -4760,6 +4782,7 @@
47604782 // 次に、先頭から削る。
47614783 remove_string(srcptr, 1, start);
47624784
4785+ SetStrVal(VarId, dest);
47634786 return Err;
47644787 }
47654788
@@ -4889,7 +4912,8 @@
48894912 int srclen;
48904913 int i;
48914914 BOOL ary = FALSE;
4892- char *srcptr, *p;
4915+ char *srcptr;
4916+ const char *p;
48934917
48944918 Err = 0;
48954919 GetStrVar(&VarId,&Err);
@@ -4919,7 +4943,9 @@
49194943 if (!ary && (maxvar < 1 || maxvar > MAXVARNUM) )
49204944 return ErrSyntax;
49214945
4922- srcptr = StrVarPtr(VarId);
4946+ char dest[MaxStrLen];
4947+ strcpy_s(dest, sizeof(dest), StrVarPtr(VarId));
4948+ srcptr = dest;
49234949 srclen = strlen(srcptr);
49244950
49254951 srcptr[0] = '\0';
@@ -4940,6 +4966,7 @@
49404966 }
49414967 }
49424968 }
4969+ SetStrVal(VarId, dest);
49434970
49444971 return Err;
49454972 #undef MAXVARNUM
@@ -4986,7 +5013,7 @@
49865013 i++;
49875014 }
49885015
4989- strncpy_s(StrVarPtr(VarId), MaxStrLen, Str, _TRUNCATE);
5016+ SetStrVal(VarId, Str);
49905017 return Err;
49915018 }
49925019
@@ -5016,7 +5043,7 @@
50165043 i++;
50175044 }
50185045
5019- strncpy_s(StrVarPtr(VarId), MaxStrLen, Str, _TRUNCATE);
5046+ SetStrVal(VarId, Str);
50205047 return Err;
50215048 }
50225049
@@ -5977,10 +6004,9 @@
59776004 case TypString:
59786005 if (StrConst)
59796006 SetStrVal(VarId,Str);
5980- else
5981- // StrVarPtr の返り値が TStrVal のポインタであることを期待してサイズを固定
5982- // (2007.6.23 maya)
5983- strncpy_s(StrVarPtr(VarId),MaxStrLen,StrVarPtr((TVarId)Val),_TRUNCATE);
6007+ else {
6008+ SetStrVal(VarId, StrVarPtr((TVarId)Val));
6009+ }
59846010 break;
59856011 default:
59866012 Err = ErrSyntax;
@@ -6052,12 +6078,12 @@
60526078
60536079 // 正規表現でグループマッチした文字列を記録する
60546080 // (2005.10.15 yutaka)
6055-void SetGroupMatchStr(int no, PCHAR Str)
6081+void SetGroupMatchStr(int no, const char *Str)
60566082 {
60576083 WORD VarType;
60586084 TVarId VarId;
60596085 char buf[128];
6060- char *p;
6086+ const char *p;
60616087
60626088 if (Str == NULL)
60636089 p = "";
--- branches/unicode_macro_2/teraterm/ttpmacro/ttl.h (revision 8660)
+++ branches/unicode_macro_2/teraterm/ttpmacro/ttl.h (revision 8661)
@@ -48,7 +48,7 @@
4848 void EndTTL();
4949 void Exec();
5050 void SetMatchStr(PCHAR Str);
51-void SetGroupMatchStr(int no, PCHAR Str);
51+void SetGroupMatchStr(int no, const char *Str);
5252 void SetInputStr(const char *Str);
5353 void SetResult(int ResultCode);
5454 BOOL CheckTimeout();
--- branches/unicode_macro_2/teraterm/ttpmacro/ttl_gui.cpp (revision 8660)
+++ branches/unicode_macro_2/teraterm/ttpmacro/ttl_gui.cpp (revision 8661)
@@ -184,8 +184,7 @@
184184 }
185185
186186 char *filenameU8 = ToU8W(filename);
187- char *dest = StrVarPtr(VarId);
188- strcpy(dest, filenameU8);
187+ SetStrVal(VarId, filenameU8);
189188 free(filenameU8);
190189
191190 SetResult(ret);
@@ -285,9 +284,9 @@
285284 if (CheckVar("inputstr",&ValType,&VarId) && (ValType==TypString)) {
286285 wchar_t input_string[MaxStrLen];
287286 OpenInpDlg(input_string,wc::fromUtf8(Str1),wc::fromUtf8(Str2),wc::fromUtf8(Str3),Paswd);
288- char *output = StrVarPtr(VarId);
289- size_t str_len = MaxStrLen;
290- WideCharToUTF8(input_string, NULL, output, &str_len);
287+ char *u8 = ToU8W(input_string);
288+ SetStrVal(VarId, u8);
289+ free(u8);
291290 }
292291 return Err;
293292 }
--- branches/unicode_macro_2/teraterm/ttpmacro/ttmdde.c (revision 8660)
+++ branches/unicode_macro_2/teraterm/ttpmacro/ttmdde.c (revision 8661)
@@ -360,7 +360,7 @@
360360 }
361361 }
362362
363-void DDEOut(PCHAR B)
363+void DDEOut(const char *B)
364364 {
365365 while (*B) {
366366 if (OutLen >= OutBufSize - 1)
@@ -473,7 +473,7 @@
473473 RegexActionType = REGEX_NONE; // regex disabled
474474 }
475475
476-void SetWait(int Index, PCHAR Str)
476+void SetWait(int Index, const char *Str)
477477 {
478478 if (PWaitStr[Index-1])
479479 free(PWaitStr[Index-1]);
--- branches/unicode_macro_2/teraterm/ttpmacro/ttmdde.h (revision 8660)
+++ branches/unicode_macro_2/teraterm/ttpmacro/ttmdde.h (revision 8661)
@@ -39,12 +39,12 @@
3939 BOOL InitDDE(HWND HWin);
4040 void EndDDE();
4141 void DDEOut1Byte(BYTE B);
42-void DDEOut(PCHAR B);
42+void DDEOut(const char *B);
4343 void DDESend();
4444 PCHAR GetRecvLnBuff();
4545 void FlushRecv();
4646 void ClearWait();
47-void SetWait(int Index, PCHAR Str);
47+void SetWait(int Index, const char *Str);
4848 void ClearWaitN();
4949 void SetWaitN(int Len);
5050 int CmpWait(int Index, PCHAR Str);
--- branches/unicode_macro_2/teraterm/ttpmacro/ttmenc.c (revision 8660)
+++ branches/unicode_macro_2/teraterm/ttpmacro/ttmenc.c (revision 8661)
@@ -33,7 +33,7 @@
3333 #include <stdlib.h>
3434 #include <string.h>
3535
36-BOOL EncSeparate(PCHAR Str, int far *i, LPBYTE b)
36+BOOL EncSeparate(const char *Str, int far *i, LPBYTE b)
3737 {
3838 int cptr, bptr;
3939 unsigned int d;
@@ -81,7 +81,7 @@
8181 return d;
8282 }
8383
84-void Encrypt(PCHAR InStr, PCHAR OutStr)
84+void Encrypt(const char *InStr, PCHAR OutStr)
8585 {
8686 int i, j;
8787 BYTE b, r, r2;
--- branches/unicode_macro_2/teraterm/ttpmacro/ttmenc.h (revision 8660)
+++ branches/unicode_macro_2/teraterm/ttpmacro/ttmenc.h (revision 8661)
@@ -33,7 +33,7 @@
3333 extern "C" {
3434 #endif
3535
36-void Encrypt(PCHAR InStr, PCHAR OutStr);
36+void Encrypt(const char *InStr, PCHAR OutStr);
3737 void Decrypt(PCHAR InStr, PCHAR OutStr);
3838
3939 #ifdef __cplusplus
--- branches/unicode_macro_2/teraterm/ttpmacro/ttmparse.c (revision 8660)
+++ branches/unicode_macro_2/teraterm/ttpmacro/ttmparse.c (revision 8661)
@@ -1004,7 +1004,7 @@
10041004 #endif
10051005 }
10061006
1007-BOOL NewStrVar(const char *Name, PCHAR InitVal)
1007+BOOL NewStrVar(const char *Name, const char *InitVal)
10081008 {
10091009 #if 0
10101010 long P;
@@ -2003,7 +2003,7 @@
20032003 #endif
20042004 }
20052005
2006-PCHAR StrVarPtr(TVarId VarId)
2006+const char *StrVarPtr(TVarId VarId)
20072007 {
20082008 #if 0
20092009 if (VarId >> 16) {
@@ -2156,7 +2156,7 @@
21562156 }
21572157 }
21582158
2159-void GetAryVarByName(PVarId VarId, PCHAR Name, WORD VarType, LPWORD Err)
2159+void GetAryVarByName(PVarId VarId, const char *Name, WORD VarType, LPWORD Err)
21602160 {
21612161 WORD typ;
21622162
--- branches/unicode_macro_2/teraterm/ttpmacro/ttmparse.h (revision 8660)
+++ branches/unicode_macro_2/teraterm/ttpmacro/ttmparse.h (revision 8661)
@@ -332,7 +332,7 @@
332332 BOOL GetString(PCHAR Str, LPWORD Err);
333333 BOOL CheckVar(const char *Name, LPWORD VarType, PVarId VarId);
334334 BOOL NewIntVar(const char *Name, int InitVal);
335-BOOL NewStrVar(const char *Name, PCHAR InitVal);
335+BOOL NewStrVar(const char *Name, const char *InitVal);
336336 BOOL NewLabVar(const char *Name, BINT InitVal, WORD ILevel);
337337 int NewIntAryVar(const char *Name, int size);
338338 int NewStrAryVar(const char *Name, int size);
@@ -347,13 +347,13 @@
347347 void GetStrVal2(PCHAR Str, LPWORD Err, BOOL AutoConversion);
348348 void GetStrVar(PVarId VarId, LPWORD Err);
349349 void SetStrVal(TVarId VarId, const char *Str);
350-PCHAR StrVarPtr(TVarId VarId);
350+const char *StrVarPtr(TVarId VarId);
351351 void GetVarType(LPWORD ValType, int far *Val, LPWORD Err);
352352 TVarId GetIntVarFromArray(TVarId VarId, int Index, LPWORD Err);
353353 TVarId GetStrVarFromArray(TVarId VarId, int Index, LPWORD Err);
354354 BOOL GetIndex(int *Index, LPWORD Err);
355355 void GetAryVar(PVarId VarId, WORD VarType, LPWORD Err);
356-void GetAryVarByName(PVarId VarId, PCHAR Name, WORD VarType, LPWORD Err);
356+void GetAryVarByName(PVarId VarId, const char *Name, WORD VarType, LPWORD Err);
357357 void SetIntValInArray(TVarId VarId, int Index, int Val, LPWORD Err);
358358 void SetStrValInArray(TVarId VarId, int Index, PCHAR Str, LPWORD Err);
359359 int GetIntAryVarSize(TVarId VarId);
Show on old repository browser