New function to update timestamp.
[gedcom-parse.git] / gom / header.c
index 04b00542ff0865c550e39e0a6ae210cc80e3a818..122c780d30dc2dcb23ee169f7910914011090288 100644 (file)
@@ -21,6 +21,7 @@
 /* $Id$ */
 /* $Name$ */
 
+#include <time.h>
 #include "header.h"
 #include "submission.h"
 #include "submitter.h"
@@ -163,15 +164,23 @@ struct header* gom_get_header()
   return &gom_header;
 }
 
+int gom_header_update_timestamp(time_t t)
+{
+  int result = 0;
+  struct tm *tm_ptr = localtime(&t);
+  result |= update_date(&gom_header.date, tm_ptr);
+  result |= update_time(&gom_header.time, tm_ptr);
+  return result;
+}
+
 int write_header(Gedcom_write_hndl hndl)
 {
   int result = 0;
   int i;
   
-  result |= gedcom_write_record_str(hndl, REC_HEAD, 0, NULL, NULL);
+  result |= gedcom_write_record_str(hndl, REC_HEAD, NULL, NULL);
   if (gom_header.charset.name)
-    result |= gedcom_write_element_str(hndl, ELT_HEAD_CHAR, 0,
-                                      REC_HEAD,
+    result |= gedcom_write_element_str(hndl, ELT_HEAD_CHAR, 0, REC_HEAD,
                                       gom_header.charset.name);
   if (gom_header.charset.version)
     result |= gedcom_write_element_str(hndl, ELT_HEAD_CHAR_VERS, 0,
@@ -202,6 +211,10 @@ int write_header(Gedcom_write_hndl hndl)
     result |= gedcom_write_element_str(hndl, ELT_HEAD_SOUR_DATA, 0,
                                       ELT_HEAD_SOUR,
                                       gom_header.source.data.name);
+  if (gom_header.source.data.date)
+    result |= gedcom_write_element_date(hndl, ELT_HEAD_SOUR_DATA_DATE, 0,
+                                       ELT_HEAD_SOUR_DATA,
+                                       gom_header.source.data.date);
   if (gom_header.source.data.copyright)
     result |= gedcom_write_element_str(hndl, ELT_HEAD_SOUR_DATA_COPR, 0,
                                       ELT_HEAD_SOUR_DATA,
@@ -209,6 +222,12 @@ int write_header(Gedcom_write_hndl hndl)
   if (gom_header.destination)
     result |= gedcom_write_element_str(hndl, ELT_HEAD_DEST, 0, REC_HEAD,
                                       gom_header.destination);
+  if (gom_header.date)
+    result |= gedcom_write_element_date(hndl, ELT_HEAD_DATE, 0, REC_HEAD,
+                                       gom_header.date);
+  if (gom_header.time)
+    result |= gedcom_write_element_str(hndl, ELT_HEAD_DATE_TIME, 0,
+                                      ELT_HEAD_DATE, gom_header.time);
   if (gom_header.submitter)
     result |= gedcom_write_element_xref(hndl, ELT_HEAD_SUBM, 0, REC_HEAD,
                                        gom_header.submitter);