Changeset 4961:78b424bf7c5a for charset.c
Legend:
- Unmodified
- Added
- Removed
-
charset.c
r4932 r4961 319 319 320 320 /* 321 * Like iconv_open, but canonicalises the charsets 321 * Like iconv_open, but canonicalises the charsets, applies 322 * charset-hooks, recanonicalises, and finally applies iconv-hooks. 323 * Parameter flags=0 skips charset-hooks, while M_ICONV_HOOK_FROM 324 * applies them to fromcode. 322 325 */ 323 326 … … 330 333 331 334 iconv_t cd; 332 335 336 /* transform to MIME preferred charset names */ 333 337 mutt_canonical_charset (tocode1, sizeof (tocode1), tocode); 334 338 … … 340 344 341 345 mutt_canonical_charset (fromcode1, sizeof (fromcode1), fromcode); 346 347 /* maybe apply charset-hooks and recanonicalise fromcode, 348 * but only when caller asked us to sanitize a potentialy wrong 349 * charset name incoming from the wild exterior. */ 342 350 if ((flags & M_ICONV_HOOK_FROM) && (tmp = mutt_charset_hook (fromcode1))) 343 351 mutt_canonical_charset (fromcode1, sizeof (fromcode1), tmp); 344 352 345 if ((cd = iconv_open (tocode1, fromcode1)) != (iconv_t) -1) 353 /* always apply iconv-hooks to suit system's iconv tastes */ 354 tocode2 = mutt_iconv_hook (tocode1); 355 tocode2 = (tocode2) ? tocode2 : tocode1; 356 fromcode2 = mutt_iconv_hook (fromcode1); 357 fromcode2 = (fromcode2) ? fromcode2 : fromcode1; 358 359 /* call system iconv with names it appreciates */ 360 if ((cd = iconv_open (tocode2, fromcode2)) != (iconv_t) -1) 346 361 return cd; 347 if ((tocode2 = mutt_iconv_hook (tocode1)) && (fromcode2 = mutt_iconv_hook (fromcode1)))348 return iconv_open (tocode2, fromcode2);349 362 350 363 return (iconv_t) -1;
