New function to update timestamp.
authorPeter Verthez <Peter.Verthez@advalvas.be>
Mon, 30 Dec 2002 09:32:28 +0000 (09:32 +0000)
committerPeter Verthez <Peter.Verthez@advalvas.be>
Mon, 30 Dec 2002 09:32:28 +0000 (09:32 +0000)
gom/gom_internal.h
gom/gom_modify.c
gom/header.c
include/gom.h

index 46c42a100815edb60b732c60de7fa25decb014e5..3b482f22578e628dc21940b41d56b0091e0d1914 100644 (file)
@@ -27,6 +27,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <libintl.h>
+#include <time.h>
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
@@ -109,6 +110,9 @@ void def_elt_end(Gedcom_elt elt, Gedcom_ctxt parent,
                 Gedcom_ctxt self, Gedcom_val parsed_value);
 void set_xref_type(struct xref_value *xr, const char* str);
 
+int  update_date(struct date_value** dv, struct tm* tm_ptr);
+int  update_time(char** tv, struct tm* tm_ptr);
+
 /* Doubly-linked list, but last rec->next is NULL (doesn't go to first rec) */
 #define LINK_CHAIN_ELT(STRUCTTYPE, FIRSTVAL, VAL)                             \
   {                                                                           \
index 3da2fa88e01c54f53dc820a5b269e97fb775e771..bc65a3a380412b2386af7e855cd1685ed7f4430b 100644 (file)
@@ -23,6 +23,7 @@
 
 #include <stdlib.h>
 #include <string.h>
+#include <time.h>
 #include "utf8tools.h"
 #include "gom.h"
 #include "gom_internal.h"
@@ -77,3 +78,34 @@ char* gom_set_string_for_locale(char** data, const char* locale_str)
 
   return result;
 }
+
+int update_date(struct date_value** dv, struct tm* tm_ptr)
+{
+  int result;
+  struct date_value* dval = gedcom_new_date_value(NULL);
+  dval->type        = DV_NO_MODIFIER;
+  dval->date1.cal   = CAL_GREGORIAN;
+  dval->date1.day   = tm_ptr->tm_mday;
+  dval->date1.month = tm_ptr->tm_mon + 1;
+  dval->date1.year  = tm_ptr->tm_year + 1900;
+  result = gedcom_normalize_date(DI_FROM_NUMBERS, dval);
+
+  if (result == 0) {
+    if (*dv) free(*dv);
+    *dv = dval;
+  }
+  return result;
+}
+
+int update_time(char** tv, struct tm* tm_ptr)
+{
+  char tval[16];
+  sprintf(tval, "%02d:%02d:%02d",
+         tm_ptr->tm_hour, tm_ptr->tm_min, tm_ptr->tm_sec);
+
+  if (gom_set_string(tv, tval))
+    return 0;
+  else
+    return 1;
+}
+
index 18dc38c07c1ea1a71b0e201ddb4ccce846e81d46..122c780d30dc2dcb23ee169f7910914011090288 100644 (file)
@@ -21,6 +21,7 @@
 /* $Id$ */
 /* $Name$ */
 
+#include <time.h>
 #include "header.h"
 #include "submission.h"
 #include "submitter.h"
@@ -163,6 +164,15 @@ 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;
index 5a706cc74765ff9126b42d889c2b4bbd0a9ac913..0c68d3019e2de670a2c88ffccf29ce509789eef2 100644 (file)
@@ -25,6 +25,7 @@
 #define __GEDCOM_GOM_H
 
 #include "gedcom.h"
+#include <time.h>
 
 #ifdef __cplusplus
 extern "C" {
@@ -422,6 +423,8 @@ int  gom_new_model();
 int  gom_write_file(const char* file_name, int *total_conv_fails);
 
 struct header*     gom_get_header();
+int  gom_header_update_timestamp(time_t t);
+  
 struct submission* gom_get_submission();
 
 struct family*     gom_get_first_family();