gedcom_error(_("Unexpected character: '%s' (0x%02x)"), str, ch);
}
+/* This is to bypass the iconv conversion (if the input is UTF-8 coming
+ from the program) */
+static int dummy_conv = 0;
+
#elif LEX_SECTION == 2
#define TO_INTERNAL(STR,OUTBUF) \
- to_internal(STR, yyleng, OUTBUF, sizeof(OUTBUF))
+ (dummy_conv ? STR : to_internal(STR, yyleng, OUTBUF, sizeof(OUTBUF)))
#define INIT_LINE_LEN \
line_len = 0;
gedcom_lval.tag.string = TO_INTERNAL(yytext, tag_buf); \
gedcom_lval.tag.value = TAG_##THETAG; \
BEGIN(NORMAL); \
+ line_no++; \
return TAG_##THETAG; \
}
#define ACTION_ALPHANUM \
{ if (strlen(yytext) > MAXGEDCTAGLEN * encoding_width) { \
error_tag_too_long(yytext); \
+ line_no++; \
return BADTOKEN; \
} \
CHECK_LINE_LEN; \
gedcom_lval.tag.string = TO_INTERNAL(yytext, tag_buf); \
gedcom_lval.tag.value = USERTAG; \
BEGIN(NORMAL); \
+ line_no++; \
return USERTAG; \
}
#define ACTION_TERMINATOR \
{ CHECK_LINE_LEN; \
INIT_LINE_LEN; \
- line_no++; \
BEGIN(INITIAL); \
}
/* Reset our state */
current_level = -1;
level_diff = MAXGEDCLEVEL;
+ BEGIN(INITIAL);
}
#endif