Commit 394595afdf0a74327fba1c6ed7dd72952782d918
1 parent
a9bf66c0
Exists in
master
and in
5 other branches
Iniciando implementação do "remap" de caracteres.
Showing
2 changed files
with
23 additions
and
3 deletions
Show diff stats
src/include/lib3270/charset.h
... | ... | @@ -60,7 +60,8 @@ |
60 | 60 | |
61 | 61 | LIB3270_EXPORT int lib3270_set_host_charset(H3270 *hSession, const char *name); |
62 | 62 | LIB3270_EXPORT const char * lib3270_get_host_charset(H3270 *hSession); |
63 | - LIB3270_EXPORT void lib3270_remap(H3270 *hSession, unsigned short ebc, unsigned short iso, lib3270_remap_scope scope, unsigned char one_way); | |
63 | + LIB3270_EXPORT void lib3270_remap(H3270 *hSession,const char *host, const char *display, unsigned long cgcsgid, const unsigned short *chr); | |
64 | + LIB3270_EXPORT void lib3270_remap_char(H3270 *hSession, unsigned short ebc, unsigned short iso, lib3270_remap_scope scope, unsigned char one_way); | |
64 | 65 | LIB3270_EXPORT const char * lib3270_ebc2asc(H3270 *hSession, unsigned char *buffer, int sz); |
65 | 66 | LIB3270_EXPORT const char * lib3270_asc2ebc(H3270 *hSession, unsigned char *buffer, int sz); |
66 | 67 | ... | ... |
src/lib3270/charset.c
... | ... | @@ -255,6 +255,21 @@ static void copy_charset(const unsigned short *from, unsigned short *to) |
255 | 255 | to[f+UT_OFFSET] = from[f]; |
256 | 256 | } |
257 | 257 | |
258 | +LIB3270_EXPORT void lib3270_remap(H3270 *hSession,const char *host, const char *display, unsigned long cgcsgid, const unsigned short *chr) | |
259 | +{ | |
260 | + int c; | |
261 | + | |
262 | + hSession->charset.host = host; | |
263 | + hSession->charset.display = display; | |
264 | + hSession->charset.cgcsgid = cgcsgid; | |
265 | + | |
266 | + for(c=0;chr[c];c+=2) | |
267 | + { | |
268 | + lib3270_remap_char(hSession,chr[c],chr[c+1], BOTH, 0); | |
269 | + } | |
270 | + | |
271 | +} | |
272 | + | |
258 | 273 | LIB3270_EXPORT int lib3270_set_host_charset(H3270 *hSession, const char *name) |
259 | 274 | { |
260 | 275 | int f; |
... | ... | @@ -271,6 +286,7 @@ LIB3270_EXPORT int lib3270_set_host_charset(H3270 *hSession, const char *name) |
271 | 286 | |
272 | 287 | for(f=0;f<UT_OFFSET;f++) |
273 | 288 | hSession->charset.asc2uc[f] = f; |
289 | + | |
274 | 290 | copy_charset(asc2uc,hSession->charset.asc2uc); |
275 | 291 | |
276 | 292 | /* |
... | ... | @@ -288,13 +304,16 @@ LIB3270_EXPORT int lib3270_set_host_charset(H3270 *hSession, const char *name) |
288 | 304 | if(!strcasecmp(name,charset[f].name)) |
289 | 305 | { |
290 | 306 | // Found required charset |
307 | + lib3270_remap(hSession,charset[f].name,"ISO-8859-1",charset[f].cgcsgid,charset[f].chr); | |
308 | + /* | |
291 | 309 | int c; |
292 | 310 | |
293 | 311 | hSession->charset.host = charset[f].name; |
294 | 312 | hSession->charset.cgcsgid = charset[f].cgcsgid; |
295 | 313 | |
296 | 314 | for(c=0;charset[f].chr[c];c+=2) |
297 | - lib3270_remap(hSession,charset[f].chr[c],charset[f].chr[c+1], BOTH, 0); | |
315 | + lib3270_remap_char(hSession,charset[f].chr[c],charset[f].chr[c+1], BOTH, 0); | |
316 | + */ | |
298 | 317 | return 0; |
299 | 318 | } |
300 | 319 | } |
... | ... | @@ -438,7 +457,7 @@ LIB3270_EXPORT const char * lib3270_ebc2asc(H3270 *hSession, unsigned char *buff |
438 | 457 | |
439 | 458 | |
440 | 459 | // Process a single character definition. |
441 | -LIB3270_EXPORT void lib3270_remap(H3270 *hSession, unsigned short ebc, unsigned short iso, lib3270_remap_scope scope, unsigned char one_way) | |
460 | +LIB3270_EXPORT void lib3270_remap_char(H3270 *hSession, unsigned short ebc, unsigned short iso, lib3270_remap_scope scope, unsigned char one_way) | |
442 | 461 | { |
443 | 462 | // unsigned char cg; |
444 | 463 | CHECK_SESSION_HANDLE(hSession); | ... | ... |