Take care of const correctness.
[gedcom-parse.git] / gedcom / compat.c
index f7638e6970200be8ea656cf7c94d3d525ff09391..c566d8e9ab8c77742fcd153705ba377c9ac423dd 100644 (file)
 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"
 #define DEFAULT_GEDCOM_VERS    "5.5"
 #define DEFAULT_GEDCOM_FORM    "LINEAGE-LINKED"
 
-/* Incompatibily list (with GEDCOM 5.5):
+/* Incompatibility list (with GEDCOM 5.5):
 
     - ftree:
         - no submitter record, no submitter link in the header
@@ -49,8 +49,9 @@ char* default_charset;
         - no submitter record, no submitter link in the header
        - no GEDC field in the header
        - no CHAR field in the header
-       - TIME field outside of DATE field in the header (will be ignored here)
+       - HEAD.TIME instead of HEAD.DATE.TIME (will be ignored here)
        - '@' not written as '@@' in values
+       - lots of missing required values
  */
 
 /* Compatibility handling */
@@ -60,13 +61,17 @@ 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;
+  default_charset = "";
+  compatibility = 0;
+  
   if (compat_enabled) {
     if (! strncmp(program, "ftree", 6)) {
       gedcom_warning(_("Enabling compatibility with 'ftree'"));
       compatibility = C_FTREE;
-      default_charset = "ANSI";
     }
     else if (! strncmp(program, "LIFELINES", 9)) {
       /* Matches "LIFELINES 3.0.2" */
@@ -75,9 +80,6 @@ void set_compatibility(char* program)
       default_charset = "ANSI";
       compat_at = 1;
     }
-    else {
-      compatibility = 0;
-    }
   }
 }
 
@@ -170,8 +172,8 @@ int compat_generate_char(Gedcom_ctxt parent)
   /* 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));
+  self1 = start_element(ELT_HEAD_CHAR, parent, 1, ts, (char*)default_charset,
+                       GEDCOM_MAKE_STRING(val1, (char*)default_charset));
   
   /* close "1 CHAR" */
   end_element(ELT_HEAD_CHAR, parent, self1, NULL);