• R/O
  • SSH
  • HTTPS

ttssh2: Commit


Commit MetaInfo

Revisão9435 (tree)
Hora2021-09-20 00:15:00
Autorzmatsuo

Mensagem de Log

ttpmacro コマンドライン Unicode化

Mudança Sumário

Diff

--- trunk/teraterm/ttpmacro/ttl.cpp (revision 9434)
+++ trunk/teraterm/ttpmacro/ttl.cpp (revision 9435)
@@ -182,7 +182,8 @@
182182 BOOL InitTTL(HWND HWin)
183183 {
184184 int i;
185- TStrVal Dir;
185+ wchar_t *DirW;
186+ char *Dir;
186187 TVarId ParamsVarId;
187188 char tmpname[10];
188189 WORD Err;
@@ -214,12 +215,12 @@
214215 NewIntVar("paramcnt",ParamCnt); // ファイル名も含む引数の個数 (2012.4.10 yutaka)
215216
216217 // 旧形式のパラメータ設定 (param1 〜 param9)
217- NewStrVar("param1", ShortName);
218+ NewStrVar("param1", (u8)ShortName);
218219 if (Params) {
219220 for (i=2; i<=9; i++) {
220221 _snprintf_s(tmpname, sizeof(tmpname), _TRUNCATE, "param%d", i);
221222 if (ParamCnt >= i && Params[i] != NULL) {
222- NewStrVar(tmpname, Params[i]);
223+ NewStrVar(tmpname, (u8)Params[i]);
223224 }
224225 else {
225226 NewStrVar(tmpname, "");
@@ -233,7 +234,7 @@
233234 GetStrAryVarByName(&ParamsVarId, "params", &Err);
234235 if (Err == 0) {
235236 if (ShortName[0] != 0) {
236- SetStrValInArray(ParamsVarId, 1, ShortName, &Err);
237+ SetStrValInArray(ParamsVarId, 1, (u8)ShortName, &Err);
237238 }
238239 if (Params) {
239240 for (i=0; i<=ParamCnt; i++) {
@@ -241,7 +242,7 @@
241242 continue;
242243 }
243244 if (Params[i]) {
244- SetStrValInArray(ParamsVarId, i, Params[i], &Err);
245+ SetStrValInArray(ParamsVarId, i, (u8)Params[i], &Err);
245246 free(Params[i]);
246247 }
247248 }
@@ -268,8 +269,11 @@
268269
269270 UnlockVar();
270271
271- ExtractDirName(FileName,Dir);
272+ DirW = ExtractDirNameW(FileName);
273+ Dir = ToU8W(DirW);
272274 TTMSetDir(Dir);
275+ free(DirW);
276+ free(Dir);
273277
274278 if (SleepFlag)
275279 { // synchronization for startup macro
@@ -585,7 +589,7 @@
585589
586590 SetResult(0);
587591 // link to Tera Term
588- if (strlen(TopicName)==0)
592+ if (wcslen(TopicName)==0)
589593 {
590594 switch (mode) {
591595 case RsvConnect:
@@ -595,13 +599,15 @@
595599 strncpy_s(Cmnd, sizeof(Cmnd),CYGTERMCOMMAND, _TRUNCATE);
596600 break;
597601 }
602+ char *TopicNameA = ToCharW(TopicName);
598603 w = HIWORD(HMainWin);
599- Word2HexStr(w,TopicName);
604+ Word2HexStr(w,TopicNameA);
600605 w = LOWORD(HMainWin);
601- Word2HexStr(w,&(TopicName[4]));
602- strncat_s(Cmnd,sizeof(Cmnd),TopicName,_TRUNCATE);
606+ Word2HexStr(w,&(TopicNameA[4]));
607+ strncat_s(Cmnd,sizeof(Cmnd),TopicNameA,_TRUNCATE);
603608 strncat_s(Cmnd,sizeof(Cmnd)," ",_TRUNCATE);
604609 strncat_s(Cmnd,sizeof(Cmnd),Str,_TRUNCATE);
610+ free(TopicNameA);
605611 if (WinExec(Cmnd,SW_SHOW)<32)
606612 return ErrCantConnect;
607613 TTLStatus = IdTTLInitDDE;
@@ -2913,7 +2919,10 @@
29132919 Err = ErrCantOpen;
29142920 return Err;
29152921 }
2916- if (! BuffInclude(Str)) {
2922+ wchar_t *StrW = ToWcharU8(Str);
2923+ BOOL r = BuffInclude(StrW);
2924+ free(StrW);
2925+ if (!r) {
29172926 Err = ErrCantOpen;
29182927 return Err;
29192928 }
--- trunk/teraterm/ttpmacro/ttmbuff.c (revision 9434)
+++ trunk/teraterm/ttpmacro/ttmbuff.c (revision 9435)
@@ -39,6 +39,7 @@
3939 #include "ttmparse.h"
4040 #include "ttlib.h"
4141 #include "fileread.h"
42+#include "codeconv.h"
4243
4344 #include "ttmbuff.h"
4445
@@ -122,9 +123,10 @@
122123 }
123124
124125
125-BOOL LoadMacroFile(PCHAR FileName, int IBuff)
126+static BOOL LoadMacroFile(const wchar_t *FileName, int IBuff)
126127 {
127- char basename[MAX_PATH];
128+ wchar_t basename[MAX_PATH];
129+ char *basenameU8;
128130 size_t Len;
129131
130132 if ((FileName[0]==0) || (IBuff>MAXNESTLEVEL-1)) {
@@ -134,14 +136,15 @@
134136 // includeに成功したファイルから、ファイル名を記録する。
135137 // マクロのエラーダイアログで、ファイル名を表示したいため。
136138 // (2013.9.8 yutaka)
137- if (GetFileTitleA(FileName, basename, sizeof(basename)) != 0)
138- strncpy_s(basename, sizeof(basename), FileName, _TRUNCATE);
139- strncpy_s(&BuffHandleFileName[IBuff][0], MAXFILENAME, basename, _TRUNCATE);
139+ if (GetFileTitleW(FileName, basename, _countof(basename)) != 0)
140+ wcsncpy_s(basename, _countof(basename), FileName, _TRUNCATE);
141+ basenameU8 = ToU8W(basename);
142+ strncpy_s(&BuffHandleFileName[IBuff][0], MAXFILENAME, basenameU8, _TRUNCATE);
143+ free(basenameU8);
140144
141145 BuffPtr[IBuff] = 0;
142146
143-// Buff[IBuff] = LoadFileAA(FileName, &Len);
144- Buff[IBuff] = LoadFileU8A(FileName, &Len);
147+ Buff[IBuff] = LoadFileU8W(FileName, &Len);
145148 if (Buff[IBuff] == NULL) {
146149 BuffLen[IBuff] = 0;
147150 return FALSE;
@@ -344,7 +347,7 @@
344347 return TRUE;
345348 }
346349
347-BOOL InitBuff(PCHAR FileName)
350+BOOL InitBuff(const wchar_t *FileName)
348351 {
349352 int i;
350353
@@ -435,7 +438,7 @@
435438 return 0;
436439 }
437440
438-BOOL BuffInclude(PCHAR FileName)
441+BOOL BuffInclude(const wchar_t *FileName)
439442 {
440443 if (INest>=MAXNESTLEVEL-1) {
441444 return FALSE;
--- trunk/teraterm/ttpmacro/ttmbuff.h (revision 9434)
+++ trunk/teraterm/ttpmacro/ttmbuff.h (revision 9435)
@@ -33,7 +33,7 @@
3333 extern "C" {
3434 #endif
3535
36-BOOL InitBuff(PCHAR FileName);
36+BOOL InitBuff(const wchar_t *FileName);
3737 void CloseBuff(int IBuff);
3838 BOOL GetNewLine();
3939 // goto
@@ -42,7 +42,7 @@
4242 WORD CallToLabel(int ILabel);
4343 WORD ReturnFromSub();
4444 // include file
45-BOOL BuffInclude(PCHAR FileName);
45+BOOL BuffInclude(const wchar_t *FileName);
4646 BOOL ExitBuffer();
4747 // for ... next
4848 int SetForLoop();
--- trunk/teraterm/ttpmacro/ttmdde.c (revision 9434)
+++ trunk/teraterm/ttpmacro/ttmdde.c (revision 9435)
@@ -275,7 +275,7 @@
275275 }
276276
277277 Service= DdeCreateStringHandle(Inst, ServiceName, CP_WINANSI);
278- Topic = DdeCreateStringHandle(Inst, TopicName, CP_WINANSI);
278+ Topic = DdeCreateStringHandleW(Inst, TopicName, CP_WINANSI);
279279 Item = DdeCreateStringHandle(Inst, ItemName, CP_WINANSI);
280280 Item2 = DdeCreateStringHandle(Inst, ItemName2, CP_WINANSI);
281281 if ((Service==0) || (Topic==0) ||
--- trunk/teraterm/ttpmacro/ttmdlg.cpp (revision 9434)
+++ trunk/teraterm/ttpmacro/ttmdlg.cpp (revision 9435)
@@ -57,10 +57,10 @@
5757
5858 char HomeDir[MAX_PATH];
5959 wchar_t *HomeDirW;
60-char FileName[MAX_PATH];
61-char TopicName[11];
62-char ShortName[MAX_PATH];
63-char **Params = NULL;
60+wchar_t FileName[MAX_PATH];
61+wchar_t TopicName[11];
62+wchar_t ShortName[MAX_PATH];
63+wchar_t **Params = NULL;
6464 int ParamCnt;
6565 int ParamsSize;
6666 BOOL SleepFlag;
@@ -73,10 +73,9 @@
7373
7474 void ParseParam(PBOOL IOption, PBOOL VOption)
7575 {
76- int dirlen, fnpos;
77- char *Param, **ptmp;
78- char Temp[MaxStrLen];
79- PCHAR start, cur, next;
76+ wchar_t *Param, **ptmp;
77+ wchar_t Temp[MaxStrLen];
78+ wchar_t *start, *cur, *next;
8079
8180 // go home directory
8281 _chdir(HomeDir);
@@ -87,35 +86,35 @@
8786 SleepFlag = FALSE;
8887 *IOption = FALSE;
8988 *VOption = FALSE;
90- Param = GetCommandLineA();
89+ Param = GetCommandLineW();
9190
9291 ParamsSize = 50;
93- Params = (char **)malloc(sizeof(char*) * ParamsSize);
92+ Params = (wchar_t **)malloc(sizeof(wchar_t *) * ParamsSize);
9493 if (Params) {
95- Params[0] = _strdup(Param);
94+ Params[0] = _wcsdup(Param);
9695 Params[1] = NULL;
9796 }
9897
9998 // the first term shuld be executable filename of TTMACRO
100- start = GetParam(Temp, sizeof(Temp), Param);
99+ start = GetParam(Temp, _countof(Temp), Param);
101100 ParamCnt = 0;
102101
103102 for (cur = start; next = GetParam(Temp, sizeof(Temp), cur); cur = next) {
104- DequoteParam(Temp, sizeof(Temp), Temp);
103+ DequoteParam(Temp, _countof(Temp), Temp);
105104 if (ParamCnt == 0) {
106- if (_strnicmp(Temp,"/D=",3)==0) { // DDE option
107- strncpy_s(TopicName, sizeof(TopicName), &Temp[3], _TRUNCATE);
105+ if (_wcsnicmp(Temp,L"/D=",3)==0) { // DDE option
106+ wcsncpy_s(TopicName, _countof(TopicName), &Temp[3], _TRUNCATE);
108107 continue;
109108 }
110- else if (_stricmp(Temp, "/I")==0) {
109+ else if (_wcsicmp(Temp, L"/I")==0) {
111110 *IOption = TRUE;
112111 continue;
113112 }
114- else if (_stricmp(Temp, "/S")==0) {
113+ else if (_wcsicmp(Temp, L"/S")==0) {
115114 SleepFlag = TRUE;
116115 continue;
117116 }
118- else if (_stricmp(Temp, "/V")==0) {
117+ else if (_wcsicmp(Temp, L"/V")==0) {
119118 *VOption = TRUE;
120119 continue;
121120 }
@@ -122,7 +121,7 @@
122121 }
123122
124123 if (++ParamCnt == 1) {
125- strncpy_s(FileName, sizeof(FileName), Temp, _TRUNCATE);
124+ wcsncpy_s(FileName, _countof(FileName), Temp, _TRUNCATE);
126125 if (Params == NULL) {
127126 break;
128127 }
@@ -130,7 +129,7 @@
130129 else {
131130 if (ParamsSize <= ParamCnt) {
132131 ParamsSize += 10;
133- ptmp = (char **)realloc(Params, sizeof(char*) * ParamsSize);
132+ ptmp = (wchar_t **)realloc(Params, sizeof(wchar_t*) * ParamsSize);
134133 if (ptmp == NULL) {
135134 ParamCnt--;
136135 break;
@@ -137,7 +136,7 @@
137136 }
138137 Params = ptmp;
139138 }
140- Params[ParamCnt] = _strdup(Temp);
139+ Params[ParamCnt] = _wcsdup(Temp);
141140 }
142141 }
143142
@@ -145,17 +144,18 @@
145144 FileName[0] = 0;
146145 }
147146 else if (FileName[0]!=0) {
148- if (GetFileNamePos(FileName, &dirlen, &fnpos)) {
149- FitFileName(&FileName[fnpos], sizeof(FileName) - fnpos, ".TTL");
150- strncpy_s(ShortName, sizeof(ShortName), &FileName[fnpos], _TRUNCATE);
147+ size_t dirlen, fnpos;
148+ if (GetFileNamePosW(FileName, &dirlen, &fnpos)) {
149+ FitFileNameW(&FileName[fnpos], _countof(FileName) - fnpos, L".TTL");
150+ wcsncpy_s(ShortName, _countof(ShortName), &FileName[fnpos], _TRUNCATE);
151151 if (dirlen==0) {
152- strncpy_s(FileName, sizeof(FileName), HomeDir, _TRUNCATE);
153- AppendSlash(FileName, sizeof(FileName));
154- strncat_s(FileName, sizeof(FileName), ShortName, _TRUNCATE);
152+ wcsncpy_s(FileName, _countof(FileName), HomeDirW, _TRUNCATE);
153+ AppendSlashW(FileName, _countof(FileName));
154+ wcsncat_s(FileName, _countof(FileName), ShortName, _TRUNCATE);
155155 }
156156
157157 if (Params) {
158- Params[1] = _strdup(ShortName);
158+ Params[1] = _wcsdup(ShortName);
159159 }
160160 }
161161 else {
@@ -166,9 +166,9 @@
166166
167167 BOOL GetFileName(HWND HWin)
168168 {
169- char FNFilter[31];
170- OPENFILENAME FNameRec;
171- char uimsg[MAX_UIMSG], uimsg2[MAX_UIMSG];
169+ wchar_t FNFilter[31];
170+ OPENFILENAMEW FNameRec;
171+ wchar_t uimsg[MAX_UIMSG], uimsg2[MAX_UIMSG];
172172
173173 if (FileName[0]!=0) {
174174 return FALSE;
@@ -176,11 +176,11 @@
176176
177177 memset(FNFilter, 0, sizeof(FNFilter));
178178 memset(&FNameRec, 0, sizeof(OPENFILENAME));
179- get_lang_msg("FILEDLG_OPEN_MACRO_FILTER", uimsg, sizeof(uimsg), "Macro files (*.ttl)\\0*.ttl\\0\\0", UILanguageFile);
179+ get_lang_msgW("FILEDLG_OPEN_MACRO_FILTER", uimsg, sizeof(uimsg), L"Macro files (*.ttl)\\0*.ttl\\0\\0", UILanguageFile);
180180 memcpy(FNFilter, uimsg, sizeof(FNFilter));
181181
182182 // sizeof(OPENFILENAME) では Windows98/NT で終了してしまうため (2006.8.14 maya)
183- FNameRec.lStructSize = get_OPENFILENAME_SIZE();
183+ FNameRec.lStructSize = get_OPENFILENAME_SIZEW();
184184 FNameRec.Flags = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
185185 FNameRec.hwndOwner = HWin;
186186 FNameRec.lpstrFilter = FNFilter;
@@ -193,11 +193,11 @@
193193 FNameRec.lpstrInitialDir = HomeDir;
194194 #endif
195195 FNameRec.Flags = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
196- FNameRec.lpstrDefExt = "TTL";
197- get_lang_msg("FILEDLG_OPEN_MACRO_TITLE", uimsg2, sizeof(uimsg2), "MACRO: Open macro", UILanguageFile);
196+ FNameRec.lpstrDefExt = L"TTL";
197+ get_lang_msgW("FILEDLG_OPEN_MACRO_TITLE", uimsg2, sizeof(uimsg2), L"MACRO: Open macro", UILanguageFile);
198198 FNameRec.lpstrTitle = uimsg2;
199- if (GetOpenFileName(&FNameRec)) {
200- strncpy_s(ShortName, sizeof(ShortName), &(FileName[FNameRec.nFileOffset]), _TRUNCATE);
199+ if (GetOpenFileNameW(&FNameRec)) {
200+ wcsncpy_s(ShortName, _countof(ShortName), &(FileName[FNameRec.nFileOffset]), _TRUNCATE);
201201 }
202202 else {
203203 FileName[0] = 0;
--- trunk/teraterm/ttpmacro/ttmdlg.h (revision 9434)
+++ trunk/teraterm/ttpmacro/ttmdlg.h (revision 9435)
@@ -52,10 +52,10 @@
5252
5353 extern char HomeDir[MAX_PATH];
5454 extern wchar_t *HomeDirW;
55-extern char FileName[MAX_PATH];
56-extern char TopicName[11];
57-extern char ShortName[MAX_PATH];
58-extern char **Params;
55+extern wchar_t FileName[MAX_PATH];
56+extern wchar_t TopicName[11];
57+extern wchar_t ShortName[MAX_PATH];
58+extern wchar_t **Params;
5959 extern int ParamCnt;
6060 extern BOOL SleepFlag;
6161
--- trunk/teraterm/ttpmacro/ttmmain.cpp (revision 9434)
+++ trunk/teraterm/ttpmacro/ttmmain.cpp (revision 9435)
@@ -250,7 +250,6 @@
250250 { IDC_CTRLPAUSESTART, "BTN_PAUSE" },
251251 { IDC_CTRLEND, "BTN_END" },
252252 };
253- char Temp[MAX_PATH + 8]; // MAX_PATH + "MACRO - "(8)
254253 BOOL IOption, VOption;
255254 int CmdShow;
256255 int fuLoad = LR_DEFAULTCOLOR;
@@ -293,9 +292,10 @@
293292 // wait4all
294293 register_macro_window(GetSafeHwnd());
295294
296- strncpy_s(Temp, sizeof(Temp), "MACRO - ", _TRUNCATE);
297- strncat_s(Temp, sizeof(Temp), ShortName, _TRUNCATE);
298- SetWindowText(Temp);
295+ wchar_t Temp[MAX_PATH + 8]; // MAX_PATH + "MACRO - "(8)
296+ wcsncpy_s(Temp, _countof(Temp), L"MACRO - ", _TRUNCATE);
297+ wcsncat_s(Temp, _countof(Temp), ShortName, _TRUNCATE);
298+ SetWindowTextW(Temp);
299299
300300 // send the initialization signal to TT
301301 SendCmnd(CmdInit,0);
--- trunk/teraterm/ttpmacro/ttmparse.cpp (revision 9434)
+++ trunk/teraterm/ttpmacro/ttmparse.cpp (revision 9435)
@@ -1935,7 +1935,7 @@
19351935 }
19361936 }
19371937
1938-void SetStrValInArray(TVarId VarId, int Index, PCHAR Str, LPWORD Err)
1938+void SetStrValInArray(TVarId VarId, int Index, const char *Str, LPWORD Err)
19391939 {
19401940 TVarId id;
19411941
--- trunk/teraterm/ttpmacro/ttmparse.h (revision 9434)
+++ trunk/teraterm/ttpmacro/ttmparse.h (revision 9435)
@@ -355,7 +355,7 @@
355355 void GetAryVar(PVarId VarId, WORD VarType, LPWORD Err);
356356 void GetAryVarByName(PVarId VarId, const char *Name, WORD VarType, LPWORD Err);
357357 void SetIntValInArray(TVarId VarId, int Index, int Val, LPWORD Err);
358-void SetStrValInArray(TVarId VarId, int Index, PCHAR Str, LPWORD Err);
358+void SetStrValInArray(TVarId VarId, int Index, const char *Str, LPWORD Err);
359359 int GetIntAryVarSize(TVarId VarId);
360360 int GetStrAryVarSize(TVarId VarId);
361361
Show on old repository browser