gchar *fp_read_noconv(FILE *fp) { GByteArray *array; guchar buf[BUFSIZ]; gint n_read; gchar *result = NULL; if (!fp) return NULL; array = g_byte_array_new(); while ((n_read = claws_fread(buf, sizeof(gchar), sizeof(buf), fp)) > 0) { if (n_read < sizeof(buf) && claws_ferror(fp)) break; g_byte_array_append(array, buf, n_read); } if (claws_ferror(fp)) { FILE_OP_ERROR("file stream", "claws_fread"); g_byte_array_free(array, TRUE); return NULL; } buf[0] = '\0'; g_byte_array_append(array, buf, 1); result = (gchar *)array->data; g_byte_array_free(array, FALSE); return result; }
static SC_HTMLState sc_html_read_line(SC_HTMLParser *parser) { gchar buf[SC_HTMLBUFSIZE]; gchar buf2[SC_HTMLBUFSIZE*4]; gint index; gint n; if (parser->fp == NULL) return SC_HTML_EOF; n = claws_fread(buf, 1, sizeof(buf) - 1, parser->fp); if (n == 0) { parser->state = SC_HTML_EOF; return SC_HTML_EOF; } else buf[n] = '\0'; if (conv_convert(parser->conv, buf2, sizeof(buf2), buf) < 0) { index = parser->bufp - parser->buf->str; conv_utf8todisp(buf2, sizeof(buf2), buf); g_string_append(parser->buf, buf2); parser->bufp = parser->buf->str + index; return SC_HTML_CONV_FAILED; } index = parser->bufp - parser->buf->str; g_string_append(parser->buf, buf2); parser->bufp = parser->buf->str + index; return SC_HTML_NORMAL; }