dlugolecki.net.pl
Dziennik
Polecane
Software
projects
/
gedcom-parse.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Recognize the UTF-8 byte order mark.
[gedcom-parse.git]
/
gedcom
/
gedcom.y
diff --git
a/gedcom/gedcom.y
b/gedcom/gedcom.y
index ab6aa6a0ea54573335b1d5fbd39f8f860c4e1b42..3e3667c4d410cbee1c5f2b5fc13bf37b8adcd53c 100644
(file)
--- a/
gedcom/gedcom.y
+++ b/
gedcom/gedcom.y
@@
-149,6
+149,7
@@
#include "age.h"
#include "xref.h"
#include "compat.h"
#include "age.h"
#include "xref.h"
#include "compat.h"
+#include "buffer.h"
int count_level = 0;
int fail = 0;
int count_level = 0;
int fail = 0;
@@
-156,10
+157,14
@@
int gedcom_high_level_debug = 0;
Gedcom_err_mech error_mechanism = IMMED_FAIL;
Gedcom_val_struct val1;
Gedcom_val_struct val2;
Gedcom_err_mech error_mechanism = IMMED_FAIL;
Gedcom_val_struct val1;
Gedcom_val_struct val2;
-
-char line_item_buf[MAXGEDCLINELEN * UTF_FACTOR + 1];
-char *line_item_buf_ptr;
+void cleanup_line_item_buffer();
+struct safe_buffer line_item_buffer = { NULL, 0, NULL, 0,
+ cleanup_line_item_buffer };
+
+void cleanup_concat_buffer();
+struct safe_buffer concat_buffer = { NULL, 0, NULL, 0, cleanup_concat_buffer };
+
/* These are defined at the bottom of the file */
void push_countarray(int level);
void set_parenttag(const char* tag);
/* These are defined at the bottom of the file */
void push_countarray(int level);
void set_parenttag(const char* tag);
@@
-171,9
+176,6
@@
int count_tag(int tag);
int check_occurrence(int tag);
void clean_up();
int check_occurrence(int tag);
void clean_up();
-#define CLEAR_BUFFER(BUF) \
- memset(BUF, 0, sizeof(BUF));
-
#define HANDLE_ERROR \
{ if (error_mechanism == IMMED_FAIL) { \
clean_up(); YYABORT; \
#define HANDLE_ERROR \
{ if (error_mechanism == IMMED_FAIL) { \
clean_up(); YYABORT; \
@@
-253,7
+255,7
@@
void clean_up();
}
%token_table
}
%token_table
-%expect 30
4
+%expect 30
8
%token <string> BADTOKEN
%token <number> OPEN
%token <string> BADTOKEN
%token <number> OPEN
@@
-442,22
+444,24
@@
head_sect : OPEN DELIM TAG_HEAD
NULL, GEDCOM_MAKE_NULL(val2));
START(HEAD, $1, $<ctxt>$) }
head_subs
NULL, GEDCOM_MAKE_NULL(val2));
START(HEAD, $1, $<ctxt>$) }
head_subs
- { if (compat_mode(C_FTREE)) {
- CHECK3(SOUR, GEDC, CHAR);
- compat_generate_submitter_link($<ctxt>4);
- }
- else if (compat_mode(C_LIFELINES)) {
- CHECK1(SOUR);
+ { if (compat_mode(C_NO_SUBMITTER))
compat_generate_submitter_link($<ctxt>4);
compat_generate_submitter_link($<ctxt>4);
+ else CHK(SUBM);
+
+ if (compat_mode(C_NO_GEDC))
compat_generate_gedcom($<ctxt>4);
compat_generate_gedcom($<ctxt>4);
+ else CHK(GEDC);
+
+ if (compat_mode(C_NO_CHAR)) {
if (compat_generate_char($<ctxt>4)) HANDLE_ERROR;
if (compat_generate_char($<ctxt>4)) HANDLE_ERROR;
- }
- else
- CHECK4(SOUR, SUBM, GEDC, CHAR)
+ }
+ else CHK(CHAR);
+
+ CHECK1(SOUR);
}
CLOSE
}
CLOSE
- { end_record(REC_HEAD, $<ctxt>4);
- if (compat_mode(C_
FTREE | C_LIFELINES
))
+ { end_record(REC_HEAD, $<ctxt>4
, GEDCOM_MAKE_NULL(val1)
);
+ if (compat_mode(C_
NO_SUBMITTER
))
compat_generate_submitter();
}
;
compat_generate_submitter();
}
;
@@
-469,7
+473,7
@@
head_subs : /* empty */
head_sub : head_sour_sect { OCCUR2(SOUR, 1, 1) }
| head_dest_sect { OCCUR2(DEST, 0, 1) }
| head_date_sect { OCCUR2(DATE, 0, 1) }
head_sub : head_sour_sect { OCCUR2(SOUR, 1, 1) }
| head_dest_sect { OCCUR2(DEST, 0, 1) }
| head_date_sect { OCCUR2(DATE, 0, 1) }
- | head_time_sect { if (!compat_mode(C_
LIFELINES
))
+ | head_time_sect { if (!compat_mode(C_
HEAD_TIME
))
INVALID_TAG("TIME");
OCCUR2(TIME, 0, 1) }
| head_subm_sect { OCCUR2(SUBM, 1, 1) }
INVALID_TAG("TIME");
OCCUR2(TIME, 0, 1) }
| head_subm_sect { OCCUR2(SUBM, 1, 1) }
@@
-495,7
+499,8
@@
head_sour_sect : OPEN DELIM TAG_SOUR mand_line_item
head_sour_subs
{ CHECK0 }
CLOSE
head_sour_subs
{ CHECK0 }
CLOSE
- { end_element(ELT_HEAD_SOUR, PARENT, $<ctxt>5, NULL); }
+ { end_element(ELT_HEAD_SOUR, PARENT, $<ctxt>5,
+ GEDCOM_MAKE_NULL(val1)); }
;
head_sour_subs : /* empty */
;
head_sour_subs : /* empty */
@@
-519,7
+524,7
@@
head_sour_vers_sect : OPEN DELIM TAG_VERS mand_line_item
{ CHECK0 }
CLOSE
{ end_element(ELT_HEAD_SOUR_VERS,
{ CHECK0 }
CLOSE
{ end_element(ELT_HEAD_SOUR_VERS,
- PARENT, $<ctxt>5,
NULL
);
+ PARENT, $<ctxt>5,
GEDCOM_MAKE_NULL(val1)
);
}
;
head_sour_name_sect : OPEN DELIM TAG_NAME mand_line_item
}
;
head_sour_name_sect : OPEN DELIM TAG_NAME mand_line_item
@@
-532,7
+537,7
@@
head_sour_name_sect : OPEN DELIM TAG_NAME mand_line_item
{ CHECK0 }
CLOSE
{ end_element(ELT_HEAD_SOUR_NAME,
{ CHECK0 }
CLOSE
{ end_element(ELT_HEAD_SOUR_NAME,
- PARENT, $<ctxt>5,
NULL
);
+ PARENT, $<ctxt>5,
GEDCOM_MAKE_NULL(val1)
);
}
;
head_sour_corp_sect : OPEN DELIM TAG_CORP mand_line_item
}
;
head_sour_corp_sect : OPEN DELIM TAG_CORP mand_line_item
@@
-545,7
+550,7
@@
head_sour_corp_sect : OPEN DELIM TAG_CORP mand_line_item
{ CHECK0 }
CLOSE
{ end_element(ELT_HEAD_SOUR_CORP,
{ CHECK0 }
CLOSE
{ end_element(ELT_HEAD_SOUR_CORP,
- PARENT, $<ctxt>5,
NULL
);
+ PARENT, $<ctxt>5,
GEDCOM_MAKE_NULL(val1)
);
}
;
}
;
@@
-567,7
+572,7
@@
head_sour_data_sect : OPEN DELIM TAG_DATA mand_line_item
{ CHECK0 }
CLOSE
{ end_element(ELT_HEAD_SOUR_DATA,
{ CHECK0 }
CLOSE
{ end_element(ELT_HEAD_SOUR_DATA,
- PARENT, $<ctxt>5,
NULL
);
+ PARENT, $<ctxt>5,
GEDCOM_MAKE_NULL(val1)
);
}
;
}
;
@@
-592,7
+597,8
@@
head_sour_data_date_sect : OPEN DELIM TAG_DATE mand_line_item
{ CHECK0 }
CLOSE
{ end_element(ELT_HEAD_SOUR_DATA_DATE,
{ CHECK0 }
CLOSE
{ end_element(ELT_HEAD_SOUR_DATA_DATE,
- PARENT, $<ctxt>5, NULL);
+ PARENT, $<ctxt>5,
+ GEDCOM_MAKE_NULL(val1));
}
;
head_sour_data_copr_sect : OPEN DELIM TAG_COPR mand_line_item
}
;
head_sour_data_copr_sect : OPEN DELIM TAG_COPR mand_line_item
@@
-606,7
+612,8
@@
head_sour_data_copr_sect : OPEN DELIM TAG_COPR mand_line_item
{ CHECK0 }
CLOSE
{ end_element(ELT_HEAD_SOUR_DATA_COPR,
{ CHECK0 }
CLOSE
{ end_element(ELT_HEAD_SOUR_DATA_COPR,
- PARENT, $<ctxt>5, NULL);
+ PARENT, $<ctxt>5,
+ GEDCOM_MAKE_NULL(val1));
}
;
}
;
@@
-621,7
+628,7
@@
head_dest_sect : OPEN DELIM TAG_DEST mand_line_item
{ CHECK0 }
CLOSE
{ end_element(ELT_HEAD_DEST,
{ CHECK0 }
CLOSE
{ end_element(ELT_HEAD_DEST,
- PARENT, $<ctxt>5,
NULL
);
+ PARENT, $<ctxt>5,
GEDCOM_MAKE_NULL(val1)
);
}
;
}
;
@@
-637,7
+644,7
@@
head_date_sect : OPEN DELIM TAG_DATE mand_line_item
{ CHECK0 }
CLOSE
{ end_element(ELT_HEAD_DATE,
{ CHECK0 }
CLOSE
{ end_element(ELT_HEAD_DATE,
- PARENT, $<ctxt>5,
NULL
);
+ PARENT, $<ctxt>5,
GEDCOM_MAKE_NULL(val1)
);
}
;
}
;
@@
-659,7
+666,7
@@
head_date_time_sect : OPEN DELIM TAG_TIME mand_line_item
{ CHECK0 }
CLOSE
{ end_element(ELT_HEAD_DATE_TIME,
{ CHECK0 }
CLOSE
{ end_element(ELT_HEAD_DATE_TIME,
- PARENT, $<ctxt>5,
NULL
);
+ PARENT, $<ctxt>5,
GEDCOM_MAKE_NULL(val1)
);
}
;
}
;
@@
-684,7
+691,7
@@
head_subm_sect : OPEN DELIM TAG_SUBM mand_pointer
{ CHECK0 }
CLOSE
{ end_element(ELT_HEAD_SUBM,
{ CHECK0 }
CLOSE
{ end_element(ELT_HEAD_SUBM,
- PARENT, $<ctxt>5,
NULL
);
+ PARENT, $<ctxt>5,
GEDCOM_MAKE_NULL(val1)
);
}
;
/* HEAD.SUBN */
}
;
/* HEAD.SUBN */
@@
-701,7
+708,7
@@
head_subn_sect : OPEN DELIM TAG_SUBN mand_pointer
{ CHECK0 }
CLOSE
{ end_element(ELT_HEAD_SUBN,
{ CHECK0 }
CLOSE
{ end_element(ELT_HEAD_SUBN,
- PARENT, $<ctxt>5,
NULL
);
+ PARENT, $<ctxt>5,
GEDCOM_MAKE_NULL(val1)
);
}
;
/* HEAD.FILE */
}
;
/* HEAD.FILE */
@@
-714,7
+721,8
@@
head_file_sect : OPEN DELIM TAG_FILE mand_line_item
no_std_subs
{ CHECK0 }
CLOSE
no_std_subs
{ CHECK0 }
CLOSE
- { end_element(ELT_HEAD_FILE, PARENT, $<ctxt>5, NULL);
+ { end_element(ELT_HEAD_FILE, PARENT, $<ctxt>5,
+ GEDCOM_MAKE_NULL(val1));
}
;
/* HEAD.COPR */
}
;
/* HEAD.COPR */
@@
-727,7
+735,8
@@
head_copr_sect : OPEN DELIM TAG_COPR mand_line_item
no_std_subs
{ CHECK0 }
CLOSE
no_std_subs
{ CHECK0 }
CLOSE
- { end_element(ELT_HEAD_COPR, PARENT, $<ctxt>5, NULL);
+ { end_element(ELT_HEAD_COPR, PARENT, $<ctxt>5,
+ GEDCOM_MAKE_NULL(val1));
}
;
/* HEAD.GEDC */
}
;
/* HEAD.GEDC */
@@
-740,7
+749,8
@@
head_gedc_sect : OPEN DELIM TAG_GEDC
head_gedc_subs
{ CHECK2(VERS, FORM) }
CLOSE
head_gedc_subs
{ CHECK2(VERS, FORM) }
CLOSE
- { end_element(ELT_HEAD_GEDC, PARENT, $<ctxt>4, NULL);
+ { end_element(ELT_HEAD_GEDC, PARENT, $<ctxt>4,
+ GEDCOM_MAKE_NULL(val1));
}
;
}
;
@@
-762,7
+772,7
@@
head_gedc_vers_sect : OPEN DELIM TAG_VERS mand_line_item
{ CHECK0 }
CLOSE
{ end_element(ELT_HEAD_GEDC_VERS,
{ CHECK0 }
CLOSE
{ end_element(ELT_HEAD_GEDC_VERS,
- PARENT, $<ctxt>5,
NULL
);
+ PARENT, $<ctxt>5,
GEDCOM_MAKE_NULL(val1)
);
}
;
head_gedc_form_sect : OPEN DELIM TAG_FORM mand_line_item
}
;
head_gedc_form_sect : OPEN DELIM TAG_FORM mand_line_item
@@
-775,7
+785,7
@@
head_gedc_form_sect : OPEN DELIM TAG_FORM mand_line_item
{ CHECK0 }
CLOSE
{ end_element(ELT_HEAD_GEDC_FORM,
{ CHECK0 }
CLOSE
{ end_element(ELT_HEAD_GEDC_FORM,
- PARENT, $<ctxt>5,
NULL
);
+ PARENT, $<ctxt>5,
GEDCOM_MAKE_NULL(val1)
);
}
;
}
;
@@
-792,7
+802,8
@@
head_char_sect : OPEN DELIM TAG_CHAR mand_line_item
head_char_subs
{ CHECK0 }
CLOSE
head_char_subs
{ CHECK0 }
CLOSE
- { end_element(ELT_HEAD_CHAR, PARENT, $<ctxt>5, NULL);
+ { end_element(ELT_HEAD_CHAR, PARENT, $<ctxt>5,
+ GEDCOM_MAKE_NULL(val1));
}
;
}
;
@@
-813,7
+824,7
@@
head_char_vers_sect : OPEN DELIM TAG_VERS mand_line_item
{ CHECK0 }
CLOSE
{ end_element(ELT_HEAD_CHAR_VERS,
{ CHECK0 }
CLOSE
{ end_element(ELT_HEAD_CHAR_VERS,
- PARENT, $<ctxt>5,
NULL
);
+ PARENT, $<ctxt>5,
GEDCOM_MAKE_NULL(val1)
);
}
;
}
;
@@
-827,7
+838,8
@@
head_lang_sect : OPEN DELIM TAG_LANG mand_line_item
no_std_subs
{ CHECK0 }
CLOSE
no_std_subs
{ CHECK0 }
CLOSE
- { end_element(ELT_HEAD_LANG, PARENT, $<ctxt>5, NULL);
+ { end_element(ELT_HEAD_LANG, PARENT, $<ctxt>5,
+ GEDCOM_MAKE_NULL(val1));
}
;
/* HEAD.PLAC */
}
;
/* HEAD.PLAC */
@@
-840,7
+852,8
@@
head_plac_sect : OPEN DELIM TAG_PLAC
head_plac_subs
{ CHECK1(FORM) }
CLOSE
head_plac_subs
{ CHECK1(FORM) }
CLOSE
- { end_element(ELT_HEAD_PLAC, PARENT, $<ctxt>4, NULL);
+ { end_element(ELT_HEAD_PLAC, PARENT, $<ctxt>4,
+ GEDCOM_MAKE_NULL(val1));
}
;
}
;
@@
-861,7
+874,7
@@
head_plac_form_sect : OPEN DELIM TAG_FORM mand_line_item
{ CHECK0 }
CLOSE
{ end_element(ELT_HEAD_PLAC_FORM,
{ CHECK0 }
CLOSE
{ end_element(ELT_HEAD_PLAC_FORM,
- PARENT, $<ctxt>5,
NULL
);
+ PARENT, $<ctxt>5,
GEDCOM_MAKE_NULL(val1)
);
}
;
}
;
@@
-870,12
+883,16
@@
head_note_sect : OPEN DELIM TAG_NOTE mand_line_item
{ $<ctxt>$ = start_element(ELT_HEAD_NOTE,
PARENT, $1, $3, $4,
GEDCOM_MAKE_STRING(val1, $4));
{ $<ctxt>$ = start_element(ELT_HEAD_NOTE,
PARENT, $1, $3, $4,
GEDCOM_MAKE_STRING(val1, $4));
+ reset_buffer(&concat_buffer);
+ safe_buf_append(&concat_buffer, $4);
START(NOTE, $1, $<ctxt>$)
}
head_note_subs
{ CHECK0 }
CLOSE
START(NOTE, $1, $<ctxt>$)
}
head_note_subs
{ CHECK0 }
CLOSE
- { end_element(ELT_HEAD_NOTE, PARENT, $<ctxt>5, NULL);
+ { char* complete = get_buf_string(&concat_buffer);
+ end_element(ELT_HEAD_NOTE, PARENT, $<ctxt>5,
+ GEDCOM_MAKE_STRING(val1, complete));
}
;
}
;
@@
-909,7
+926,7
@@
fam_rec : OPEN DELIM POINTER DELIM TAG_FAM
fam_subs
{ CHECK0 }
CLOSE
fam_subs
{ CHECK0 }
CLOSE
- { end_record(REC_FAM, $<ctxt>6); }
+ { end_record(REC_FAM, $<ctxt>6
, GEDCOM_MAKE_NULL(val1)
); }
;
fam_subs : /* empty */
;
fam_subs : /* empty */
@@
-944,7
+961,8
@@
fam_husb_sect : OPEN DELIM TAG_HUSB mand_pointer
no_std_subs
{ CHECK0 }
CLOSE
no_std_subs
{ CHECK0 }
CLOSE
- { end_element(ELT_FAM_HUSB, PARENT, $<ctxt>5, NULL);
+ { end_element(ELT_FAM_HUSB, PARENT, $<ctxt>5,
+ GEDCOM_MAKE_NULL(val1));
}
;
}
;
@@
-961,7
+979,8
@@
fam_wife_sect : OPEN DELIM TAG_WIFE mand_pointer
no_std_subs
{ CHECK0 }
CLOSE
no_std_subs
{ CHECK0 }
CLOSE
- { end_element(ELT_FAM_WIFE, PARENT, $<ctxt>5, NULL);
+ { end_element(ELT_FAM_WIFE, PARENT, $<ctxt>5,
+ GEDCOM_MAKE_NULL(val1));
}
;
}
;
@@
-978,7
+997,8
@@
fam_chil_sect : OPEN DELIM TAG_CHIL mand_pointer
no_std_subs
{ CHECK0 }
CLOSE
no_std_subs
{ CHECK0 }
CLOSE
- { end_element(ELT_FAM_CHIL, PARENT, $<ctxt>5, NULL);
+ { end_element(ELT_FAM_CHIL, PARENT, $<ctxt>5,
+ GEDCOM_MAKE_NULL(val1));
}
;
}
;
@@
-992,7
+1012,8
@@
fam_nchi_sect : OPEN DELIM TAG_NCHI mand_line_item
no_std_subs
{ CHECK0 }
CLOSE
no_std_subs
{ CHECK0 }
CLOSE
- { end_element(ELT_FAM_NCHI, PARENT, $<ctxt>5, NULL);
+ { end_element(ELT_FAM_NCHI, PARENT, $<ctxt>5,
+ GEDCOM_MAKE_NULL(val1));
}
;
}
;
@@
-1009,7
+1030,8
@@
fam_subm_sect : OPEN DELIM TAG_SUBM mand_pointer
no_std_subs
{ CHECK0 }
CLOSE
no_std_subs
{ CHECK0 }
CLOSE
- { end_element(ELT_FAM_SUBM, PARENT, $<ctxt>5, NULL);
+ { end_element(ELT_FAM_SUBM, PARENT, $<ctxt>5,
+ GEDCOM_MAKE_NULL(val1));
}
;
}
;
@@
-1027,7
+1049,7
@@
indiv_rec : OPEN DELIM POINTER DELIM TAG_INDI
indi_subs
{ CHECK0 }
CLOSE
indi_subs
{ CHECK0 }
CLOSE
- { end_record(REC_INDI, $<ctxt>6); }
+ { end_record(REC_INDI, $<ctxt>6
, GEDCOM_MAKE_NULL(val1)
); }
;
indi_subs : /* empty */
;
indi_subs : /* empty */
@@
-1054,7
+1076,7
@@
indi_sub : indi_resn_sect { OCCUR2(RESN, 0, 1) }
| indi_afn_sect /* 0:M */
| ident_struc_sub /* 0:1 */
| change_date_sub /* 0:1 */
| indi_afn_sect /* 0:M */
| ident_struc_sub /* 0:1 */
| change_date_sub /* 0:1 */
- |
ftree_addr_sect { if (!compat_mode(C_FTREE
))
+ |
indi_addr_sect { if (!compat_mode(C_INDI_ADDR
))
INVALID_TAG("ADDR");
}
| no_std_sub
INVALID_TAG("ADDR");
}
| no_std_sub
@@
-1070,7
+1092,8
@@
indi_resn_sect : OPEN DELIM TAG_RESN mand_line_item
no_std_subs
{ CHECK0 }
CLOSE
no_std_subs
{ CHECK0 }
CLOSE
- { end_element(ELT_INDI_RESN, PARENT, $<ctxt>5, NULL);
+ { end_element(ELT_INDI_RESN, PARENT, $<ctxt>5,
+ GEDCOM_MAKE_NULL(val1));
}
;
}
;
@@
-1084,7
+1107,8
@@
indi_sex_sect : OPEN DELIM TAG_SEX mand_line_item
no_std_subs
{ CHECK0 }
CLOSE
no_std_subs
{ CHECK0 }
CLOSE
- { end_element(ELT_INDI_SEX, PARENT, $<ctxt>5, NULL);
+ { end_element(ELT_INDI_SEX, PARENT, $<ctxt>5,
+ GEDCOM_MAKE_NULL(val1));
}
;
}
;
@@
-1101,7
+1125,8
@@
indi_subm_sect : OPEN DELIM TAG_SUBM mand_pointer
no_std_subs
{ CHECK0 }
CLOSE
no_std_subs
{ CHECK0 }
CLOSE
- { end_element(ELT_INDI_SUBM, PARENT, $<ctxt>5, NULL);
+ { end_element(ELT_INDI_SUBM, PARENT, $<ctxt>5,
+ GEDCOM_MAKE_NULL(val1));
}
;
}
;
@@
-1118,7
+1143,8
@@
indi_alia_sect : OPEN DELIM TAG_ALIA mand_pointer
no_std_subs
{ CHECK0 }
CLOSE
no_std_subs
{ CHECK0 }
CLOSE
- { end_element(ELT_INDI_ALIA, PARENT, $<ctxt>5, NULL);
+ { end_element(ELT_INDI_ALIA, PARENT, $<ctxt>5,
+ GEDCOM_MAKE_NULL(val1));
}
;
}
;
@@
-1135,7
+1161,8
@@
indi_anci_sect : OPEN DELIM TAG_ANCI mand_pointer
no_std_subs
{ CHECK0 }
CLOSE
no_std_subs
{ CHECK0 }
CLOSE
- { end_element(ELT_INDI_ANCI, PARENT, $<ctxt>5, NULL);
+ { end_element(ELT_INDI_ANCI, PARENT, $<ctxt>5,
+ GEDCOM_MAKE_NULL(val1));
}
;
}
;
@@
-1152,7
+1179,8
@@
indi_desi_sect : OPEN DELIM TAG_DESI mand_pointer
no_std_subs
{ CHECK0 }
CLOSE
no_std_subs
{ CHECK0 }
CLOSE
- { end_element(ELT_INDI_DESI, PARENT, $<ctxt>5, NULL);
+ { end_element(ELT_INDI_DESI, PARENT, $<ctxt>5,
+ GEDCOM_MAKE_NULL(val1));
}
;
}
;
@@
-1166,7
+1194,8
@@
indi_rfn_sect : OPEN DELIM TAG_RFN mand_line_item
no_std_subs
{ CHECK0 }
CLOSE
no_std_subs
{ CHECK0 }
CLOSE
- { end_element(ELT_INDI_RFN, PARENT, $<ctxt>5, NULL);
+ { end_element(ELT_INDI_RFN, PARENT, $<ctxt>5,
+ GEDCOM_MAKE_NULL(val1));
}
;
}
;
@@
-1180,33
+1209,36
@@
indi_afn_sect : OPEN DELIM TAG_AFN mand_line_item
no_std_subs
{ CHECK0 }
CLOSE
no_std_subs
{ CHECK0 }
CLOSE
- { end_element(ELT_INDI_AFN, PARENT, $<ctxt>5, NULL);
+ { end_element(ELT_INDI_AFN, PARENT, $<ctxt>5,
+ GEDCOM_MAKE_NULL(val1));
}
;
}
;
-/* INDI.ADDR (Only for
'ftree'
compatibility) */
-
ftree
_addr_sect : OPEN DELIM TAG_ADDR opt_line_item
- { if (compat_mode(C_
FTREE
)) {
+/* INDI.ADDR (Only for compatibility) */
+
indi
_addr_sect : OPEN DELIM TAG_ADDR opt_line_item
+ { if (compat_mode(C_
INDI_ADDR
)) {
Gedcom_ctxt par = compat_generate_resi_start(PARENT);
START(RESI, $1, par);
$<ctxt>$
= start_element(ELT_SUB_ADDR,
par, $1 + 1, $3, $4,
GEDCOM_MAKE_NULL_OR_STRING(val2, $4));
Gedcom_ctxt par = compat_generate_resi_start(PARENT);
START(RESI, $1, par);
$<ctxt>$
= start_element(ELT_SUB_ADDR,
par, $1 + 1, $3, $4,
GEDCOM_MAKE_NULL_OR_STRING(val2, $4));
- START(ADDR, $1, $<ctxt>$);
+ START(ADDR, $1
+ 1
, $<ctxt>$);
}
else { START(ADDR, $1, NULL) }
}
ftree_addr_subs
{ CHECK0 }
CLOSE
}
else { START(ADDR, $1, NULL) }
}
ftree_addr_subs
{ CHECK0 }
CLOSE
- { if (compat_mode(C_
FTREE
)) {
+ { if (compat_mode(C_
INDI_ADDR
)) {
Gedcom_ctxt par = PARENT;
Gedcom_ctxt par = PARENT;
- end_element(ELT_SUB_ADDR, par, $<ctxt>5, NULL);
+ end_element(ELT_SUB_ADDR, par, $<ctxt>5,
+ GEDCOM_MAKE_NULL(val1));
CHECK0;
compat_generate_resi_end(PARENT, par);
}
}
CHECK0;
compat_generate_resi_end(PARENT, par);
}
}
+ ;
ftree_addr_subs : /* empty */
| ftree_addr_subs ftree_addr_sub
ftree_addr_subs : /* empty */
| ftree_addr_subs ftree_addr_sub
@@
-1228,7
+1260,7
@@
ftree_addr_phon_sect : OPEN DELIM TAG_PHON mand_line_item
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_PHON, GRANDPARENT(1),
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_PHON, GRANDPARENT(1),
- $<ctxt>5,
NULL
);
+ $<ctxt>5,
GEDCOM_MAKE_NULL(val1)
);
}
;
}
;
@@
-1246,7
+1278,7
@@
multim_rec : OPEN DELIM POINTER DELIM TAG_OBJE
obje_subs
{ CHECK2(FORM, BLOB) }
CLOSE
obje_subs
{ CHECK2(FORM, BLOB) }
CLOSE
- { end_record(REC_OBJE, $<ctxt>6); }
+ { end_record(REC_OBJE, $<ctxt>6
, GEDCOM_MAKE_NULL(val1)
); }
;
obje_subs : /* empty */
;
obje_subs : /* empty */
@@
-1273,7
+1305,8
@@
obje_form_sect : OPEN DELIM TAG_FORM mand_line_item
no_std_subs
{ CHECK0 }
CLOSE
no_std_subs
{ CHECK0 }
CLOSE
- { end_element(ELT_OBJE_FORM, PARENT, $<ctxt>5, NULL);
+ { end_element(ELT_OBJE_FORM, PARENT, $<ctxt>5,
+ GEDCOM_MAKE_NULL(val1));
}
;
}
;
@@
-1287,7
+1320,8
@@
obje_titl_sect : OPEN DELIM TAG_TITL mand_line_item
no_std_subs
{ CHECK0 }
CLOSE
no_std_subs
{ CHECK0 }
CLOSE
- { end_element(ELT_OBJE_TITL, PARENT, $<ctxt>5, NULL);
+ { end_element(ELT_OBJE_TITL, PARENT, $<ctxt>5,
+ GEDCOM_MAKE_NULL(val1));
}
;
}
;
@@
-1296,12
+1330,15
@@
obje_blob_sect : OPEN DELIM TAG_BLOB
{ $<ctxt>$ = start_element(ELT_OBJE_BLOB,
PARENT, $1, $3, NULL,
GEDCOM_MAKE_NULL(val1));
{ $<ctxt>$ = start_element(ELT_OBJE_BLOB,
PARENT, $1, $3, NULL,
GEDCOM_MAKE_NULL(val1));
+ reset_buffer(&concat_buffer);
START(BLOB, $1, $<ctxt>$)
}
obje_blob_subs
{ CHECK1(CONT) }
CLOSE
START(BLOB, $1, $<ctxt>$)
}
obje_blob_subs
{ CHECK1(CONT) }
CLOSE
- { end_element(ELT_OBJE_BLOB, PARENT, $<ctxt>4, NULL);
+ { char* complete = get_buf_string(&concat_buffer);
+ end_element(ELT_OBJE_BLOB, PARENT, $<ctxt>4,
+ GEDCOM_MAKE_STRING(val1, complete));
}
;
}
;
@@
-1317,13
+1354,14
@@
obje_blob_cont_sect : OPEN DELIM TAG_CONT mand_line_item
{ $<ctxt>$ = start_element(ELT_OBJE_BLOB_CONT,
PARENT, $1, $3, $4,
GEDCOM_MAKE_STRING(val1, $4));
{ $<ctxt>$ = start_element(ELT_OBJE_BLOB_CONT,
PARENT, $1, $3, $4,
GEDCOM_MAKE_STRING(val1, $4));
+ safe_buf_append(&concat_buffer, $4);
START(CONT, $1, $<ctxt>$)
}
no_std_subs
{ CHECK0 }
CLOSE
{ end_element(ELT_OBJE_BLOB_CONT, PARENT,
START(CONT, $1, $<ctxt>$)
}
no_std_subs
{ CHECK0 }
CLOSE
{ end_element(ELT_OBJE_BLOB_CONT, PARENT,
- $<ctxt>5,
NULL
);
+ $<ctxt>5,
GEDCOM_MAKE_NULL(val1)
);
}
;
}
;
@@
-1340,7
+1378,8
@@
obje_obje_sect : OPEN DELIM TAG_OBJE mand_pointer
no_std_subs
{ CHECK0 }
CLOSE
no_std_subs
{ CHECK0 }
CLOSE
- { end_element(ELT_OBJE_OBJE, PARENT, $<ctxt>5, NULL);
+ { end_element(ELT_OBJE_OBJE, PARENT, $<ctxt>5,
+ GEDCOM_MAKE_NULL(val1));
}
;
}
;
@@
-1354,15
+1393,19
@@
note_rec : OPEN DELIM POINTER DELIM TAG_NOTE note_line_item
$<ctxt>$ = start_record(REC_NOTE,
$1, GEDCOM_MAKE_XREF_PTR(val1, xr), $5,
$6, GEDCOM_MAKE_STRING(val2, $6));
$<ctxt>$ = start_record(REC_NOTE,
$1, GEDCOM_MAKE_XREF_PTR(val1, xr), $5,
$6, GEDCOM_MAKE_STRING(val2, $6));
+ reset_buffer(&concat_buffer);
+ safe_buf_append(&concat_buffer, $6);
START(NOTE, $1, $<ctxt>$) }
note_subs
{ CHECK0 }
CLOSE
START(NOTE, $1, $<ctxt>$) }
note_subs
{ CHECK0 }
CLOSE
- { end_record(REC_NOTE, $<ctxt>7); }
+ { char* complete = get_buf_string(&concat_buffer);
+ end_record(REC_NOTE, $<ctxt>7,
+ GEDCOM_MAKE_STRING(val1, complete)); }
;
note_line_item : /* empty */
;
note_line_item : /* empty */
- { if (!compat_mode(C_
FTRE
E)) {
+ { if (!compat_mode(C_
NOTE_NO_VALU
E)) {
gedcom_error(_("Missing value")); YYERROR;
}
else {
gedcom_error(_("Missing value")); YYERROR;
}
else {
@@
-1399,7
+1442,7
@@
repos_rec : OPEN DELIM POINTER DELIM TAG_REPO
repo_subs
{ CHECK0 }
CLOSE
repo_subs
{ CHECK0 }
CLOSE
- { end_record(REC_REPO, $<ctxt>6); }
+ { end_record(REC_REPO, $<ctxt>6
, GEDCOM_MAKE_NULL(val1)
); }
;
repo_subs : /* empty */
;
repo_subs : /* empty */
@@
-1424,7
+1467,8
@@
repo_name_sect : OPEN DELIM TAG_NAME mand_line_item
no_std_subs
{ CHECK0 }
CLOSE
no_std_subs
{ CHECK0 }
CLOSE
- { end_element(ELT_REPO_NAME, PARENT, $<ctxt>5, NULL);
+ { end_element(ELT_REPO_NAME, PARENT, $<ctxt>5,
+ GEDCOM_MAKE_NULL(val1));
}
;
}
;
@@
-1442,7
+1486,7
@@
source_rec : OPEN DELIM POINTER DELIM TAG_SOUR
sour_subs
{ CHECK0 }
CLOSE
sour_subs
{ CHECK0 }
CLOSE
- { end_record(REC_SOUR, $<ctxt>6); }
+ { end_record(REC_SOUR, $<ctxt>6
, GEDCOM_MAKE_NULL(val1)
); }
;
sour_subs : /* empty */
;
sour_subs : /* empty */
@@
-1473,7
+1517,8
@@
sour_data_sect : OPEN DELIM TAG_DATA
sour_data_subs
{ CHECK0 }
CLOSE
sour_data_subs
{ CHECK0 }
CLOSE
- { end_element(ELT_SOUR_DATA, PARENT, $<ctxt>4, NULL);
+ { end_element(ELT_SOUR_DATA, PARENT, $<ctxt>4,
+ GEDCOM_MAKE_NULL(val1));
}
;
}
;
@@
-1497,7
+1542,7
@@
sour_data_even_sect : OPEN DELIM TAG_EVEN mand_line_item
{ CHECK0 }
CLOSE
{ end_element(ELT_SOUR_DATA_EVEN, PARENT,
{ CHECK0 }
CLOSE
{ end_element(ELT_SOUR_DATA_EVEN, PARENT,
- $<ctxt>5,
NULL
);
+ $<ctxt>5,
GEDCOM_MAKE_NULL(val1)
);
}
;
}
;
@@
-1522,7
+1567,7
@@
sour_data_even_date_sect : OPEN DELIM TAG_DATE mand_line_item
{ CHECK0 }
CLOSE
{ end_element(ELT_SOUR_DATA_EVEN_DATE, PARENT,
{ CHECK0 }
CLOSE
{ end_element(ELT_SOUR_DATA_EVEN_DATE, PARENT,
- $<ctxt>5,
NULL
);
+ $<ctxt>5,
GEDCOM_MAKE_NULL(val1)
);
}
;
}
;
@@
-1537,7
+1582,7
@@
sour_data_even_plac_sect : OPEN DELIM TAG_PLAC mand_line_item
{ CHECK0 }
CLOSE
{ end_element(ELT_SOUR_DATA_EVEN_PLAC, PARENT,
{ CHECK0 }
CLOSE
{ end_element(ELT_SOUR_DATA_EVEN_PLAC, PARENT,
- $<ctxt>5,
NULL
);
+ $<ctxt>5,
GEDCOM_MAKE_NULL(val1)
);
}
;
}
;
@@
-1551,7
+1596,7
@@
sour_data_agnc_sect : OPEN DELIM TAG_AGNC mand_line_item
{ CHECK0 }
CLOSE
{ end_element(ELT_SOUR_DATA_AGNC, PARENT,
{ CHECK0 }
CLOSE
{ end_element(ELT_SOUR_DATA_AGNC, PARENT,
- $<ctxt>5,
NULL
);
+ $<ctxt>5,
GEDCOM_MAKE_NULL(val1)
);
}
;
}
;
@@
-1560,12
+1605,16
@@
sour_auth_sect : OPEN DELIM TAG_AUTH mand_line_item
{ $<ctxt>$ = start_element(ELT_SOUR_AUTH,
PARENT, $1, $3, $4,
GEDCOM_MAKE_STRING(val1, $4));
{ $<ctxt>$ = start_element(ELT_SOUR_AUTH,
PARENT, $1, $3, $4,
GEDCOM_MAKE_STRING(val1, $4));
+ reset_buffer(&concat_buffer);
+ safe_buf_append(&concat_buffer, $4);
START(AUTH, $1, $<ctxt>$)
}
sour_auth_subs
{ CHECK0 }
CLOSE
START(AUTH, $1, $<ctxt>$)
}
sour_auth_subs
{ CHECK0 }
CLOSE
- { end_element(ELT_SOUR_AUTH, PARENT, $<ctxt>5, NULL);
+ { char* complete = get_buf_string(&concat_buffer);
+ end_element(ELT_SOUR_AUTH, PARENT, $<ctxt>5,
+ GEDCOM_MAKE_STRING(val1, complete));
}
;
}
;
@@
-1582,12
+1631,16
@@
sour_titl_sect : OPEN DELIM TAG_TITL mand_line_item
{ $<ctxt>$ = start_element(ELT_SOUR_TITL,
PARENT, $1, $3, $4,
GEDCOM_MAKE_STRING(val1, $4));
{ $<ctxt>$ = start_element(ELT_SOUR_TITL,
PARENT, $1, $3, $4,
GEDCOM_MAKE_STRING(val1, $4));
+ reset_buffer(&concat_buffer);
+ safe_buf_append(&concat_buffer, $4);
START(TITL, $1, $<ctxt>$)
}
sour_titl_subs
{ CHECK0 }
CLOSE
START(TITL, $1, $<ctxt>$)
}
sour_titl_subs
{ CHECK0 }
CLOSE
- { end_element(ELT_SOUR_TITL, PARENT, $<ctxt>5, NULL);
+ { char* complete = get_buf_string(&concat_buffer);
+ end_element(ELT_SOUR_TITL, PARENT, $<ctxt>5,
+ GEDCOM_MAKE_STRING(val1, complete));
}
;
}
;
@@
-1609,7
+1662,8
@@
sour_abbr_sect : OPEN DELIM TAG_ABBR mand_line_item
no_std_subs
{ CHECK0 }
CLOSE
no_std_subs
{ CHECK0 }
CLOSE
- { end_element(ELT_SOUR_ABBR, PARENT, $<ctxt>5, NULL);
+ { end_element(ELT_SOUR_ABBR, PARENT, $<ctxt>5,
+ GEDCOM_MAKE_NULL(val1));
}
;
}
;
@@
-1618,12
+1672,16
@@
sour_publ_sect : OPEN DELIM TAG_PUBL mand_line_item
{ $<ctxt>$ = start_element(ELT_SOUR_PUBL,
PARENT, $1, $3, $4,
GEDCOM_MAKE_STRING(val1, $4));
{ $<ctxt>$ = start_element(ELT_SOUR_PUBL,
PARENT, $1, $3, $4,
GEDCOM_MAKE_STRING(val1, $4));
+ reset_buffer(&concat_buffer);
+ safe_buf_append(&concat_buffer, $4);
START(PUBL, $1, $<ctxt>$)
}
sour_publ_subs
{ CHECK0 }
CLOSE
START(PUBL, $1, $<ctxt>$)
}
sour_publ_subs
{ CHECK0 }
CLOSE
- { end_element(ELT_SOUR_PUBL, PARENT, $<ctxt>5, NULL);
+ { char* complete = get_buf_string(&concat_buffer);
+ end_element(ELT_SOUR_PUBL, PARENT, $<ctxt>5,
+ GEDCOM_MAKE_STRING(val1, complete));
}
;
}
;
@@
-1640,12
+1698,16
@@
sour_text_sect : OPEN DELIM TAG_TEXT mand_line_item
{ $<ctxt>$ = start_element(ELT_SOUR_TEXT,
PARENT, $1, $3, $4,
GEDCOM_MAKE_STRING(val1, $4));
{ $<ctxt>$ = start_element(ELT_SOUR_TEXT,
PARENT, $1, $3, $4,
GEDCOM_MAKE_STRING(val1, $4));
+ reset_buffer(&concat_buffer);
+ safe_buf_append(&concat_buffer, $4);
START(TEXT, $1, $<ctxt>$)
}
sour_text_subs
{ CHECK0 }
CLOSE
START(TEXT, $1, $<ctxt>$)
}
sour_text_subs
{ CHECK0 }
CLOSE
- { end_element(ELT_SOUR_TEXT, PARENT, $<ctxt>5, NULL);
+ { char* complete = get_buf_string(&concat_buffer);
+ end_element(ELT_SOUR_TEXT, PARENT, $<ctxt>5,
+ GEDCOM_MAKE_STRING(val1, complete));
}
;
}
;
@@
-1671,7
+1733,7
@@
submis_rec : OPEN DELIM POINTER DELIM TAG_SUBN
subn_subs
{ CHECK0 }
CLOSE
subn_subs
{ CHECK0 }
CLOSE
- { end_record(REC_SUBN, $<ctxt>6); }
+ { end_record(REC_SUBN, $<ctxt>6
, GEDCOM_MAKE_NULL(val1)
); }
;
subn_subs : /* empty */
;
subn_subs : /* empty */
@@
-1701,7
+1763,8
@@
subn_subm_sect : OPEN DELIM TAG_SUBM mand_pointer
no_std_subs
{ CHECK0 }
CLOSE
no_std_subs
{ CHECK0 }
CLOSE
- { end_element(ELT_SUBN_SUBM, PARENT, $<ctxt>5, NULL);
+ { end_element(ELT_SUBN_SUBM, PARENT, $<ctxt>5,
+ GEDCOM_MAKE_NULL(val1));
}
;
}
;
@@
-1715,7
+1778,8
@@
subn_famf_sect : OPEN DELIM TAG_FAMF mand_line_item
no_std_subs
{ CHECK0 }
CLOSE
no_std_subs
{ CHECK0 }
CLOSE
- { end_element(ELT_SUBN_FAMF, PARENT, $<ctxt>5, NULL);
+ { end_element(ELT_SUBN_FAMF, PARENT, $<ctxt>5,
+ GEDCOM_MAKE_NULL(val1));
}
;
}
;
@@
-1729,7
+1793,8
@@
subn_temp_sect : OPEN DELIM TAG_TEMP mand_line_item
no_std_subs
{ CHECK0 }
CLOSE
no_std_subs
{ CHECK0 }
CLOSE
- { end_element(ELT_SUBN_TEMP, PARENT, $<ctxt>5, NULL);
+ { end_element(ELT_SUBN_TEMP, PARENT, $<ctxt>5,
+ GEDCOM_MAKE_NULL(val1));
}
;
}
;
@@
-1743,7
+1808,8
@@
subn_ance_sect : OPEN DELIM TAG_ANCE mand_line_item
no_std_subs
{ CHECK0 }
CLOSE
no_std_subs
{ CHECK0 }
CLOSE
- { end_element(ELT_SUBN_ANCE, PARENT, $<ctxt>5, NULL);
+ { end_element(ELT_SUBN_ANCE, PARENT, $<ctxt>5,
+ GEDCOM_MAKE_NULL(val1));
}
;
}
;
@@
-1757,7
+1823,8
@@
subn_desc_sect : OPEN DELIM TAG_DESC mand_line_item
no_std_subs
{ CHECK0 }
CLOSE
no_std_subs
{ CHECK0 }
CLOSE
- { end_element(ELT_SUBN_DESC, PARENT, $<ctxt>5, NULL);
+ { end_element(ELT_SUBN_DESC, PARENT, $<ctxt>5,
+ GEDCOM_MAKE_NULL(val1));
}
;
}
;
@@
-1771,7
+1838,8
@@
subn_ordi_sect : OPEN DELIM TAG_ORDI mand_line_item
no_std_subs
{ CHECK0 }
CLOSE
no_std_subs
{ CHECK0 }
CLOSE
- { end_element(ELT_SUBN_ORDI, PARENT, $<ctxt>5, NULL);
+ { end_element(ELT_SUBN_ORDI, PARENT, $<ctxt>5,
+ GEDCOM_MAKE_NULL(val1));
}
;
}
;
@@
-1785,7
+1853,8
@@
subn_rin_sect : OPEN DELIM TAG_RIN mand_line_item
no_std_subs
{ CHECK0 }
CLOSE
no_std_subs
{ CHECK0 }
CLOSE
- { end_element(ELT_SUBN_RIN, PARENT, $<ctxt>5, NULL);
+ { end_element(ELT_SUBN_RIN, PARENT, $<ctxt>5,
+ GEDCOM_MAKE_NULL(val1));
}
;
}
;
@@
-1803,7
+1872,7
@@
submit_rec : OPEN DELIM POINTER DELIM TAG_SUBM
subm_subs
{ CHECK1(NAME) }
CLOSE
subm_subs
{ CHECK1(NAME) }
CLOSE
- { end_record(REC_SUBM, $<ctxt>6); }
+ { end_record(REC_SUBM, $<ctxt>6
, GEDCOM_MAKE_NULL(val1)
); }
;
subm_subs : /* empty */
;
subm_subs : /* empty */
@@
-1830,7
+1899,8
@@
subm_name_sect : OPEN DELIM TAG_NAME mand_line_item
no_std_subs
{ CHECK0 }
CLOSE
no_std_subs
{ CHECK0 }
CLOSE
- { end_element(ELT_SUBM_NAME, PARENT, $<ctxt>5, NULL);
+ { end_element(ELT_SUBM_NAME, PARENT, $<ctxt>5,
+ GEDCOM_MAKE_NULL(val1));
}
;
}
;
@@
-1844,7
+1914,8
@@
subm_lang_sect : OPEN DELIM TAG_LANG mand_line_item
no_std_subs
{ CHECK0 }
CLOSE
no_std_subs
{ CHECK0 }
CLOSE
- { end_element(ELT_SUBM_LANG, PARENT, $<ctxt>5, NULL);
+ { end_element(ELT_SUBM_LANG, PARENT, $<ctxt>5,
+ GEDCOM_MAKE_NULL(val1));
}
;
}
;
@@
-1858,7
+1929,8
@@
subm_rfn_sect : OPEN DELIM TAG_RFN mand_line_item
no_std_subs
{ CHECK0 }
CLOSE
no_std_subs
{ CHECK0 }
CLOSE
- { end_element(ELT_SUBM_RFN, PARENT, $<ctxt>5, NULL);
+ { end_element(ELT_SUBM_RFN, PARENT, $<ctxt>5,
+ GEDCOM_MAKE_NULL(val1));
}
;
}
;
@@
-1872,7
+1944,8
@@
subm_rin_sect : OPEN DELIM TAG_RIN mand_line_item
no_std_subs
{ CHECK0 }
CLOSE
no_std_subs
{ CHECK0 }
CLOSE
- { end_element(ELT_SUBM_RIN, PARENT, $<ctxt>5, NULL);
+ { end_element(ELT_SUBM_RIN, PARENT, $<ctxt>5,
+ GEDCOM_MAKE_NULL(val1));
}
;
}
;
@@
-1889,12
+1962,16
@@
addr_sect : OPEN DELIM TAG_ADDR mand_line_item
{ $<ctxt>$ = start_element(ELT_SUB_ADDR,
PARENT, $1, $3, $4,
GEDCOM_MAKE_STRING(val1, $4));
{ $<ctxt>$ = start_element(ELT_SUB_ADDR,
PARENT, $1, $3, $4,
GEDCOM_MAKE_STRING(val1, $4));
+ reset_buffer(&concat_buffer);
+ safe_buf_append(&concat_buffer, $4);
START(ADDR, $1, $<ctxt>$)
}
addr_subs
{ CHECK0 }
CLOSE
START(ADDR, $1, $<ctxt>$)
}
addr_subs
{ CHECK0 }
CLOSE
- { end_element(ELT_SUB_ADDR, PARENT, $<ctxt>5, NULL);
+ { char* complete = get_buf_string(&concat_buffer);
+ end_element(ELT_SUB_ADDR, PARENT, $<ctxt>5,
+ GEDCOM_MAKE_STRING(val1, complete));
}
;
}
;
@@
-1916,12
+1993,15
@@
addr_cont_sect : OPEN DELIM TAG_CONT mand_line_item
{ $<ctxt>$ = start_element(ELT_SUB_ADDR_CONT,
PARENT, $1, $3, $4,
GEDCOM_MAKE_STRING(val1, $4));
{ $<ctxt>$ = start_element(ELT_SUB_ADDR_CONT,
PARENT, $1, $3, $4,
GEDCOM_MAKE_STRING(val1, $4));
+ SAFE_BUF_ADDCHAR(&concat_buffer, '\n');
+ safe_buf_append(&concat_buffer, $4);
START(CONT, $1, $<ctxt>$)
}
no_std_subs
{ CHECK0 }
CLOSE
START(CONT, $1, $<ctxt>$)
}
no_std_subs
{ CHECK0 }
CLOSE
- { end_element(ELT_SUB_ADDR_CONT, PARENT, $<ctxt>5, NULL);
+ { end_element(ELT_SUB_ADDR_CONT, PARENT, $<ctxt>5,
+ GEDCOM_MAKE_NULL(val1));
}
;
addr_adr1_sect : OPEN DELIM TAG_ADR1 mand_line_item
}
;
addr_adr1_sect : OPEN DELIM TAG_ADR1 mand_line_item
@@
-1933,7
+2013,8
@@
addr_adr1_sect : OPEN DELIM TAG_ADR1 mand_line_item
no_std_subs
{ CHECK0 }
CLOSE
no_std_subs
{ CHECK0 }
CLOSE
- { end_element(ELT_SUB_ADDR_ADR1, PARENT, $<ctxt>5, NULL);
+ { end_element(ELT_SUB_ADDR_ADR1, PARENT, $<ctxt>5,
+ GEDCOM_MAKE_NULL(val1));
}
;
addr_adr2_sect : OPEN DELIM TAG_ADR2 mand_line_item
}
;
addr_adr2_sect : OPEN DELIM TAG_ADR2 mand_line_item
@@
-1945,7
+2026,8
@@
addr_adr2_sect : OPEN DELIM TAG_ADR2 mand_line_item
no_std_subs
{ CHECK0 }
CLOSE
no_std_subs
{ CHECK0 }
CLOSE
- { end_element(ELT_SUB_ADDR_ADR2, PARENT, $<ctxt>5, NULL);
+ { end_element(ELT_SUB_ADDR_ADR2, PARENT, $<ctxt>5,
+ GEDCOM_MAKE_NULL(val1));
}
;
addr_city_sect : OPEN DELIM TAG_CITY mand_line_item
}
;
addr_city_sect : OPEN DELIM TAG_CITY mand_line_item
@@
-1957,7
+2039,8
@@
addr_city_sect : OPEN DELIM TAG_CITY mand_line_item
no_std_subs
{ CHECK0 }
CLOSE
no_std_subs
{ CHECK0 }
CLOSE
- { end_element(ELT_SUB_ADDR_CITY, PARENT, $<ctxt>5, NULL);
+ { end_element(ELT_SUB_ADDR_CITY, PARENT, $<ctxt>5,
+ GEDCOM_MAKE_NULL(val1));
}
;
addr_stae_sect : OPEN DELIM TAG_STAE mand_line_item
}
;
addr_stae_sect : OPEN DELIM TAG_STAE mand_line_item
@@
-1969,7
+2052,8
@@
addr_stae_sect : OPEN DELIM TAG_STAE mand_line_item
no_std_subs
{ CHECK0 }
CLOSE
no_std_subs
{ CHECK0 }
CLOSE
- { end_element(ELT_SUB_ADDR_STAE, PARENT, $<ctxt>5, NULL);
+ { end_element(ELT_SUB_ADDR_STAE, PARENT, $<ctxt>5,
+ GEDCOM_MAKE_NULL(val1));
}
;
addr_post_sect : OPEN DELIM TAG_POST mand_line_item
}
;
addr_post_sect : OPEN DELIM TAG_POST mand_line_item
@@
-1981,7
+2065,8
@@
addr_post_sect : OPEN DELIM TAG_POST mand_line_item
no_std_subs
{ CHECK0 }
CLOSE
no_std_subs
{ CHECK0 }
CLOSE
- { end_element(ELT_SUB_ADDR_POST, PARENT, $<ctxt>5, NULL);
+ { end_element(ELT_SUB_ADDR_POST, PARENT, $<ctxt>5,
+ GEDCOM_MAKE_NULL(val1));
}
;
addr_ctry_sect : OPEN DELIM TAG_CTRY mand_line_item
}
;
addr_ctry_sect : OPEN DELIM TAG_CTRY mand_line_item
@@
-1993,7
+2078,8
@@
addr_ctry_sect : OPEN DELIM TAG_CTRY mand_line_item
no_std_subs
{ CHECK0 }
CLOSE
no_std_subs
{ CHECK0 }
CLOSE
- { end_element(ELT_SUB_ADDR_CTRY, PARENT, $<ctxt>5, NULL);
+ { end_element(ELT_SUB_ADDR_CTRY, PARENT, $<ctxt>5,
+ GEDCOM_MAKE_NULL(val1));
}
;
}
;
@@
-2006,7
+2092,8
@@
phon_sect : OPEN DELIM TAG_PHON mand_line_item
no_std_subs
{ CHECK0 }
CLOSE
no_std_subs
{ CHECK0 }
CLOSE
- { end_element(ELT_SUB_PHON, PARENT, $<ctxt>5, NULL);
+ { end_element(ELT_SUB_PHON, PARENT, $<ctxt>5,
+ GEDCOM_MAKE_NULL(val1));
}
;
}
;
@@
-2026,7
+2113,8
@@
asso_sect : OPEN DELIM TAG_ASSO mand_pointer
asso_subs
{ CHECK2(TYPE,RELA) }
CLOSE
asso_subs
{ CHECK2(TYPE,RELA) }
CLOSE
- { end_element(ELT_SUB_ASSO, PARENT, $<ctxt>5, NULL);
+ { end_element(ELT_SUB_ASSO, PARENT, $<ctxt>5,
+ GEDCOM_MAKE_NULL(val1));
}
;
}
;
@@
-2047,7
+2135,8
@@
asso_type_sect : OPEN DELIM TAG_TYPE mand_line_item
no_std_subs
{ CHECK0 }
CLOSE
no_std_subs
{ CHECK0 }
CLOSE
- { end_element(ELT_SUB_ASSO_TYPE, PARENT, $<ctxt>5, NULL);
+ { end_element(ELT_SUB_ASSO_TYPE, PARENT, $<ctxt>5,
+ GEDCOM_MAKE_NULL(val1));
}
;
}
;
@@
-2060,7
+2149,8
@@
asso_rela_sect : OPEN DELIM TAG_RELA mand_line_item
no_std_subs
{ CHECK0 }
CLOSE
no_std_subs
{ CHECK0 }
CLOSE
- { end_element(ELT_SUB_ASSO_RELA, PARENT, $<ctxt>5, NULL);
+ { end_element(ELT_SUB_ASSO_RELA, PARENT, $<ctxt>5,
+ GEDCOM_MAKE_NULL(val1));
}
;
}
;
@@
-2077,7
+2167,8
@@
change_date_chan_sect : OPEN DELIM TAG_CHAN
change_date_chan_subs
{ CHECK1(DATE) }
CLOSE
change_date_chan_subs
{ CHECK1(DATE) }
CLOSE
- { end_element(ELT_SUB_CHAN, PARENT, $<ctxt>4, NULL);
+ { end_element(ELT_SUB_CHAN, PARENT, $<ctxt>4,
+ GEDCOM_MAKE_NULL(val1));
}
;
}
;
@@
-2100,7
+2191,7
@@
change_date_date_sect : OPEN DELIM TAG_DATE mand_line_item
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_CHAN_DATE, PARENT, $<ctxt>5,
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_CHAN_DATE, PARENT, $<ctxt>5,
-
NULL
);
+
GEDCOM_MAKE_NULL(val1)
);
}
;
}
;
@@
-2123,7
+2214,7
@@
change_date_date_time_sect : OPEN DELIM TAG_TIME mand_line_item
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_CHAN_TIME, PARENT, $<ctxt>5,
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_CHAN_TIME, PARENT, $<ctxt>5,
-
NULL
);
+
GEDCOM_MAKE_NULL(val1)
);
}
;
}
;
@@
-2143,7
+2234,8
@@
famc_sect : OPEN DELIM TAG_FAMC mand_pointer
famc_subs
{ CHECK0 }
CLOSE
famc_subs
{ CHECK0 }
CLOSE
- { end_element(ELT_SUB_FAMC, PARENT, $<ctxt>5, NULL);
+ { end_element(ELT_SUB_FAMC, PARENT, $<ctxt>5,
+ GEDCOM_MAKE_NULL(val1));
}
;
}
;
@@
-2165,7
+2257,8
@@
famc_pedi_sect : OPEN DELIM TAG_PEDI mand_line_item
no_std_subs
{ CHECK0 }
CLOSE
no_std_subs
{ CHECK0 }
CLOSE
- { end_element(ELT_SUB_FAMC_PEDI, PARENT, $<ctxt>5, NULL);
+ { end_element(ELT_SUB_FAMC_PEDI, PARENT, $<ctxt>5,
+ GEDCOM_MAKE_NULL(val1));
}
;
}
;
@@
-2178,12
+2271,15
@@
cont_sect : OPEN DELIM TAG_CONT mand_line_item
{ $<ctxt>$ = start_element(ELT_SUB_CONT,
PARENT, $1, $3, $4,
GEDCOM_MAKE_STRING(val1, $4));
{ $<ctxt>$ = start_element(ELT_SUB_CONT,
PARENT, $1, $3, $4,
GEDCOM_MAKE_STRING(val1, $4));
+ SAFE_BUF_ADDCHAR(&concat_buffer, '\n');
+ safe_buf_append(&concat_buffer, $4);
START(CONT, $1, $<ctxt>$)
}
no_std_subs
{ CHECK0 }
CLOSE
START(CONT, $1, $<ctxt>$)
}
no_std_subs
{ CHECK0 }
CLOSE
- { end_element(ELT_SUB_CONT, PARENT, $<ctxt>5, NULL);
+ { end_element(ELT_SUB_CONT, PARENT, $<ctxt>5,
+ GEDCOM_MAKE_NULL(val1));
}
;
}
;
@@
-2191,12
+2287,14
@@
conc_sect : OPEN DELIM TAG_CONC mand_line_item
{ $<ctxt>$ = start_element(ELT_SUB_CONC,
PARENT, $1, $3, $4,
GEDCOM_MAKE_STRING(val1, $4));
{ $<ctxt>$ = start_element(ELT_SUB_CONC,
PARENT, $1, $3, $4,
GEDCOM_MAKE_STRING(val1, $4));
+ safe_buf_append(&concat_buffer, $4);
START(CONC, $1, $<ctxt>$)
}
no_std_subs
{ CHECK0 }
CLOSE
START(CONC, $1, $<ctxt>$)
}
no_std_subs
{ CHECK0 }
CLOSE
- { end_element(ELT_SUB_CONC, PARENT, $<ctxt>5, NULL);
+ { end_element(ELT_SUB_CONC, PARENT, $<ctxt>5,
+ GEDCOM_MAKE_NULL(val1));
}
;
}
;
@@
-2224,7
+2322,7
@@
event_detail_type_sect : OPEN DELIM TAG_TYPE mand_line_item
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_EVT_TYPE, PARENT, $<ctxt>5,
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_EVT_TYPE, PARENT, $<ctxt>5,
-
NULL
);
+
GEDCOM_MAKE_NULL(val1)
);
}
;
event_detail_date_sect : OPEN DELIM TAG_DATE mand_line_item
}
;
event_detail_date_sect : OPEN DELIM TAG_DATE mand_line_item
@@
-2239,7
+2337,7
@@
event_detail_date_sect : OPEN DELIM TAG_DATE mand_line_item
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_EVT_DATE, PARENT, $<ctxt>5,
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_EVT_DATE, PARENT, $<ctxt>5,
-
NULL
);
+
GEDCOM_MAKE_NULL(val1)
);
}
;
event_detail_age_sect : OPEN DELIM TAG_AGE mand_line_item
}
;
event_detail_age_sect : OPEN DELIM TAG_AGE mand_line_item
@@
-2254,7
+2352,7
@@
event_detail_age_sect : OPEN DELIM TAG_AGE mand_line_item
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_EVT_AGE, PARENT, $<ctxt>5,
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_EVT_AGE, PARENT, $<ctxt>5,
-
NULL
);
+
GEDCOM_MAKE_NULL(val1)
);
}
;
event_detail_agnc_sect : OPEN DELIM TAG_AGNC mand_line_item
}
;
event_detail_agnc_sect : OPEN DELIM TAG_AGNC mand_line_item
@@
-2268,7
+2366,7
@@
event_detail_agnc_sect : OPEN DELIM TAG_AGNC mand_line_item
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_EVT_AGNC, PARENT, $<ctxt>5,
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_EVT_AGNC, PARENT, $<ctxt>5,
-
NULL
);
+
GEDCOM_MAKE_NULL(val1)
);
}
;
event_detail_caus_sect : OPEN DELIM TAG_CAUS mand_line_item
}
;
event_detail_caus_sect : OPEN DELIM TAG_CAUS mand_line_item
@@
-2282,7
+2380,7
@@
event_detail_caus_sect : OPEN DELIM TAG_CAUS mand_line_item
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_EVT_CAUS, PARENT, $<ctxt>5,
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_EVT_CAUS, PARENT, $<ctxt>5,
-
NULL
);
+
GEDCOM_MAKE_NULL(val1)
);
}
;
}
;
@@
-2301,7
+2399,8
@@
fam_event_sect : OPEN DELIM fam_event_tag opt_value
fam_event_subs
{ CHECK0 }
CLOSE
fam_event_subs
{ CHECK0 }
CLOSE
- { end_element(ELT_SUB_FAM_EVT, PARENT, $<ctxt>5, NULL);
+ { end_element(ELT_SUB_FAM_EVT, PARENT, $<ctxt>5,
+ GEDCOM_MAKE_NULL(val1));
}
;
}
;
@@
-2337,7
+2436,7
@@
fam_even_husb_sect : OPEN DELIM TAG_HUSB
{ CHECK1(AGE) }
CLOSE
{ end_element(ELT_SUB_FAM_EVT_HUSB, PARENT, $<ctxt>4,
{ CHECK1(AGE) }
CLOSE
{ end_element(ELT_SUB_FAM_EVT_HUSB, PARENT, $<ctxt>4,
-
NULL
);
+
GEDCOM_MAKE_NULL(val1)
);
}
;
}
;
@@
-2360,7
+2459,7
@@
fam_even_age_sect : OPEN DELIM TAG_AGE mand_line_item
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_FAM_EVT_AGE, PARENT, $<ctxt>5,
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_FAM_EVT_AGE, PARENT, $<ctxt>5,
-
NULL
);
+
GEDCOM_MAKE_NULL(val1)
);
}
;
}
;
@@
-2374,7
+2473,7
@@
fam_even_wife_sect : OPEN DELIM TAG_WIFE
{ CHECK1(AGE) }
CLOSE
{ end_element(ELT_SUB_FAM_EVT_WIFE, PARENT, $<ctxt>4,
{ CHECK1(AGE) }
CLOSE
{ end_element(ELT_SUB_FAM_EVT_WIFE, PARENT, $<ctxt>4,
-
NULL
);
+
GEDCOM_MAKE_NULL(val1)
);
}
;
}
;
@@
-2388,7
+2487,7
@@
fam_gen_even_sect : OPEN DELIM TAG_EVEN
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_FAM_EVT_EVEN, PARENT, $<ctxt>4,
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_FAM_EVT_EVEN, PARENT, $<ctxt>4,
-
NULL
);
+
GEDCOM_MAKE_NULL(val1)
);
}
;
}
;
@@
-2417,7
+2516,7
@@
ident_refn_sect : OPEN DELIM TAG_REFN mand_line_item
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_IDENT_REFN, PARENT, $<ctxt>5,
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_IDENT_REFN, PARENT, $<ctxt>5,
-
NULL
);
+
GEDCOM_MAKE_NULL(val1)
);
}
;
}
;
@@
-2440,7
+2539,7
@@
ident_refn_type_sect : OPEN DELIM TAG_TYPE mand_line_item
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_IDENT_REFN_TYPE, PARENT, $<ctxt>5,
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_IDENT_REFN_TYPE, PARENT, $<ctxt>5,
-
NULL
);
+
GEDCOM_MAKE_NULL(val1)
);
}
;
}
;
@@
-2454,7
+2553,7
@@
ident_rin_sect : OPEN DELIM TAG_RIN mand_line_item
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_IDENT_RIN, PARENT, $<ctxt>5,
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_IDENT_RIN, PARENT, $<ctxt>5,
-
NULL
);
+
GEDCOM_MAKE_NULL(val1)
);
}
;
}
;
@@
-2472,8
+2571,10
@@
indiv_attr_sect : OPEN DELIM indiv_attr_tag mand_line_item
indiv_attr_event_subs
{ CHECK0 }
CLOSE
indiv_attr_event_subs
{ CHECK0 }
CLOSE
- { end_element(ELT_SUB_INDIV_ATTR, PARENT, $<ctxt>5, NULL);
+ { end_element(ELT_SUB_INDIV_ATTR, PARENT, $<ctxt>5,
+ GEDCOM_MAKE_NULL(val1));
}
}
+ ;
indiv_attr_tag : TAG_CAST { $$ = $1; START1(CAST) }
| TAG_DSCR { $$ = $1; START1(DSCR) }
indiv_attr_tag : TAG_CAST { $$ = $1; START1(CAST) }
| TAG_DSCR { $$ = $1; START1(DSCR) }
@@
-2487,6
+2588,7
@@
indiv_attr_tag : TAG_CAST { $$ = $1; START1(CAST) }
| TAG_RELI { $$ = $1; START1(RELI) }
| TAG_SSN { $$ = $1; START1(SSN) }
| TAG_TITL { $$ = $1; START1(TITL) }
| TAG_RELI { $$ = $1; START1(RELI) }
| TAG_SSN { $$ = $1; START1(SSN) }
| TAG_TITL { $$ = $1; START1(TITL) }
+ ;
indiv_resi_sect : OPEN DELIM TAG_RESI
{ $<ctxt>$ = start_element(ELT_SUB_INDIV_RESI,
indiv_resi_sect : OPEN DELIM TAG_RESI
{ $<ctxt>$ = start_element(ELT_SUB_INDIV_RESI,
@@
-2497,7
+2599,8
@@
indiv_resi_sect : OPEN DELIM TAG_RESI
indiv_attr_event_subs
{ CHECK0 }
CLOSE
indiv_attr_event_subs
{ CHECK0 }
CLOSE
- { end_element(ELT_SUB_INDIV_RESI, PARENT, $<ctxt>4, NULL);
+ { end_element(ELT_SUB_INDIV_RESI, PARENT, $<ctxt>4,
+ GEDCOM_MAKE_NULL(val1));
}
;
}
;
@@
-2526,7
+2629,8
@@
indiv_birt_sect : OPEN DELIM indiv_birt_tag opt_value
indiv_birt_subs
{ CHECK0 }
CLOSE
indiv_birt_subs
{ CHECK0 }
CLOSE
- { end_element(ELT_SUB_INDIV_BIRT, PARENT, $<ctxt>5, NULL);
+ { end_element(ELT_SUB_INDIV_BIRT, PARENT, $<ctxt>5,
+ GEDCOM_MAKE_NULL(val1));
}
;
}
;
@@
-2558,7
+2662,7
@@
indiv_birt_famc_sect : OPEN DELIM TAG_FAMC mand_pointer
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_INDIV_BIRT_FAMC, PARENT, $<ctxt>5,
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_INDIV_BIRT_FAMC, PARENT, $<ctxt>5,
-
NULL
);
+
GEDCOM_MAKE_NULL(val1)
);
}
;
}
;
@@
-2572,7
+2676,8
@@
indiv_gen_sect : OPEN DELIM indiv_gen_tag opt_value
indiv_gen_subs
{ CHECK0 }
CLOSE
indiv_gen_subs
{ CHECK0 }
CLOSE
- { end_element(ELT_SUB_INDIV_GEN, PARENT, $<ctxt>5, NULL);
+ { end_element(ELT_SUB_INDIV_GEN, PARENT, $<ctxt>5,
+ GEDCOM_MAKE_NULL(val1));
}
;
}
;
@@
-2614,7
+2719,8
@@
indiv_adop_sect : OPEN DELIM TAG_ADOP opt_value
indiv_adop_subs
{ CHECK0 }
CLOSE
indiv_adop_subs
{ CHECK0 }
CLOSE
- { end_element(ELT_SUB_INDIV_ADOP, PARENT, $<ctxt>5, NULL);
+ { end_element(ELT_SUB_INDIV_ADOP, PARENT, $<ctxt>5,
+ GEDCOM_MAKE_NULL(val1));
}
;
}
;
@@
-2641,7
+2747,7
@@
indiv_adop_famc_sect : OPEN DELIM TAG_FAMC mand_pointer
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_INDIV_ADOP_FAMC, PARENT, $<ctxt>5,
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_INDIV_ADOP_FAMC, PARENT, $<ctxt>5,
-
NULL
);
+
GEDCOM_MAKE_NULL(val1)
);
}
;
}
;
@@
-2663,7
+2769,8
@@
indiv_adop_famc_adop_sect : OPEN DELIM TAG_ADOP mand_line_item
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_INDIV_ADOP_FAMC_ADOP,
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_INDIV_ADOP_FAMC_ADOP,
- PARENT, $<ctxt>5, NULL);
+ PARENT, $<ctxt>5,
+ GEDCOM_MAKE_NULL(val1));
}
;
}
;
@@
-2675,7
+2782,8
@@
indiv_even_sect : OPEN DELIM TAG_EVEN
indiv_gen_subs
{ CHECK0 }
CLOSE
indiv_gen_subs
{ CHECK0 }
CLOSE
- { end_element(ELT_SUB_INDIV_EVEN, PARENT, $<ctxt>4, NULL);
+ { end_element(ELT_SUB_INDIV_EVEN, PARENT, $<ctxt>4,
+ GEDCOM_MAKE_NULL(val1));
}
;
}
;
@@
-2693,7
+2801,8
@@
lio_bapl_sect : OPEN DELIM lio_bapl_tag
lio_bapl_subs
{ CHECK0 }
CLOSE
lio_bapl_subs
{ CHECK0 }
CLOSE
- { end_element(ELT_SUB_LIO_BAPL, PARENT, $<ctxt>4, NULL);
+ { end_element(ELT_SUB_LIO_BAPL, PARENT, $<ctxt>4,
+ GEDCOM_MAKE_NULL(val1));
}
;
}
;
@@
-2725,7
+2834,7
@@
lio_bapl_stat_sect : OPEN DELIM TAG_STAT mand_line_item
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_LIO_BAPL_STAT, PARENT, $<ctxt>5,
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_LIO_BAPL_STAT, PARENT, $<ctxt>5,
-
NULL
);
+
GEDCOM_MAKE_NULL(val1)
);
}
;
lio_bapl_date_sect : OPEN DELIM TAG_DATE mand_line_item
}
;
lio_bapl_date_sect : OPEN DELIM TAG_DATE mand_line_item
@@
-2739,7
+2848,7
@@
lio_bapl_date_sect : OPEN DELIM TAG_DATE mand_line_item
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_LIO_BAPL_DATE, PARENT, $<ctxt>5,
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_LIO_BAPL_DATE, PARENT, $<ctxt>5,
-
NULL
);
+
GEDCOM_MAKE_NULL(val1)
);
}
;
lio_bapl_temp_sect : OPEN DELIM TAG_TEMP mand_line_item
}
;
lio_bapl_temp_sect : OPEN DELIM TAG_TEMP mand_line_item
@@
-2752,7
+2861,7
@@
lio_bapl_temp_sect : OPEN DELIM TAG_TEMP mand_line_item
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_LIO_BAPL_TEMP, PARENT, $<ctxt>5,
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_LIO_BAPL_TEMP, PARENT, $<ctxt>5,
-
NULL
);
+
GEDCOM_MAKE_NULL(val1)
);
}
;
lio_bapl_plac_sect : OPEN DELIM TAG_PLAC mand_line_item
}
;
lio_bapl_plac_sect : OPEN DELIM TAG_PLAC mand_line_item
@@
-2765,7
+2874,7
@@
lio_bapl_plac_sect : OPEN DELIM TAG_PLAC mand_line_item
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_LIO_BAPL_PLAC, PARENT, $<ctxt>5,
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_LIO_BAPL_PLAC, PARENT, $<ctxt>5,
-
NULL
);
+
GEDCOM_MAKE_NULL(val1)
);
}
;
}
;
@@
-2778,7
+2887,8
@@
lio_slgc_sect : OPEN DELIM TAG_SLGC
lio_slgc_subs
{ CHECK1(FAMC) }
CLOSE
lio_slgc_subs
{ CHECK1(FAMC) }
CLOSE
- { end_element(ELT_SUB_LIO_SLGC, PARENT, $<ctxt>4, NULL);
+ { end_element(ELT_SUB_LIO_SLGC, PARENT, $<ctxt>4,
+ GEDCOM_MAKE_NULL(val1));
}
;
}
;
@@
-2804,7
+2914,7
@@
lio_slgc_famc_sect : OPEN DELIM TAG_FAMC mand_pointer
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_LIO_SLGC_FAMC, PARENT, $<ctxt>5,
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_LIO_SLGC_FAMC, PARENT, $<ctxt>5,
-
NULL
);
+
GEDCOM_MAKE_NULL(val1)
);
}
;
}
;
@@
-2820,7
+2930,8
@@
lss_slgs_sect : OPEN DELIM TAG_SLGS
lss_slgs_subs
{ CHECK0 }
CLOSE
lss_slgs_subs
{ CHECK0 }
CLOSE
- { end_element(ELT_SUB_LIO_SLGC, PARENT, $<ctxt>4, NULL);
+ { end_element(ELT_SUB_LIO_SLGC, PARENT, $<ctxt>4,
+ GEDCOM_MAKE_NULL(val1));
}
;
}
;
@@
-2847,7
+2958,7
@@
lss_slgs_stat_sect : OPEN DELIM TAG_STAT mand_line_item
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_LSS_SLGS_STAT, PARENT, $<ctxt>5,
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_LSS_SLGS_STAT, PARENT, $<ctxt>5,
-
NULL
);
+
GEDCOM_MAKE_NULL(val1)
);
}
;
lss_slgs_date_sect : OPEN DELIM TAG_DATE mand_line_item
}
;
lss_slgs_date_sect : OPEN DELIM TAG_DATE mand_line_item
@@
-2861,7
+2972,7
@@
lss_slgs_date_sect : OPEN DELIM TAG_DATE mand_line_item
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_LSS_SLGS_DATE, PARENT, $<ctxt>5,
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_LSS_SLGS_DATE, PARENT, $<ctxt>5,
-
NULL
);
+
GEDCOM_MAKE_NULL(val1)
);
}
;
lss_slgs_temp_sect : OPEN DELIM TAG_TEMP mand_line_item
}
;
lss_slgs_temp_sect : OPEN DELIM TAG_TEMP mand_line_item
@@
-2874,7
+2985,7
@@
lss_slgs_temp_sect : OPEN DELIM TAG_TEMP mand_line_item
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_LSS_SLGS_TEMP, PARENT, $<ctxt>5,
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_LSS_SLGS_TEMP, PARENT, $<ctxt>5,
-
NULL
);
+
GEDCOM_MAKE_NULL(val1)
);
}
;
lss_slgs_plac_sect : OPEN DELIM TAG_PLAC mand_line_item
}
;
lss_slgs_plac_sect : OPEN DELIM TAG_PLAC mand_line_item
@@
-2887,7
+2998,7
@@
lss_slgs_plac_sect : OPEN DELIM TAG_PLAC mand_line_item
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_LSS_SLGS_PLAC, PARENT, $<ctxt>5,
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_LSS_SLGS_PLAC, PARENT, $<ctxt>5,
-
NULL
);
+
GEDCOM_MAKE_NULL(val1)
);
}
;
}
;
@@
-2911,7
+3022,7
@@
multim_obje_link_sect : OPEN DELIM TAG_OBJE DELIM POINTER
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_MULTIM_OBJE, PARENT, $<ctxt>6,
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_MULTIM_OBJE, PARENT, $<ctxt>6,
-
NULL
);
+
GEDCOM_MAKE_NULL(val1)
);
}
;
}
;
@@
-2925,7
+3036,7
@@
multim_obje_emb_sect : OPEN DELIM TAG_OBJE
{ CHECK2(FORM,FILE) }
CLOSE
{ end_element(ELT_SUB_MULTIM_OBJE, PARENT, $<ctxt>4,
{ CHECK2(FORM,FILE) }
CLOSE
{ end_element(ELT_SUB_MULTIM_OBJE, PARENT, $<ctxt>4,
-
NULL
);
+
GEDCOM_MAKE_NULL(val1)
);
}
;
}
;
@@
-2951,7
+3062,8
@@
multim_obje_form_sect : OPEN DELIM TAG_FORM mand_line_item
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_MULTIM_OBJE_FORM,
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_MULTIM_OBJE_FORM,
- PARENT, $<ctxt>5, NULL);
+ PARENT, $<ctxt>5,
+ GEDCOM_MAKE_NULL(val1));
}
;
multim_obje_titl_sect : OPEN DELIM TAG_TITL mand_line_item
}
;
multim_obje_titl_sect : OPEN DELIM TAG_TITL mand_line_item
@@
-2965,7
+3077,8
@@
multim_obje_titl_sect : OPEN DELIM TAG_TITL mand_line_item
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_MULTIM_OBJE_TITL,
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_MULTIM_OBJE_TITL,
- PARENT, $<ctxt>5, NULL);
+ PARENT, $<ctxt>5,
+ GEDCOM_MAKE_NULL(val1));
}
;
multim_obje_file_sect : OPEN DELIM TAG_FILE mand_line_item
}
;
multim_obje_file_sect : OPEN DELIM TAG_FILE mand_line_item
@@
-2979,7
+3092,8
@@
multim_obje_file_sect : OPEN DELIM TAG_FILE mand_line_item
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_MULTIM_OBJE_FILE,
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_MULTIM_OBJE_FILE,
- PARENT, $<ctxt>5, NULL);
+ PARENT, $<ctxt>5,
+ GEDCOM_MAKE_NULL(val1));
}
;
}
;
@@
-2997,12
+3111,13
@@
note_struc_link_sect : OPEN DELIM TAG_NOTE DELIM POINTER
= start_element(ELT_SUB_NOTE,
PARENT, $1, $3, $5,
GEDCOM_MAKE_XREF_PTR(val1, xr));
= start_element(ELT_SUB_NOTE,
PARENT, $1, $3, $5,
GEDCOM_MAKE_XREF_PTR(val1, xr));
- START(NOTE, $1, $<ctxt>$)
+ START(NOTE, $1, $<ctxt>$)
}
note_struc_link_subs
{ CHECK0 }
CLOSE
}
note_struc_link_subs
{ CHECK0 }
CLOSE
- { end_element(ELT_SUB_NOTE, PARENT, $<ctxt>6, NULL);
+ { end_element(ELT_SUB_NOTE, PARENT, $<ctxt>6,
+ GEDCOM_MAKE_NULL(val1));
}
;
}
;
@@
-3019,12
+3134,17
@@
note_struc_emb_sect : OPEN DELIM TAG_NOTE opt_line_item
= start_element(ELT_SUB_NOTE,
PARENT, $1, $3, $4,
GEDCOM_MAKE_NULL_OR_STRING(val1, $4));
= start_element(ELT_SUB_NOTE,
PARENT, $1, $3, $4,
GEDCOM_MAKE_NULL_OR_STRING(val1, $4));
+ reset_buffer(&concat_buffer);
+ if ($4)
+ safe_buf_append(&concat_buffer, $4);
START(NOTE, $1, $<ctxt>$)
}
note_struc_emb_subs
{ CHECK0 }
CLOSE
START(NOTE, $1, $<ctxt>$)
}
note_struc_emb_subs
{ CHECK0 }
CLOSE
- { end_element(ELT_SUB_NOTE, PARENT, $<ctxt>5, NULL);
+ { char* complete = get_buf_string(&concat_buffer);
+ end_element(ELT_SUB_NOTE, PARENT, $<ctxt>5,
+ GEDCOM_MAKE_STRING(val1, complete));
}
;
}
;
@@
-3050,7
+3170,8
@@
pers_name_sect : OPEN DELIM TAG_NAME mand_line_item
pers_name_subs
{ CHECK0 }
CLOSE
pers_name_subs
{ CHECK0 }
CLOSE
- { end_element(ELT_SUB_PERS_NAME, PARENT, $<ctxt>5, NULL);
+ { end_element(ELT_SUB_PERS_NAME, PARENT, $<ctxt>5,
+ GEDCOM_MAKE_NULL(val1));
}
;
}
;
@@
-3079,7
+3200,7
@@
pers_name_npfx_sect : OPEN DELIM TAG_NPFX mand_line_item
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_PERS_NAME_NPFX, PARENT, $<ctxt>5,
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_PERS_NAME_NPFX, PARENT, $<ctxt>5,
-
NULL
);
+
GEDCOM_MAKE_NULL(val1)
);
}
;
pers_name_givn_sect : OPEN DELIM TAG_GIVN mand_line_item
}
;
pers_name_givn_sect : OPEN DELIM TAG_GIVN mand_line_item
@@
-3092,7
+3213,7
@@
pers_name_givn_sect : OPEN DELIM TAG_GIVN mand_line_item
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_PERS_NAME_GIVN, PARENT, $<ctxt>5,
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_PERS_NAME_GIVN, PARENT, $<ctxt>5,
-
NULL
);
+
GEDCOM_MAKE_NULL(val1)
);
}
;
pers_name_nick_sect : OPEN DELIM TAG_NICK mand_line_item
}
;
pers_name_nick_sect : OPEN DELIM TAG_NICK mand_line_item
@@
-3105,7
+3226,7
@@
pers_name_nick_sect : OPEN DELIM TAG_NICK mand_line_item
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_PERS_NAME_NICK, PARENT, $<ctxt>5,
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_PERS_NAME_NICK, PARENT, $<ctxt>5,
-
NULL
);
+
GEDCOM_MAKE_NULL(val1)
);
}
;
pers_name_spfx_sect : OPEN DELIM TAG_SPFX mand_line_item
}
;
pers_name_spfx_sect : OPEN DELIM TAG_SPFX mand_line_item
@@
-3118,7
+3239,7
@@
pers_name_spfx_sect : OPEN DELIM TAG_SPFX mand_line_item
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_PERS_NAME_SPFX, PARENT, $<ctxt>5,
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_PERS_NAME_SPFX, PARENT, $<ctxt>5,
-
NULL
);
+
GEDCOM_MAKE_NULL(val1)
);
}
;
pers_name_surn_sect : OPEN DELIM TAG_SURN mand_line_item
}
;
pers_name_surn_sect : OPEN DELIM TAG_SURN mand_line_item
@@
-3131,7
+3252,7
@@
pers_name_surn_sect : OPEN DELIM TAG_SURN mand_line_item
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_PERS_NAME_SURN, PARENT, $<ctxt>5,
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_PERS_NAME_SURN, PARENT, $<ctxt>5,
-
NULL
);
+
GEDCOM_MAKE_NULL(val1)
);
}
;
pers_name_nsfx_sect : OPEN DELIM TAG_NSFX mand_line_item
}
;
pers_name_nsfx_sect : OPEN DELIM TAG_NSFX mand_line_item
@@
-3144,7
+3265,7
@@
pers_name_nsfx_sect : OPEN DELIM TAG_NSFX mand_line_item
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_PERS_NAME_NSFX, PARENT, $<ctxt>5,
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_PERS_NAME_NSFX, PARENT, $<ctxt>5,
-
NULL
);
+
GEDCOM_MAKE_NULL(val1)
);
}
;
}
;
@@
-3162,7
+3283,8
@@
place_struc_plac_sect : OPEN DELIM TAG_PLAC mand_line_item
place_struc_plac_subs
{ CHECK0 }
CLOSE
place_struc_plac_subs
{ CHECK0 }
CLOSE
- { end_element(ELT_SUB_PLAC, PARENT, $<ctxt>5, NULL);
+ { end_element(ELT_SUB_PLAC, PARENT, $<ctxt>5,
+ GEDCOM_MAKE_NULL(val1));
}
;
}
;
@@
-3187,7
+3309,7
@@
place_plac_form_sect : OPEN DELIM TAG_FORM mand_line_item
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_PLAC_FORM, PARENT, $<ctxt>5,
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_PLAC_FORM, PARENT, $<ctxt>5,
-
NULL
);
+
GEDCOM_MAKE_NULL(val1)
);
}
;
}
;
@@
-3210,7
+3332,8
@@
source_cit_link_sect : OPEN DELIM TAG_SOUR DELIM POINTER
source_cit_link_subs
{ CHECK0 }
CLOSE
source_cit_link_subs
{ CHECK0 }
CLOSE
- { end_element(ELT_SUB_SOUR, PARENT, $<ctxt>6, NULL);
+ { end_element(ELT_SUB_SOUR, PARENT, $<ctxt>6,
+ GEDCOM_MAKE_NULL(val1));
}
;
}
;
@@
-3238,7
+3361,7
@@
source_cit_page_sect : OPEN DELIM TAG_PAGE mand_line_item
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_SOUR_PAGE, PARENT, $<ctxt>5,
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_SOUR_PAGE, PARENT, $<ctxt>5,
-
NULL
);
+
GEDCOM_MAKE_NULL(val1)
);
}
;
}
;
@@
-3253,7
+3376,7
@@
source_cit_even_sect : OPEN DELIM TAG_EVEN mand_line_item
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_SOUR_EVEN, PARENT, $<ctxt>5,
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_SOUR_EVEN, PARENT, $<ctxt>5,
-
NULL
);
+
GEDCOM_MAKE_NULL(val1)
);
}
;
}
;
@@
-3276,7
+3399,8
@@
source_cit_even_role_sect : OPEN DELIM TAG_ROLE mand_line_item
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_SOUR_EVEN_ROLE,
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_SOUR_EVEN_ROLE,
- PARENT, $<ctxt>5, NULL);
+ PARENT, $<ctxt>5,
+ GEDCOM_MAKE_NULL(val1));
}
;
}
;
@@
-3290,7
+3414,7
@@
source_cit_data_sect : OPEN DELIM TAG_DATA
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_SOUR_DATA, PARENT, $<ctxt>4,
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_SOUR_DATA, PARENT, $<ctxt>4,
-
NULL
);
+
GEDCOM_MAKE_NULL(val1)
);
}
;
}
;
@@
-3315,7
+3439,8
@@
source_cit_data_date_sect : OPEN DELIM TAG_DATE mand_line_item
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_SOUR_DATA_DATE,
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_SOUR_DATA_DATE,
- PARENT, $<ctxt>5, NULL);
+ PARENT, $<ctxt>5,
+ GEDCOM_MAKE_NULL(val1));
}
;
}
;
@@
-3324,13
+3449,16
@@
source_cit_text_sect : OPEN DELIM TAG_TEXT mand_line_item
= start_element(ELT_SUB_SOUR_TEXT,
PARENT, $1, $3, $4,
GEDCOM_MAKE_STRING(val1, $4));
= start_element(ELT_SUB_SOUR_TEXT,
PARENT, $1, $3, $4,
GEDCOM_MAKE_STRING(val1, $4));
- START(TEXT, $1, $<ctxt>$)
+ reset_buffer(&concat_buffer);
+ safe_buf_append(&concat_buffer, $4);
+ START(TEXT, $1, $<ctxt>$)
}
source_cit_text_subs
{ CHECK0 }
CLOSE
}
source_cit_text_subs
{ CHECK0 }
CLOSE
- { end_element(ELT_SUB_SOUR_TEXT, PARENT, $<ctxt>5,
- NULL);
+ { char* complete = get_buf_string(&concat_buffer);
+ end_element(ELT_SUB_SOUR_TEXT, PARENT, $<ctxt>5,
+ GEDCOM_MAKE_STRING(val1, complete));
}
;
}
;
@@
-3353,7
+3481,7
@@
source_cit_quay_sect : OPEN DELIM TAG_QUAY mand_line_item
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_SOUR_QUAY, PARENT, $<ctxt>5,
{ CHECK0 }
CLOSE
{ end_element(ELT_SUB_SOUR_QUAY, PARENT, $<ctxt>5,
-
NULL
);
+
GEDCOM_MAKE_NULL(val1)
);
}
;
}
;
@@
-3361,12
+3489,16
@@
source_cit_emb_sect : OPEN DELIM TAG_SOUR mand_line_item
{ $<ctxt>$ = start_element(ELT_SUB_SOUR,
PARENT, $1, $3, $4,
GEDCOM_MAKE_STRING(val1, $4));
{ $<ctxt>$ = start_element(ELT_SUB_SOUR,
PARENT, $1, $3, $4,
GEDCOM_MAKE_STRING(val1, $4));
+ reset_buffer(&concat_buffer);
+ safe_buf_append(&concat_buffer, $4);
START(SOUR, $1, $<ctxt>$)
}
source_cit_emb_subs
{ CHECK0 }
CLOSE
START(SOUR, $1, $<ctxt>$)
}
source_cit_emb_subs
{ CHECK0 }
CLOSE
- { end_element(ELT_SUB_SOUR, PARENT, $<ctxt>5, NULL);
+ { char* complete = get_buf_string(&concat_buffer);
+ end_element(ELT_SUB_SOUR, PARENT, $<ctxt>5,
+ GEDCOM_MAKE_STRING(val1, complete));
}
;
}
;
@@
-3397,7
+3529,8
@@
source_repos_repo_sect : OPEN DELIM TAG_REPO mand_pointer
source_repos_repo_subs
{ CHECK0 }
CLOSE
source_repos_repo_subs
{ CHECK0 }
CLOSE
- { end_element(ELT_SUB_REPO, PARENT, $<ctxt>5, NULL);
+ { end_element(ELT_SUB_REPO, PARENT, $<ctxt>5,
+ GEDCOM_MAKE_NULL(val1));
}
;
}
;
@@
-3419,7
+3552,8
@@
caln_sect : OPEN DELIM TAG_CALN mand_line_item
caln_subs
{ CHECK0 }
CLOSE
caln_subs
{ CHECK0 }
CLOSE
- { end_element(ELT_SUB_REPO_CALN, PARENT, $<ctxt>5, NULL);
+ { end_element(ELT_SUB_REPO_CALN, PARENT, $<ctxt>5,
+ GEDCOM_MAKE_NULL(val1));
}
;
}
;
@@
-3440,7
+3574,8
@@
caln_medi_sect : OPEN DELIM TAG_MEDI mand_line_item
no_std_subs
{ CHECK0 }
CLOSE
no_std_subs
{ CHECK0 }
CLOSE
- { end_element(ELT_SUB_REPO_CALN_MEDI, PARENT, $<ctxt>5, NULL);
+ { end_element(ELT_SUB_REPO_CALN_MEDI, PARENT, $<ctxt>5,
+ GEDCOM_MAKE_NULL(val1));
}
;
}
;
@@
-3461,7
+3596,8
@@
spou_fam_fams_sect : OPEN DELIM TAG_FAMS mand_pointer
spou_fam_fams_subs
{ CHECK0 }
CLOSE
spou_fam_fams_subs
{ CHECK0 }
CLOSE
- { end_element(ELT_SUB_FAMS, PARENT, $<ctxt>5, NULL);
+ { end_element(ELT_SUB_FAMS, PARENT, $<ctxt>5,
+ GEDCOM_MAKE_NULL(val1));
}
;
}
;
@@
-3515,7
+3651,7
@@
user_rec : OPEN DELIM opt_xref USERTAG
user_sects
{ CHECK0 }
CLOSE
user_sects
{ CHECK0 }
CLOSE
- { end_record(REC_USER, $<ctxt>7); }
+ { end_record(REC_USER, $<ctxt>7
, GEDCOM_MAKE_NULL(val1)
); }
;
user_sect : OPEN DELIM opt_xref USERTAG
{ if ($4.string[0] != '_') {
;
user_sect : OPEN DELIM opt_xref USERTAG
{ if ($4.string[0] != '_') {
@@
-3531,7
+3667,8
@@
user_sect : OPEN DELIM opt_xref USERTAG
user_sects
{ CHECK0 }
CLOSE
user_sects
{ CHECK0 }
CLOSE
- { end_element(ELT_USER, PARENT, $<ctxt>7, NULL);
+ { end_element(ELT_USER, PARENT, $<ctxt>7,
+ GEDCOM_MAKE_NULL(val1));
}
;
}
;
@@
-3560,7
+3697,7
@@
mand_pointer : /* empty */ { gedcom_error(_("Missing pointer")); YYERROR; }
;
mand_line_item : /* empty */
;
mand_line_item : /* empty */
- { if (compat_mode(C_
LIFELIN
ES)) {
+ { if (compat_mode(C_
NO_REQUIRED_VALU
ES)) {
/* Lifelines tends to not care about mandatory values */
gedcom_debug_print("==Val: ==");
$$ = "";
/* Lifelines tends to not care about mandatory values */
gedcom_debug_print("==Val: ==");
$$ = "";
@@
-3579,38
+3716,36
@@
opt_line_item : /* empty */ { $$ = NULL; }
;
line_item : anychar { size_t i;
;
line_item : anychar { size_t i;
- CLEAR_BUFFER(line_item_buf);
- line_item_buf_ptr = line_item_buf;
- /* The following also takes care of '@@' */
+ reset_buffer(&line_item_buffer);
+ /* The following also takes care of '@@' */
if (!strncmp($1, "@@", 3))
if (!strncmp($1, "@@", 3))
- *line_item_buf_ptr++ = '@';
+ SAFE_BUF_ADDCHAR(&line_item_buffer, '@')
else
for (i=0; i < strlen($1); i++)
else
for (i=0; i < strlen($1); i++)
- *line_item_buf_ptr++ = $1[i];
- $$ =
line_item_buf
;
+ SAFE_BUF_ADDCHAR(&line_item_buffer, $1[i])
+ $$ =
get_buf_string(&line_item_buffer)
;
}
| ESCAPE { size_t i;
}
| ESCAPE { size_t i;
- CLEAR_BUFFER(line_item_buf);
- line_item_buf_ptr = line_item_buf;
- for (i=0; i < strlen($1); i++)
- *line_item_buf_ptr++ = $1[i];
- $$ = line_item_buf;
+ reset_buffer(&line_item_buffer);
+ for (i=0; i < strlen($1); i++)
+ SAFE_BUF_ADDCHAR(&line_item_buffer, $1[i])
+ $$ = get_buf_string(&line_item_buffer);
}
| line_item anychar
{ size_t i;
/* The following also takes care of '@@' */
if (!strncmp($2, "@@", 3))
}
| line_item anychar
{ size_t i;
/* The following also takes care of '@@' */
if (!strncmp($2, "@@", 3))
- *line_item_buf_ptr++ = '@';
+ SAFE_BUF_ADDCHAR(&line_item_buffer, '@')
else
for (i=0; i < strlen($2); i++)
else
for (i=0; i < strlen($2); i++)
- *line_item_buf_ptr++ = $2[i];
- $$ =
line_item_buf
;
+ SAFE_BUF_ADDCHAR(&line_item_buffer, $2[i])
+ $$ =
get_buf_string(&line_item_buffer)
;
}
| line_item ESCAPE
{ size_t i;
for (i=0; i < strlen($2); i++)
}
| line_item ESCAPE
{ size_t i;
for (i=0; i < strlen($2); i++)
- *line_item_buf_ptr++ = $2[i];
- $$ =
line_item_buf
;
+ SAFE_BUF_ADDCHAR(&line_item_buffer, $2[i])
+ $$ =
get_buf_string(&line_item_buffer)
;
}
| line_item error anychar { HANDLE_ERROR; }
| line_item error ESCAPE { HANDLE_ERROR; }
}
| line_item error anychar { HANDLE_ERROR; }
| line_item error ESCAPE { HANDLE_ERROR; }
@@
-3625,6
+3760,7
@@
error_subs : /* empty */
;
error_sect : OPEN DELIM opt_xref anytag opt_value error_subs CLOSE { }
;
error_sect : OPEN DELIM opt_xref anytag opt_value error_subs CLOSE { }
+ ;
gen_sect : OPEN DELIM opt_xref anystdtag
{ INVALID_TAG($4.string); }
gen_sect : OPEN DELIM opt_xref anystdtag
{ INVALID_TAG($4.string); }
@@
-3793,6
+3929,7
@@
anystdtag : TAG_ABBR
| TAG_VERS { }
| TAG_WIFE { }
| TAG_WILL { }
| TAG_VERS { }
| TAG_WIFE { }
| TAG_WILL { }
+ ;
%%
%%
@@
-3884,6
+4021,16
@@
void clean_up()
}
}
}
}
+void cleanup_concat_buffer()
+{
+ cleanup_buffer(&concat_buffer);
+}
+
+void cleanup_line_item_buffer()
+{
+ cleanup_buffer(&line_item_buffer);
+}
+
/* Enabling debug mode */
/* level 0: no debugging */
/* level 1: only internal */
/* Enabling debug mode */
/* level 0: no debugging */
/* level 1: only internal */