X-Git-Url: https://git.dlugolecki.net.pl/?a=blobdiff_plain;f=gedcom%2Fgedcom.y;h=c047b6130ecd2eeb43275e7669343abd269d48f1;hb=31fb8432ef01f9d5a08cc801a785a07b4e9d12bd;hp=ef95178d08664ece62d34a5cc91a6ced0adb1415;hpb=9b401c855f1eb0cf21c99a9ad8b67aee16e06be6;p=gedcom-parse.git diff --git a/gedcom/gedcom.y b/gedcom/gedcom.y index ef95178..c047b61 100644 --- a/gedcom/gedcom.y +++ b/gedcom/gedcom.y @@ -1234,6 +1234,8 @@ indi_addr_sect : OPEN DELIM TAG_ADDR opt_line_item = start_element(ELT_SUB_ADDR, par, $1 + 1, $3, $4, GEDCOM_MAKE_NULL_OR_STRING(val2, $4)); + reset_buffer(&concat_buffer); + safe_buf_append(&concat_buffer, $4); START(ADDR, $1 + 1, $$); } else { START(ADDR, $1, NULL) } @@ -1243,8 +1245,9 @@ indi_addr_sect : OPEN DELIM TAG_ADDR opt_line_item CLOSE { if (compat_mode(C_INDI_ADDR)) { Gedcom_ctxt par = PARENT; + char* complete = get_buf_string(&concat_buffer); end_element(ELT_SUB_ADDR, par, $5, - GEDCOM_MAKE_NULL(val1)); + GEDCOM_MAKE_STRING(val1, complete)); CHECK0; compat_generate_resi_end(PARENT, par); } @@ -1420,7 +1423,7 @@ note_line_item : /* empty */ gedcom_error(_("Missing value")); YYERROR; } else { - $$ = ""; + $$ = "-"; } } | DELIM line_item @@ -3741,7 +3744,7 @@ mand_pointer : /* empty */ { gedcom_error(_("Missing pointer")); YYERROR; } mand_line_item : /* empty */ { if (compat_mode(C_NO_REQUIRED_VALUES)) { gedcom_debug_print("==Val: =="); - $$ = ""; + $$ = "-"; } else { gedcom_error(_("Missing value")); YYERROR; @@ -3997,7 +4000,7 @@ Gedcom_ctxt ctxt_stack[MAXGEDCLEVEL+1]; void push_countarray(int level) { int *count = NULL; - gedcom_debug_print("Push Count level: %d, level: %d\n", count_level, level); + gedcom_debug_print("Push Count level: %d, level: %d", count_level, level); if (count_level != level + 1) { gedcom_error(_("Internal error: count level mismatch")); exit(1); @@ -4007,7 +4010,7 @@ void push_countarray(int level) exit(1); } else { - gedcom_debug_print("calloc countarray %d\n", count_level); + gedcom_debug_print("calloc countarray %d", count_level); count = (int *)calloc(YYNTOKENS, sizeof(int)); if (count == NULL) { gedcom_error(_("Internal error: count array calloc error")); @@ -4054,14 +4057,14 @@ int check_occurrence(int tag) void pop_countarray() { int *count; - gedcom_debug_print("Pop Count level: %d\n", count_level); + gedcom_debug_print("Pop Count level: %d", count_level); if (count_level < 0) { gedcom_error(_("Internal error: count array underflow")); exit(1); } else { count = count_arrays[count_level]; - gedcom_debug_print("free countarray %d\n", count_level); + gedcom_debug_print("free countarray %d", count_level); free(count); count_arrays[count_level] = NULL; } @@ -4069,7 +4072,7 @@ void pop_countarray() void clean_up() { - gedcom_debug_print("Cleanup countarrays\n"); + gedcom_debug_print("Cleanup countarrays"); while (count_level > 0) { pop_countarray(); --count_level;