summaryrefslogtreecommitdiff
path: root/src/input
diff options
context:
space:
mode:
authorJohn Mark Bell <jmb@netsurf-browser.org>2009-01-06 00:18:19 +0000
committerJohn Mark Bell <jmb@netsurf-browser.org>2009-01-06 00:18:19 +0000
commit007c7b16ab269fc16cc4d3a337d3b84319097368 (patch)
treea7105d61bdbb50cd7734ef602453639246e629d7 /src/input
parent0d791659e1150154404bf311bf706063b65303e8 (diff)
downloadlibparserutils-007c7b16ab269fc16cc4d3a337d3b84319097368.tar.gz
libparserutils-007c7b16ab269fc16cc4d3a337d3b84319097368.tar.bz2
Make input filter correctly return _BADENCODING.
svn path=/trunk/libparserutils/; revision=5964
Diffstat (limited to 'src/input')
-rw-r--r--src/input/filter.c8
-rw-r--r--src/input/inputstream.c3
2 files changed, 6 insertions, 5 deletions
diff --git a/src/input/filter.c b/src/input/filter.c
index 7ed4ec6..7d7b340 100644
--- a/src/input/filter.c
+++ b/src/input/filter.c
@@ -381,7 +381,7 @@ parserutils_error filter_set_encoding(parserutils_filter *input,
mibenum = parserutils_charset_mibenum_from_name(enc, strlen(enc));
if (mibenum == 0)
- return PARSERUTILS_INVALID;
+ return PARSERUTILS_BADENCODING;
/* Exit early if we're already using this encoding */
if (input->settings.encoding == mibenum)
@@ -399,8 +399,10 @@ parserutils_error filter_set_encoding(parserutils_filter *input,
input->cd = iconv_open(
parserutils_charset_mibenum_to_name(input->int_enc), enc);
- if (input->cd == (iconv_t) -1)
- return PARSERUTILS_NOMEM;
+ if (input->cd == (iconv_t) -1) {
+ return (errno == EINVAL) ? PARSERUTILS_BADENCODING
+ : PARSERUTILS_NOMEM;
+ }
#else
if (input->read_codec != NULL) {
parserutils_charset_codec_destroy(input->read_codec);
diff --git a/src/input/inputstream.c b/src/input/inputstream.c
index 5b2bd49..1a9be2a 100644
--- a/src/input/inputstream.c
+++ b/src/input/inputstream.c
@@ -113,8 +113,7 @@ parserutils_error parserutils_inputstream_create(const char *enc,
error = parserutils_filter_setopt(s->input,
PARSERUTILS_FILTER_SET_ENCODING,
&params);
- if (error != PARSERUTILS_OK &&
- error != PARSERUTILS_INVALID) {
+ if (error != PARSERUTILS_OK) {
parserutils_filter_destroy(s->input);
parserutils_buffer_destroy(s->public.utf8);
parserutils_buffer_destroy(s->raw);