Keep parsed values in date if parse was OK, but no valid date.
[gedcom-parse.git] / gedcom / age.c
index 1de1d53205495398126aa2c0e62a6f6f61922edb..705a237ef05730ff99486581e8ff2671eb921043 100644 (file)
@@ -103,6 +103,21 @@ int parse_numeric_age(struct age_value *age, const char *ptr)
   return 0;
 }
 
+struct age_value* gedcom_new_age_value(const struct age_value* copy_from)
+{
+  struct age_value* age_ptr;
+  age_ptr = (struct age_value*) malloc(sizeof(struct age_value));
+  if (! age_ptr)
+    MEMORY_ERROR;
+  else {
+    if (copy_from)
+      memcpy(age_ptr, copy_from, sizeof(struct age_value));
+    else 
+      init_age(age_ptr);
+  }
+  return age_ptr;
+}
+
 struct age_value gedcom_parse_age(const char* line_value)
 {
   const char *ptr = line_value;
@@ -139,7 +154,7 @@ struct age_value gedcom_parse_age(const char* line_value)
   return age_s;
 }
 
-char* gedcom_age_to_string(struct age_value* val)
+char* gedcom_age_to_string(const struct age_value* val)
 {
   int num = 0;
   reset_buffer(&age_buffer);
@@ -155,7 +170,8 @@ char* gedcom_age_to_string(struct age_value* val)
 
   switch (val->type) {
     case AGE_UNRECOGNIZED:
-      return val->phrase; break;
+      reset_buffer(&age_buffer);
+      safe_buf_append(&age_buffer, val->phrase); break;
     case AGE_CHILD:
       safe_buf_append(&age_buffer, "CHILD"); break;
     case AGE_INFANT: