dlugolecki.net.pl
Dziennik
Polecane
Software
projects
/
gedcom-parse.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Test program for updates in gom.
[gedcom-parse.git]
/
gedcom
/
gedcom_lex_common.c
diff --git
a/gedcom/gedcom_lex_common.c
b/gedcom/gedcom_lex_common.c
index d0d329cab5e031d81a20bcab027e8bed6384ada1..d8f35d768481e219e273c54e8278ec4d13ee6a0a 100644
(file)
--- a/
gedcom/gedcom_lex_common.c
+++ b/
gedcom/gedcom_lex_common.c
@@
-136,10
+136,14
@@
static void error_unexpected_character(const char* str, char ch)
gedcom_error(_("Unexpected character: '%s' (0x%02x)"), str, ch);
}
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) \
#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;
#define INIT_LINE_LEN \
line_len = 0;
@@
-160,6
+164,7
@@
static void error_unexpected_character(const char* str, char ch)
gedcom_lval.tag.string = TO_INTERNAL(yytext, tag_buf); \
gedcom_lval.tag.value = TAG_##THETAG; \
BEGIN(NORMAL); \
gedcom_lval.tag.string = TO_INTERNAL(yytext, tag_buf); \
gedcom_lval.tag.value = TAG_##THETAG; \
BEGIN(NORMAL); \
+ line_no++; \
return TAG_##THETAG; \
}
return TAG_##THETAG; \
}
@@
-231,6
+236,7
@@
static void error_unexpected_character(const char* str, char ch)
CHECK_LINE_LEN; \
if ((level < 0) || (level > MAXGEDCLEVEL)) { \
error_level_out_of_range(); \
CHECK_LINE_LEN; \
if ((level < 0) || (level > MAXGEDCLEVEL)) { \
error_level_out_of_range(); \
+ line_no++; \
return BADTOKEN; \
} \
level_diff = level - current_level; \
return BADTOKEN; \
} \
level_diff = level - current_level; \
@@
-248,6
+254,7
@@
static void error_unexpected_character(const char* str, char ch)
else { \
/* should never happen (error to GEDCOM spec) */ \
error_level_too_high(level_diff); \
else { \
/* should never happen (error to GEDCOM spec) */ \
error_level_too_high(level_diff); \
+ line_no++; \
return BADTOKEN; \
} \
}
return BADTOKEN; \
} \
}
@@
-256,12
+263,14
@@
static void error_unexpected_character(const char* str, char ch)
#define ACTION_ALPHANUM \
{ if (strlen(yytext) > MAXGEDCTAGLEN * encoding_width) { \
error_tag_too_long(yytext); \
#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); \
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; \
}
return USERTAG; \
}
@@
-323,7
+332,6
@@
static void error_unexpected_character(const char* str, char ch)
#define ACTION_TERMINATOR \
{ CHECK_LINE_LEN; \
INIT_LINE_LEN; \
#define ACTION_TERMINATOR \
{ CHECK_LINE_LEN; \
INIT_LINE_LEN; \
- line_no++; \
BEGIN(INITIAL); \
}
BEGIN(INITIAL); \
}
@@
-398,6
+406,7
@@
void yymyinit(FILE *f)
/* Reset our state */
current_level = -1;
level_diff = MAXGEDCLEVEL;
/* Reset our state */
current_level = -1;
level_diff = MAXGEDCLEVEL;
+ BEGIN(INITIAL);
}
#endif
}
#endif