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
Move to three part version numbers.
[gedcom-parse.git]
/
gedcom
/
gedcom.y
diff --git
a/gedcom/gedcom.y
b/gedcom/gedcom.y
index 56f10c2297263ec70a8e6c885a7c0d9463d2dbb0..702d1256dcba2c8f921ce3074776e0bc1f2c91d0 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; \
@@
-456,7
+458,7
@@
head_sect : OPEN DELIM TAG_HEAD
CHECK4(SOUR, SUBM, GEDC, CHAR)
}
CLOSE
CHECK4(SOUR, SUBM, GEDC, CHAR)
}
CLOSE
- { end_record(REC_HEAD, $<ctxt>4);
+ { end_record(REC_HEAD, $<ctxt>4
, GEDCOM_MAKE_NULL(val1)
);
if (compat_mode(C_FTREE | C_LIFELINES))
compat_generate_submitter();
}
if (compat_mode(C_FTREE | C_LIFELINES))
compat_generate_submitter();
}
@@
-495,7
+497,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
+522,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
+535,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
+548,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
+570,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
+595,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
+610,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
+626,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
+642,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
+664,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
+689,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
+706,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
+719,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
+733,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
+747,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
+770,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
+783,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
+800,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
+822,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
+836,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
+850,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
+872,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
+881,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
+924,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
+959,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
+977,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
+995,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
+1010,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
+1028,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
+1047,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 */
@@
-1070,7
+1090,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
+1105,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
+1123,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
+1141,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
+1159,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
+1177,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
+1192,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,7
+1207,8
@@
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));
}
;
}
;
@@
-1202,7
+1230,8
@@
ftree_addr_sect : OPEN DELIM TAG_ADDR opt_line_item
CLOSE
{ if (compat_mode(C_FTREE)) {
Gedcom_ctxt par = PARENT;
CLOSE
{ if (compat_mode(C_FTREE)) {
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);
}
@@
-1229,7
+1258,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)
);
}
;
}
;
@@
-1247,7
+1276,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 */
@@
-1274,7
+1303,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));
}
;
}
;
@@
-1288,7
+1318,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));
}
;
}
;
@@
-1297,12
+1328,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));
}
;
}
;
@@
-1318,13
+1352,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)
);
}
;
}
;
@@
-1341,7
+1376,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));
}
;
}
;
@@
-1355,11
+1391,15
@@
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 */
@@
-1400,7
+1440,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 */
@@
-1425,7
+1465,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));
}
;
}
;
@@
-1443,7
+1484,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 */
@@
-1474,7
+1515,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));
}
;
}
;
@@
-1498,7
+1540,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)
);
}
;
}
;
@@
-1523,7
+1565,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)
);
}
;
}
;
@@
-1538,7
+1580,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)
);
}
;
}
;
@@
-1552,7
+1594,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)
);
}
;
}
;
@@
-1561,12
+1603,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));
}
;
}
;
@@
-1583,12
+1629,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));
}
;
}
;
@@
-1610,7
+1660,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));
}
;
}
;
@@
-1619,12
+1670,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));
}
;
}
;
@@
-1641,12
+1696,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));
}
;
}
;
@@
-1672,7
+1731,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 */
@@
-1702,7
+1761,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));
}
;
}
;
@@
-1716,7
+1776,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));
}
;
}
;
@@
-1730,7
+1791,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));
}
;
}
;
@@
-1744,7
+1806,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));
}
;
}
;
@@
-1758,7
+1821,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));
}
;
}
;
@@
-1772,7
+1836,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));
}
;
}
;
@@
-1786,7
+1851,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));
}
;
}
;
@@
-1804,7
+1870,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 */
@@
-1831,7
+1897,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));
}
;
}
;
@@
-1845,7
+1912,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));
}
;
}
;
@@
-1859,7
+1927,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));
}
;
}
;
@@
-1873,7
+1942,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));
}
;
}
;
@@
-1890,12
+1960,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));
}
;
}
;
@@
-1917,12
+1991,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
@@
-1934,7
+2011,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
@@
-1946,7
+2024,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
@@
-1958,7
+2037,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
@@
-1970,7
+2050,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
@@
-1982,7
+2063,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
@@
-1994,7
+2076,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));
}
;
}
;
@@
-2007,7
+2090,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));
}
;
}
;
@@
-2027,7
+2111,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));
}
;
}
;
@@
-2048,7
+2133,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));
}
;
}
;
@@
-2061,7
+2147,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));
}
;
}
;
@@
-2078,7
+2165,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));
}
;
}
;
@@
-2101,7
+2189,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)
);
}
;
}
;
@@
-2124,7
+2212,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)
);
}
;
}
;
@@
-2144,7
+2232,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));
}
;
}
;
@@
-2166,7
+2255,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));
}
;
}
;
@@
-2179,12
+2269,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));
}
;
}
;
@@
-2192,12
+2285,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));
}
;
}
;
@@
-2225,7
+2320,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
@@
-2240,7
+2335,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
@@
-2255,7
+2350,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
@@
-2269,7
+2364,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
@@
-2283,7
+2378,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)
);
}
;
}
;
@@
-2302,7
+2397,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));
}
;
}
;
@@
-2338,7
+2434,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)
);
}
;
}
;
@@
-2361,7
+2457,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)
);
}
;
}
;
@@
-2375,7
+2471,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)
);
}
;
}
;
@@
-2389,7
+2485,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)
);
}
;
}
;
@@
-2418,7
+2514,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)
);
}
;
}
;
@@
-2441,7
+2537,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)
);
}
;
}
;
@@
-2455,7
+2551,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)
);
}
;
}
;
@@
-2473,7
+2569,8
@@
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));
}
;
}
;
@@
-2500,7
+2597,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));
}
;
}
;
@@
-2529,7
+2627,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));
}
;
}
;
@@
-2561,7
+2660,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)
);
}
;
}
;
@@
-2575,7
+2674,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));
}
;
}
;
@@
-2617,7
+2717,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));
}
;
}
;
@@
-2644,7
+2745,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)
);
}
;
}
;
@@
-2666,7
+2767,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));
}
;
}
;
@@
-2678,7
+2780,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));
}
;
}
;
@@
-2696,7
+2799,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));
}
;
}
;
@@
-2728,7
+2832,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
@@
-2742,7
+2846,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
@@
-2755,7
+2859,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
@@
-2768,7
+2872,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)
);
}
;
}
;
@@
-2781,7
+2885,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));
}
;
}
;
@@
-2807,7
+2912,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)
);
}
;
}
;
@@
-2823,7
+2928,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));
}
;
}
;
@@
-2850,7
+2956,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
@@
-2864,7
+2970,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
@@
-2877,7
+2983,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
@@
-2890,7
+2996,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)
);
}
;
}
;
@@
-2914,7
+3020,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)
);
}
;
}
;
@@
-2928,7
+3034,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)
);
}
;
}
;
@@
-2954,7
+3060,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
@@
-2968,7
+3075,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
@@
-2982,7
+3090,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));
}
;
}
;
@@
-3000,12
+3109,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));
}
;
}
;
@@
-3022,12
+3132,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));
}
;
}
;
@@
-3053,7
+3168,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));
}
;
}
;
@@
-3082,7
+3198,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
@@
-3095,7
+3211,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
@@
-3108,7
+3224,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
@@
-3121,7
+3237,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
@@
-3134,7
+3250,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
@@
-3147,7
+3263,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)
);
}
;
}
;
@@
-3165,7
+3281,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));
}
;
}
;
@@
-3190,7
+3307,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)
);
}
;
}
;
@@
-3213,7
+3330,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));
}
;
}
;
@@
-3241,7
+3359,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)
);
}
;
}
;
@@
-3256,7
+3374,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)
);
}
;
}
;
@@
-3279,7
+3397,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));
}
;
}
;
@@
-3293,7
+3412,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)
);
}
;
}
;
@@
-3318,7
+3437,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));
}
;
}
;
@@
-3327,13
+3447,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));
}
;
}
;
@@
-3356,7
+3479,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)
);
}
;
}
;
@@
-3364,12
+3487,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));
}
;
}
;
@@
-3400,7
+3527,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));
}
;
}
;
@@
-3422,7
+3550,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));
}
;
}
;
@@
-3443,7
+3572,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));
}
;
}
;
@@
-3464,7
+3594,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));
}
;
}
;
@@
-3518,7
+3649,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] != '_') {
@@
-3534,7
+3665,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));
}
;
}
;
@@
-3582,38
+3714,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; }
@@
-3889,6
+4019,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 */