X-Git-Url: https://git.dlugolecki.net.pl/?a=blobdiff_plain;f=gedcom%2Fdate.c;h=a6a8eb52a62d278828e21eb99f8c69a2983881fb;hb=1cb22adafb0696887c3a7544f81898d0685b42b7;hp=a4853925294f2424f083aec639c152096fd51fc3;hpb=9a8def667a19e74878f640b2c9cefcf16b259982;p=gedcom-parse.git diff --git a/gedcom/date.c b/gedcom/date.c index a485392..a6a8eb5 100644 --- a/gedcom/date.c +++ b/gedcom/date.c @@ -405,26 +405,35 @@ 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; if (compat_mode(C_NO_REQUIRED_VALUES) - && !strncmp(curr_line_value, "-", 2)) { - gedcom_date_error(_("Empty value changed to '-'")); + && !strncmp(curr_line_value, VALUE_IF_MISSING, 2)) { + gedcom_date_error(_("Empty value changed to '%s'"), VALUE_IF_MISSING); 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; }