X-Git-Url: https://git.dlugolecki.net.pl/?a=blobdiff_plain;f=gedcom%2Fdate.c;h=a6a8eb52a62d278828e21eb99f8c69a2983881fb;hb=989bc1d7262c6e767de09804fb530a5ebea55a5d;hp=4f9878fb624553fd7255fce6ad84a1bcf15b86da;hpb=000f15140c4e0f209994cdc579a677e29ae3e807;p=gedcom-parse.git diff --git a/gedcom/date.c b/gedcom/date.c index 4f9878f..a6a8eb5 100644 --- a/gedcom/date.c +++ b/gedcom/date.c @@ -405,6 +405,8 @@ struct date_value* gedcom_new_date_value(const struct date_value* copy_from) struct date_value gedcom_parse_date(const char* line_value) { int result = 0; + init_date(&dv_s.date1); + init_date(&dv_s.date2); init_date(&date_s); init_date(&def_date); curr_line_value = line_value; @@ -414,17 +416,24 @@ struct date_value gedcom_parse_date(const char* line_value) result = 1; } else { + compat_date_start(); init_gedcom_date_lex(line_value); gedcom_date_parse(); close_gedcom_date_lex(); + if (compat_date_check(&dv_s, &curr_line_value)) { + init_gedcom_date_lex(curr_line_value); + gedcom_date_parse(); + close_gedcom_date_lex(); + } if (dv_s.date1.cal != CAL_UNKNOWN) result |= numbers_to_sdn(&dv_s.date1); if (dv_s.date2.cal != CAL_UNKNOWN) result |= numbers_to_sdn(&dv_s.date2); } if (result != 0) { - gedcom_date_error(_("Putting date in 'phrase' member")); - make_date_value(DV_PHRASE, &def_date, &def_date, curr_line_value); + gedcom_date_error(_("Putting date '%s' in 'phrase' member"), + curr_line_value); + make_date_value(DV_PHRASE, &dv_s.date1, &dv_s.date2, curr_line_value); } return dv_s; }