On 2013-09-05 11:34 PM, Jeremy Allison wrote: > No, it doesn't make sense. smb_iconv() vectors > through pull and push function pointers that > do the actual conversion - that's where the > errno is coming from. That's why you need > debug statements - you know it's going into > smb_iconv() but you don't know where it's > going from there. > > Jeremy. >
At least those proved that neither Solaris' nor GNU's iconv were involved :-) I tagged all the possibles causes for EILSEQ, so here's the code causing that issue, in lib/util/charset/iconv.c: if ((c[0] & 0xf0) == 0xe0) { if (in_left < 3 || (c[1] & 0xc0) != 0x80 || (c[2] & 0xc0) != 0x80) { errno = EILSEQ; DEBUG(3,("DEBUG, %d, %d, %d, %d\n", in_left, c[0], c[1], c[2])); goto error; } It happens because in_left == 2 when it should be 3: [2013/09/06 20:59:50.249004, 3] ../lib/util/charset/iconv.c:600(utf8_pull) DEBUG, 2, 226, 153, 187 [2013/09/06 20:59:50.249056, 3] lib/charcnv.c:161(convert_string_internal) convert_string_internal: Conversion error: Illegal multibyte sequence(â<99>»_Corbeille) The sequence values are good, as this char is 0xE2 0x99 0xBB in UTF8. I tried to backtrack the origin of this value, but I got lost after convert_string_internal() in source3/lib/charcnv.c , where it was incorrect already. Is it getting warmer? Laurent -- To unsubscribe from this list go to the following URL and read the instructions: https://lists.samba.org/mailman/options/samba