#include "config.h"
+#include "diagnostic.h"
#include "input.h"
#include <ctype.h>
-#include "lexer.h"
-#include "diagnostic.h"
typedef size_t (*decode_func)(input_t *input, utf32 *buffer, size_t buffer_size);
{
unsigned char read_buf[buffer_size];
- while (true) {
+ for (;;) {
size_t const s = read_block(input, read_buf, sizeof(read_buf));
if (s == 0) {
if (input->utf8_part_decoded_rest_len > 0)
static void choose_decoder(input_t *result, const char *encoding)
{
- if (encoding == NULL) {
- result->decode = decode_utf8;
- } else {
+ if (encoding) {
for (named_decoder_t const *i = decoders; i->name != NULL; ++i) {
if (my_strcasecmp(encoding, i->name) != 0)
continue;
result->decode = i->decoder;
- break;
- }
- if (result->decode == NULL) {
- fprintf(stderr, "error: input encoding \"%s\" not supported\n",
- encoding);
- result->decode = decode_utf8;
+ return;
}
+ errorf(NULL, "input encoding \"%s\" not supported", encoding);
}
+ result->decode = decode_utf8;
}
input_t *input_from_stream(FILE *file, const char *encoding)