Writing dates and ages.
[gedcom-parse.git] / gedcom / compat.c
index d4fdb9f480216801f155de5264a8513cefa75dfc..507de09e6676b6ada5f306fa060081677fb1cd1a 100644 (file)
@@ -31,7 +31,7 @@
 int compat_enabled = 1;
 int compatibility  = 0; 
 int compat_at = 0;
-char* default_charset = "";
+const char* default_charset = "";
 
 #define SUBMITTER_LINK         "@__COMPAT__SUBM__@"
 #define DEFAULT_SUBMITTER_NAME "Submitter"
@@ -61,7 +61,7 @@ void gedcom_set_compat_handling(int enable_compat)
   compat_enabled = enable_compat;
 }
 
-void set_compatibility(char* program)
+void set_compatibility(const char* program)
 {
   /* Reinitialize compatibility */
   compat_at = 0;
@@ -126,7 +126,7 @@ void compat_generate_submitter()
   end_element(ELT_SUBM_NAME, self1, self2, NULL);
 
   /* close "0 SUBM" */
-  end_record(REC_SUBM, self1);
+  end_record(REC_SUBM, self1, NULL);
 }
 
 void compat_generate_gedcom(Gedcom_ctxt parent)
@@ -168,15 +168,24 @@ int compat_generate_char(Gedcom_ctxt parent)
 {
   struct tag_struct ts;
   Gedcom_ctxt self1;
+  char* charset;
   
   /* first generate "1 CHAR <DEFAULT_CHAR>" */
   ts.string = "CHAR";
   ts.value  = TAG_CHAR;
-  self1 = start_element(ELT_HEAD_CHAR, parent, 1, ts, default_charset,
-                       GEDCOM_MAKE_STRING(val1, default_charset));
-  
-  /* close "1 CHAR" */
-  end_element(ELT_HEAD_CHAR, parent, self1, NULL);
+
+  /* Must strdup, because default_charset is const char */
+  charset   = strdup(default_charset);
+  if (! charset)
+    MEMORY_ERROR;
+  else {
+    self1 = start_element(ELT_HEAD_CHAR, parent, 1, ts, charset,
+                         GEDCOM_MAKE_STRING(val1, charset));
+    free(charset);
+    
+    /* close "1 CHAR" */
+    end_element(ELT_HEAD_CHAR, parent, self1, NULL);
+  }
   if (open_conv_to_internal(default_charset) == 0)
     return 1;
   else