X-Git-Url: https://git.dlugolecki.net.pl/?a=blobdiff_plain;f=gedcom%2Fcompat.c;fp=gedcom%2Fcompat.c;h=196113ffe1b576dd59ba476cb0ce3d22a42c02a1;hb=9d87c36948e5cc9c90c14bd09b5007c519ed8b4b;hp=3b05680561597ee5ec0311282e409323a857b102;hpb=afb412554732d2b908fe257697d89cb5d71ba1eb;p=gedcom-parse.git diff --git a/gedcom/compat.c b/gedcom/compat.c index 3b05680..196113f 100644 --- a/gedcom/compat.c +++ b/gedcom/compat.c @@ -61,7 +61,8 @@ enum _COMPAT { C_PAF5 = 0x0004, C_PAF2 = 0x0008, C_FAMORIG = 0x0010, - C_EASYTREE = 0x0020 + C_EASYTREE = 0x0020, + C_PAF4 = 0x0040 }; struct program_data data[] = { @@ -92,6 +93,7 @@ struct program_data data[] = { - '@' not written as '@@' in values - some 5.5.1 (draft) tags are used: EMAIL, FONE, ROMN - no FAMC field in SLGC + - uses tab character (will be converted to 8 spaces here) - Personal Ancestral File 2: - '@' not written as '@@' in values @@ -107,6 +109,9 @@ struct program_data data[] = { - no submitter link in the header - NOTE doesn't have a value - NOTE.NOTE instead of NOTE.COND + + - Personal Ancestral File 4: + - '@' not written as '@@' in values */ int compat_matrix[] = @@ -117,15 +122,17 @@ int compat_matrix[] = /* C_NO_GEDC */ C_LIFELINES | C_PAF2, /* C_NO_CHAR */ C_LIFELINES, /* C_HEAD_TIME */ C_LIFELINES, - /* C_NO_DOUBLE_AT */ C_LIFELINES | C_PAF5 | C_PAF2 | C_FAMORIG, - /* C_NO_REQUIRED_VALUES */ C_LIFELINES, + /* C_NO_DOUBLE_AT */ C_LIFELINES | C_PAF5 | C_PAF2 | C_FAMORIG + | C_PAF4, + /* C_NO_REQUIRED_VALUES */ C_LIFELINES | C_PAF5, /* C_551_TAGS */ C_PAF5, /* C_NO_SLGC_FAMC */ C_PAF5, /* C_SUBM_COMM */ C_PAF2, - /* C_DOUBLE_DATES_4 */ C_PAF2, + /* C_DOUBLE_DATES_4 */ C_PAF2 | C_PAF5 | C_PAF4, /* C_CONC_NEEDS_SPACE */ C_FAMORIG, /* C_NO_GEDC_FORM */ C_EASYTREE, - /* C_NOTE_NOTE */ C_EASYTREE + /* C_NOTE_NOTE */ C_EASYTREE, + /* C_TAB_CHARACTER */ C_PAF5 }; int compat_state[C_NR_OF_RULES]; @@ -201,6 +208,10 @@ void compute_compatibility() compatibility = C_PAF2; version = 2; } + if (compatibility_version >= 40000 && compatibility_version < 50000) { + compatibility = C_PAF4; + version = 4; + } else if (compatibility_version >= 50000) { compatibility = C_PAF5; version = 5;