ttpmacro コマンドライン Unicode化
@@ -182,7 +182,8 @@ | ||
182 | 182 | BOOL InitTTL(HWND HWin) |
183 | 183 | { |
184 | 184 | int i; |
185 | - TStrVal Dir; | |
185 | + wchar_t *DirW; | |
186 | + char *Dir; | |
186 | 187 | TVarId ParamsVarId; |
187 | 188 | char tmpname[10]; |
188 | 189 | WORD Err; |
@@ -214,12 +215,12 @@ | ||
214 | 215 | NewIntVar("paramcnt",ParamCnt); // ファイル名も含む引数の個数 (2012.4.10 yutaka) |
215 | 216 | |
216 | 217 | // 旧形式のパラメータ設定 (param1 〜 param9) |
217 | - NewStrVar("param1", ShortName); | |
218 | + NewStrVar("param1", (u8)ShortName); | |
218 | 219 | if (Params) { |
219 | 220 | for (i=2; i<=9; i++) { |
220 | 221 | _snprintf_s(tmpname, sizeof(tmpname), _TRUNCATE, "param%d", i); |
221 | 222 | if (ParamCnt >= i && Params[i] != NULL) { |
222 | - NewStrVar(tmpname, Params[i]); | |
223 | + NewStrVar(tmpname, (u8)Params[i]); | |
223 | 224 | } |
224 | 225 | else { |
225 | 226 | NewStrVar(tmpname, ""); |
@@ -233,7 +234,7 @@ | ||
233 | 234 | GetStrAryVarByName(&ParamsVarId, "params", &Err); |
234 | 235 | if (Err == 0) { |
235 | 236 | if (ShortName[0] != 0) { |
236 | - SetStrValInArray(ParamsVarId, 1, ShortName, &Err); | |
237 | + SetStrValInArray(ParamsVarId, 1, (u8)ShortName, &Err); | |
237 | 238 | } |
238 | 239 | if (Params) { |
239 | 240 | for (i=0; i<=ParamCnt; i++) { |
@@ -241,7 +242,7 @@ | ||
241 | 242 | continue; |
242 | 243 | } |
243 | 244 | if (Params[i]) { |
244 | - SetStrValInArray(ParamsVarId, i, Params[i], &Err); | |
245 | + SetStrValInArray(ParamsVarId, i, (u8)Params[i], &Err); | |
245 | 246 | free(Params[i]); |
246 | 247 | } |
247 | 248 | } |
@@ -268,8 +269,11 @@ | ||
268 | 269 | |
269 | 270 | UnlockVar(); |
270 | 271 | |
271 | - ExtractDirName(FileName,Dir); | |
272 | + DirW = ExtractDirNameW(FileName); | |
273 | + Dir = ToU8W(DirW); | |
272 | 274 | TTMSetDir(Dir); |
275 | + free(DirW); | |
276 | + free(Dir); | |
273 | 277 | |
274 | 278 | if (SleepFlag) |
275 | 279 | { // synchronization for startup macro |
@@ -585,7 +589,7 @@ | ||
585 | 589 | |
586 | 590 | SetResult(0); |
587 | 591 | // link to Tera Term |
588 | - if (strlen(TopicName)==0) | |
592 | + if (wcslen(TopicName)==0) | |
589 | 593 | { |
590 | 594 | switch (mode) { |
591 | 595 | case RsvConnect: |
@@ -595,13 +599,15 @@ | ||
595 | 599 | strncpy_s(Cmnd, sizeof(Cmnd),CYGTERMCOMMAND, _TRUNCATE); |
596 | 600 | break; |
597 | 601 | } |
602 | + char *TopicNameA = ToCharW(TopicName); | |
598 | 603 | w = HIWORD(HMainWin); |
599 | - Word2HexStr(w,TopicName); | |
604 | + Word2HexStr(w,TopicNameA); | |
600 | 605 | 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); | |
603 | 608 | strncat_s(Cmnd,sizeof(Cmnd)," ",_TRUNCATE); |
604 | 609 | strncat_s(Cmnd,sizeof(Cmnd),Str,_TRUNCATE); |
610 | + free(TopicNameA); | |
605 | 611 | if (WinExec(Cmnd,SW_SHOW)<32) |
606 | 612 | return ErrCantConnect; |
607 | 613 | TTLStatus = IdTTLInitDDE; |
@@ -2913,7 +2919,10 @@ | ||
2913 | 2919 | Err = ErrCantOpen; |
2914 | 2920 | return Err; |
2915 | 2921 | } |
2916 | - if (! BuffInclude(Str)) { | |
2922 | + wchar_t *StrW = ToWcharU8(Str); | |
2923 | + BOOL r = BuffInclude(StrW); | |
2924 | + free(StrW); | |
2925 | + if (!r) { | |
2917 | 2926 | Err = ErrCantOpen; |
2918 | 2927 | return Err; |
2919 | 2928 | } |
@@ -39,6 +39,7 @@ | ||
39 | 39 | #include "ttmparse.h" |
40 | 40 | #include "ttlib.h" |
41 | 41 | #include "fileread.h" |
42 | +#include "codeconv.h" | |
42 | 43 | |
43 | 44 | #include "ttmbuff.h" |
44 | 45 |
@@ -122,9 +123,10 @@ | ||
122 | 123 | } |
123 | 124 | |
124 | 125 | |
125 | -BOOL LoadMacroFile(PCHAR FileName, int IBuff) | |
126 | +static BOOL LoadMacroFile(const wchar_t *FileName, int IBuff) | |
126 | 127 | { |
127 | - char basename[MAX_PATH]; | |
128 | + wchar_t basename[MAX_PATH]; | |
129 | + char *basenameU8; | |
128 | 130 | size_t Len; |
129 | 131 | |
130 | 132 | if ((FileName[0]==0) || (IBuff>MAXNESTLEVEL-1)) { |
@@ -134,14 +136,15 @@ | ||
134 | 136 | // includeに成功したファイルから、ファイル名を記録する。 |
135 | 137 | // マクロのエラーダイアログで、ファイル名を表示したいため。 |
136 | 138 | // (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); | |
140 | 144 | |
141 | 145 | BuffPtr[IBuff] = 0; |
142 | 146 | |
143 | -// Buff[IBuff] = LoadFileAA(FileName, &Len); | |
144 | - Buff[IBuff] = LoadFileU8A(FileName, &Len); | |
147 | + Buff[IBuff] = LoadFileU8W(FileName, &Len); | |
145 | 148 | if (Buff[IBuff] == NULL) { |
146 | 149 | BuffLen[IBuff] = 0; |
147 | 150 | return FALSE; |
@@ -344,7 +347,7 @@ | ||
344 | 347 | return TRUE; |
345 | 348 | } |
346 | 349 | |
347 | -BOOL InitBuff(PCHAR FileName) | |
350 | +BOOL InitBuff(const wchar_t *FileName) | |
348 | 351 | { |
349 | 352 | int i; |
350 | 353 |
@@ -435,7 +438,7 @@ | ||
435 | 438 | return 0; |
436 | 439 | } |
437 | 440 | |
438 | -BOOL BuffInclude(PCHAR FileName) | |
441 | +BOOL BuffInclude(const wchar_t *FileName) | |
439 | 442 | { |
440 | 443 | if (INest>=MAXNESTLEVEL-1) { |
441 | 444 | return FALSE; |
@@ -33,7 +33,7 @@ | ||
33 | 33 | extern "C" { |
34 | 34 | #endif |
35 | 35 | |
36 | -BOOL InitBuff(PCHAR FileName); | |
36 | +BOOL InitBuff(const wchar_t *FileName); | |
37 | 37 | void CloseBuff(int IBuff); |
38 | 38 | BOOL GetNewLine(); |
39 | 39 | // goto |
@@ -42,7 +42,7 @@ | ||
42 | 42 | WORD CallToLabel(int ILabel); |
43 | 43 | WORD ReturnFromSub(); |
44 | 44 | // include file |
45 | -BOOL BuffInclude(PCHAR FileName); | |
45 | +BOOL BuffInclude(const wchar_t *FileName); | |
46 | 46 | BOOL ExitBuffer(); |
47 | 47 | // for ... next |
48 | 48 | int SetForLoop(); |
@@ -275,7 +275,7 @@ | ||
275 | 275 | } |
276 | 276 | |
277 | 277 | Service= DdeCreateStringHandle(Inst, ServiceName, CP_WINANSI); |
278 | - Topic = DdeCreateStringHandle(Inst, TopicName, CP_WINANSI); | |
278 | + Topic = DdeCreateStringHandleW(Inst, TopicName, CP_WINANSI); | |
279 | 279 | Item = DdeCreateStringHandle(Inst, ItemName, CP_WINANSI); |
280 | 280 | Item2 = DdeCreateStringHandle(Inst, ItemName2, CP_WINANSI); |
281 | 281 | if ((Service==0) || (Topic==0) || |
@@ -57,10 +57,10 @@ | ||
57 | 57 | |
58 | 58 | char HomeDir[MAX_PATH]; |
59 | 59 | 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; | |
64 | 64 | int ParamCnt; |
65 | 65 | int ParamsSize; |
66 | 66 | BOOL SleepFlag; |
@@ -73,10 +73,9 @@ | ||
73 | 73 | |
74 | 74 | void ParseParam(PBOOL IOption, PBOOL VOption) |
75 | 75 | { |
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; | |
80 | 79 | |
81 | 80 | // go home directory |
82 | 81 | _chdir(HomeDir); |
@@ -87,35 +86,35 @@ | ||
87 | 86 | SleepFlag = FALSE; |
88 | 87 | *IOption = FALSE; |
89 | 88 | *VOption = FALSE; |
90 | - Param = GetCommandLineA(); | |
89 | + Param = GetCommandLineW(); | |
91 | 90 | |
92 | 91 | ParamsSize = 50; |
93 | - Params = (char **)malloc(sizeof(char*) * ParamsSize); | |
92 | + Params = (wchar_t **)malloc(sizeof(wchar_t *) * ParamsSize); | |
94 | 93 | if (Params) { |
95 | - Params[0] = _strdup(Param); | |
94 | + Params[0] = _wcsdup(Param); | |
96 | 95 | Params[1] = NULL; |
97 | 96 | } |
98 | 97 | |
99 | 98 | // the first term shuld be executable filename of TTMACRO |
100 | - start = GetParam(Temp, sizeof(Temp), Param); | |
99 | + start = GetParam(Temp, _countof(Temp), Param); | |
101 | 100 | ParamCnt = 0; |
102 | 101 | |
103 | 102 | for (cur = start; next = GetParam(Temp, sizeof(Temp), cur); cur = next) { |
104 | - DequoteParam(Temp, sizeof(Temp), Temp); | |
103 | + DequoteParam(Temp, _countof(Temp), Temp); | |
105 | 104 | 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); | |
108 | 107 | continue; |
109 | 108 | } |
110 | - else if (_stricmp(Temp, "/I")==0) { | |
109 | + else if (_wcsicmp(Temp, L"/I")==0) { | |
111 | 110 | *IOption = TRUE; |
112 | 111 | continue; |
113 | 112 | } |
114 | - else if (_stricmp(Temp, "/S")==0) { | |
113 | + else if (_wcsicmp(Temp, L"/S")==0) { | |
115 | 114 | SleepFlag = TRUE; |
116 | 115 | continue; |
117 | 116 | } |
118 | - else if (_stricmp(Temp, "/V")==0) { | |
117 | + else if (_wcsicmp(Temp, L"/V")==0) { | |
119 | 118 | *VOption = TRUE; |
120 | 119 | continue; |
121 | 120 | } |
@@ -122,7 +121,7 @@ | ||
122 | 121 | } |
123 | 122 | |
124 | 123 | if (++ParamCnt == 1) { |
125 | - strncpy_s(FileName, sizeof(FileName), Temp, _TRUNCATE); | |
124 | + wcsncpy_s(FileName, _countof(FileName), Temp, _TRUNCATE); | |
126 | 125 | if (Params == NULL) { |
127 | 126 | break; |
128 | 127 | } |
@@ -130,7 +129,7 @@ | ||
130 | 129 | else { |
131 | 130 | if (ParamsSize <= ParamCnt) { |
132 | 131 | ParamsSize += 10; |
133 | - ptmp = (char **)realloc(Params, sizeof(char*) * ParamsSize); | |
132 | + ptmp = (wchar_t **)realloc(Params, sizeof(wchar_t*) * ParamsSize); | |
134 | 133 | if (ptmp == NULL) { |
135 | 134 | ParamCnt--; |
136 | 135 | break; |
@@ -137,7 +136,7 @@ | ||
137 | 136 | } |
138 | 137 | Params = ptmp; |
139 | 138 | } |
140 | - Params[ParamCnt] = _strdup(Temp); | |
139 | + Params[ParamCnt] = _wcsdup(Temp); | |
141 | 140 | } |
142 | 141 | } |
143 | 142 |
@@ -145,17 +144,18 @@ | ||
145 | 144 | FileName[0] = 0; |
146 | 145 | } |
147 | 146 | 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); | |
151 | 151 | 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); | |
155 | 155 | } |
156 | 156 | |
157 | 157 | if (Params) { |
158 | - Params[1] = _strdup(ShortName); | |
158 | + Params[1] = _wcsdup(ShortName); | |
159 | 159 | } |
160 | 160 | } |
161 | 161 | else { |
@@ -166,9 +166,9 @@ | ||
166 | 166 | |
167 | 167 | BOOL GetFileName(HWND HWin) |
168 | 168 | { |
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]; | |
172 | 172 | |
173 | 173 | if (FileName[0]!=0) { |
174 | 174 | return FALSE; |
@@ -176,11 +176,11 @@ | ||
176 | 176 | |
177 | 177 | memset(FNFilter, 0, sizeof(FNFilter)); |
178 | 178 | 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); | |
180 | 180 | memcpy(FNFilter, uimsg, sizeof(FNFilter)); |
181 | 181 | |
182 | 182 | // sizeof(OPENFILENAME) では Windows98/NT で終了してしまうため (2006.8.14 maya) |
183 | - FNameRec.lStructSize = get_OPENFILENAME_SIZE(); | |
183 | + FNameRec.lStructSize = get_OPENFILENAME_SIZEW(); | |
184 | 184 | FNameRec.Flags = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY; |
185 | 185 | FNameRec.hwndOwner = HWin; |
186 | 186 | FNameRec.lpstrFilter = FNFilter; |
@@ -193,11 +193,11 @@ | ||
193 | 193 | FNameRec.lpstrInitialDir = HomeDir; |
194 | 194 | #endif |
195 | 195 | 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); | |
198 | 198 | 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); | |
201 | 201 | } |
202 | 202 | else { |
203 | 203 | FileName[0] = 0; |
@@ -52,10 +52,10 @@ | ||
52 | 52 | |
53 | 53 | extern char HomeDir[MAX_PATH]; |
54 | 54 | 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; | |
59 | 59 | extern int ParamCnt; |
60 | 60 | extern BOOL SleepFlag; |
61 | 61 |
@@ -250,7 +250,6 @@ | ||
250 | 250 | { IDC_CTRLPAUSESTART, "BTN_PAUSE" }, |
251 | 251 | { IDC_CTRLEND, "BTN_END" }, |
252 | 252 | }; |
253 | - char Temp[MAX_PATH + 8]; // MAX_PATH + "MACRO - "(8) | |
254 | 253 | BOOL IOption, VOption; |
255 | 254 | int CmdShow; |
256 | 255 | int fuLoad = LR_DEFAULTCOLOR; |
@@ -293,9 +292,10 @@ | ||
293 | 292 | // wait4all |
294 | 293 | register_macro_window(GetSafeHwnd()); |
295 | 294 | |
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); | |
299 | 299 | |
300 | 300 | // send the initialization signal to TT |
301 | 301 | SendCmnd(CmdInit,0); |
@@ -1935,7 +1935,7 @@ | ||
1935 | 1935 | } |
1936 | 1936 | } |
1937 | 1937 | |
1938 | -void SetStrValInArray(TVarId VarId, int Index, PCHAR Str, LPWORD Err) | |
1938 | +void SetStrValInArray(TVarId VarId, int Index, const char *Str, LPWORD Err) | |
1939 | 1939 | { |
1940 | 1940 | TVarId id; |
1941 | 1941 |
@@ -355,7 +355,7 @@ | ||
355 | 355 | void GetAryVar(PVarId VarId, WORD VarType, LPWORD Err); |
356 | 356 | void GetAryVarByName(PVarId VarId, const char *Name, WORD VarType, LPWORD Err); |
357 | 357 | 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); | |
359 | 359 | int GetIntAryVarSize(TVarId VarId); |
360 | 360 | int GetStrAryVarSize(TVarId VarId); |
361 | 361 |