X-Git-Url: https://git.dlugolecki.net.pl/?a=blobdiff_plain;f=gedcom%2Fdate.c;h=3ce3783ea5d16a022a0ce87f5f6f2b471a0a47bc;hb=c241fd2658149a029f8c9119007341d17ffd748c;hp=b28a12929d444859ce3983bcbf29e20b6257afd5;hpb=b1f527b078458574dd67ae83cd843ba74210223f;p=gedcom-parse.git diff --git a/gedcom/date.c b/gedcom/date.c index b28a129..3ce3783 100644 --- a/gedcom/date.c +++ b/gedcom/date.c @@ -24,6 +24,8 @@ #include "gedcom_internal.h" #include "sdncal.h" #include "buffer.h" +#include "compat.h" +#include #include "date.h" struct date_value dv_s; @@ -405,13 +407,21 @@ struct date_value gedcom_parse_date(const char* line_value) init_date(&date_s); init_date(&def_date); curr_line_value = line_value; - init_gedcom_date_lex(line_value); - gedcom_date_parse(); - close_gedcom_date_lex(); - if (dv_s.date1.cal != CAL_UNKNOWN) - numbers_to_sdn(&dv_s.date1); - if (dv_s.date2.cal != CAL_UNKNOWN) - numbers_to_sdn(&dv_s.date2); + if (compat_mode(C_NO_REQUIRED_VALUES) + && !strncmp(curr_line_value, "-", 2)) { + gedcom_date_error(_("Empty value changed to '-'")); + gedcom_date_error(_("Putting date in 'phrase' member")); + make_date_value(DV_PHRASE, &def_date, &def_date, curr_line_value); + } + else { + init_gedcom_date_lex(line_value); + gedcom_date_parse(); + close_gedcom_date_lex(); + if (dv_s.date1.cal != CAL_UNKNOWN) + numbers_to_sdn(&dv_s.date1); + if (dv_s.date2.cal != CAL_UNKNOWN) + numbers_to_sdn(&dv_s.date2); + } return dv_s; }