still trying to figure out iconv() returning -1, errno EILSEQ

This commit is contained in:
Josh Holtrop 2010-03-30 09:15:53 -04:00
parent 7f9f13e382
commit ab720a7a74

View File

@ -3,6 +3,7 @@
#include <string.h>
#include <iconv.h>
#include <stdio.h>
#include <errno.h>
using namespace std;
refptr< vector<unichar_t> > deserialize(const char * encoding, istream & in)
@ -45,7 +46,24 @@ refptr< vector<unichar_t> > deserialize(const char * encoding, istream & in)
&outbuf_ptr, &outbytesleft);
if (chars_converted == (size_t) -1)
{
int err = errno;
perror("iconv() error");
switch (err)
{
case EINVAL:
cerr << "EINVAL" << endl;
break;
case EILSEQ:
cerr << "EILSEQ" << endl;
printf("inbuf: %p, inbuf_ptr: %p\n", inbuf, inbuf_ptr);
for (int i = 0; i < 6; i++)
printf("%02x ", inbuf_ptr[i]);
cout << endl;
break;
case E2BIG:
cerr << "E2BIG" << endl;
break;
}
}
cout << "chars_converted: " << chars_converted << endl;
cout << "after inbytesleft: " << inbytesleft << ", outbytesleft: " << outbytesleft << endl;