Commit 815a26b811dfb1f7f9ff16b19666d6cd6296656b
1 parent
39e75777
Exists in
master
and in
3 other branches
Fixing charset update error.
Showing
1 changed file
with
18 additions
and
3 deletions
Show diff stats
src/core/charset/charset.c
... | ... | @@ -225,6 +225,8 @@ LIB3270_EXPORT void lib3270_reset_charset(H3270 *hSession, const char * host, co |
225 | 225 | if(!display) |
226 | 226 | display = "ISO-8859-1"; |
227 | 227 | |
228 | + debug("%s(%s,%s)",__FUNCTION__,host,display); | |
229 | + | |
228 | 230 | replace_pointer(hSession->charset.host, host); |
229 | 231 | replace_pointer(hSession->charset.display,display); |
230 | 232 | |
... | ... | @@ -244,14 +246,25 @@ LIB3270_EXPORT int lib3270_set_host_charset(H3270 *hSession, const char *name) |
244 | 246 | { |
245 | 247 | int f; |
246 | 248 | |
247 | - if(!name) | |
249 | + debug("%s(%s)",__FUNCTION__,name); | |
250 | + | |
251 | + if(name && hSession->charset.host && !strcasecmp(name,hSession->charset.host)) | |
248 | 252 | { |
249 | - lib3270_reset_charset(hSession,"us","ISO-8859-1", LIB3270_DEFAULT_CGEN | LIB3270_DEFAULT_CSET); | |
253 | + debug("Charset is \"%s\", returning",hSession->charset.host); | |
250 | 254 | return 0; |
251 | 255 | } |
252 | 256 | |
253 | - if(hSession->charset.host && !strcasecmp(name,hSession->charset.host)) | |
257 | + if(!name) | |
258 | + { | |
259 | + name = hSession->charset.host; | |
260 | + debug("Resetting to charset \"%s\"",name); | |
261 | + } | |
262 | + | |
263 | + if(!name) | |
264 | + { | |
265 | + lib3270_reset_charset(hSession, NULL, NULL, LIB3270_DEFAULT_CGEN | LIB3270_DEFAULT_CSET); | |
254 | 266 | return 0; |
267 | + } | |
255 | 268 | |
256 | 269 | for(f=0;charset[f].name != NULL;f++) |
257 | 270 | { |
... | ... | @@ -267,10 +280,12 @@ LIB3270_EXPORT int lib3270_set_host_charset(H3270 *hSession, const char *name) |
267 | 280 | for(c=0;charset[f].chr[c];c+=2) |
268 | 281 | lib3270_remap_char(hSession,charset[f].chr[c],charset[f].chr[c+1], BOTH, 0); |
269 | 282 | |
283 | + debug("Charset is now \"%s\"",charset[f].name); | |
270 | 284 | return 0; |
271 | 285 | } |
272 | 286 | } |
273 | 287 | |
288 | + debug("%s: %s",__FUNCTION__,strerror(EINVAL)); | |
274 | 289 | return errno = EINVAL; |
275 | 290 | |
276 | 291 | } | ... | ... |