19 iconv_t guessConverter(
const char*
buffer,
size_t len)
21 char*
const target =
"utf-8";
23 iconv_t iconvCookie = NULL;
25 gchar* encoding = guessEncoding(
buffer, len);
26 if (encoding && (strcmp(encoding, target) != 0))
28 iconvCookie = iconv_open(target, encoding);
35 gchar* guessEncoding(
const char*
buffer,
size_t len) {
38 uchardet_t cd = uchardet_new();
39 if (!uchardet_handle_data(cd,
buffer, len)) {
40 uchardet_data_end(cd);
42 const char* chardet = uchardet_get_charset(cd);
44 if (chardet && strcmp(chardet,
"")!=0) {
45 result = g_strdup(chardet);
51 magic_t cookie = magic_open(MAGIC_MIME);
52 magic_load(cookie, NULL);
54 const char* resp = magic_buffer(cookie,
buffer, len);
58 printf(
"magic error: %s\n", magic_error(cookie));
62 char* charset = strstr(resp,
"charset=");
71 result = g_strdup(charset);
char buffer[2048]
The last thing received from the scheduler.