X-Git-Url: https://git.dlugolecki.net.pl/?a=blobdiff_plain;f=gedcom%2Fgedcom_date.y;h=79af990babef29e10739ac7c5fdfaec3744f3e53;hb=1cb22adafb0696887c3a7544f81898d0685b42b7;hp=e38769eefbfd7e3b8d45529eed7085961a1fa598;hpb=156c27bb04852eb8189994325d5f69691c1b869a;p=gedcom-parse.git diff --git a/gedcom/gedcom_date.y b/gedcom/gedcom_date.y index e38769e..79af990 100644 --- a/gedcom/gedcom_date.y +++ b/gedcom/gedcom_date.y @@ -126,7 +126,7 @@ date_value : date { make_date_value(DV_NO_MODIFIER, } | error { /* On error: put entire string in 'phrase' member as fallback */ - gedcom_date_error(_("Putting date in 'phrase' member")); + gedcom_date_error(_("Putting date '%s' in 'phrase' member"), curr_line_value); make_date_value(DV_PHRASE, &def_date, &def_date, curr_line_value); YYABORT; @@ -324,24 +324,32 @@ year_greg : NUMBER else YYERROR; } | NUMBER SLASH NUMBER - { int y = _get_year_num(YEAR_DOUBLE, $1, $3); - if (y != -1) { - sprintf(date_s.year_str, "%d/%02d", y-1, y%100); - date_s.year = y; - date_s.year_type = YEAR_DOUBLE; + { if (compat_double_date_check($3)) { + safe_buf_append(&compat_buffer, "BET %s AND %s", + $1, $3); + } + else { + int y = _get_year_num(YEAR_DOUBLE, $1, $3); + if (y != -1) { + sprintf(date_s.year_str, "%d/%02d", y-1, y%100); + date_s.year = y; + date_s.year_type = YEAR_DOUBLE; + } + else YYERROR; } - else YYERROR; } ; %% -void error_missing_year() { +void error_missing_year() +{ gedcom_date_error(_("Year is missing: '%s'"), curr_line_value); } -void error_missing_month() { +void error_missing_month() +{ gedcom_date_error(_("Month is missing: '%s'"), curr_line_value); } @@ -406,14 +414,9 @@ int _get_year_num(Year_type ytype, const char* input1, const char* input2) } else { if (strlen(input2) != 2) { - if (compat_mode(C_DOUBLE_DATES_4) && strlen(input2) == 4) { - input2 += 2; - } - else { - gedcom_date_error(_("Year after slash should be two digits: '%s/%s'"), - input1, input2); - return -1; - } + gedcom_date_error(_("Year after slash should be two digits: '%s/%s'"), + input1, input2); + return -1; } if (strlen(input1) <= MAX_YEAR_LEN - 3) { int year1 = atoi(input1) + 1;