1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215
  
     | 
    
      From: Geoff McLane <ubuntu@geoffair.info>
Date: Sat, 23 Dec 2017 17:36:05 +0100
Subject: Issue #663 - Retain compatibility with gcc 2.95
Applied-Upstream: https://github.com/htacg/tidy-html5/commit/1f22358a577b8dffc933afc76dde71a271044c03
---
 include/tidyplatform.h | 19 +++++++++++++++++--
 src/language.c         |  3 ++-
 src/language_en_gb.h   |  3 ++-
 src/language_es.h      |  3 ++-
 src/language_es_mx.h   |  3 ++-
 src/language_fr.h      |  3 ++-
 src/language_pt_br.h   |  3 ++-
 src/language_zh_cn.h   |  3 ++-
 src/tidylib.c          | 18 ++++++++++--------
 9 files changed, 41 insertions(+), 17 deletions(-)
diff --git a/include/tidyplatform.h b/include/tidyplatform.h
index 28de468..ca169dc 100644
--- a/include/tidyplatform.h
+++ b/include/tidyplatform.h
@@ -315,6 +315,15 @@ extern "C" {
 #  endif
 #endif
 
+/* === Convenience defines for Haiku platforms === */
+
+#if defined(__HAIKU__)
+#  define HAIKU
+#  ifndef PLATFORM_NAME
+#    define PLATFORM_NAME "Haiku"
+#  endif
+#endif
+
 /* === Convenience defines for Cygwin platforms === */
 
 #if defined(__CYGWIN__)
@@ -428,7 +437,7 @@ extern "C" {
 #if PRESERVE_FILE_TIMES
 
 #  ifndef HAS_FUTIME
-#    if defined(CYGWIN_OS) || defined(BE_OS) || defined(OS2_OS) || defined(HPUX_OS) || defined(SOLARIS_OS) || defined(LINUX_OS) || defined(BSD_BASED_OS) || defined(MAC_OS) || defined(__MSL__) || defined(IRIX_OS) || defined(AIX_OS) || defined(__BORLANDC__) || defined(__GLIBC__)
+#    if defined(CYGWIN_OS) || defined(BE_OS) || defined(OS2_OS) || defined(HPUX_OS) || defined(SOLARIS_OS) || defined(LINUX_OS) || defined(BSD_BASED_OS) || defined(MAC_OS) || defined(__MSL__) || defined(IRIX_OS) || defined(AIX_OS) || defined(__BORLANDC__) || defined(__GLIBC__) || defined(__HAIKU__)
 #      define HAS_FUTIME 0
 #    else
 #      define HAS_FUTIME 1
@@ -456,6 +465,12 @@ extern "C" {
 #    include <utime.h>
 #  endif
 
+#if defined(__HAIKU__)
+#ifndef va_copy
+#define va_copy(dest, src) (dest = src)
+#endif
+#endif
+
 /* MS Windows needs _ prefix for Unix file functions.
    Not required by Metrowerks Standard Library (MSL).
   
@@ -549,7 +564,7 @@ extern "C" {
 #  include <sys/types.h>
 #endif
 
-#if !defined(HPUX_OS) && !defined(CYGWIN_OS) && !defined(MAC_OS_X) && !defined(BE_OS) && !defined(SOLARIS_OS) && !defined(BSD_BASED_OS) && !defined(OSF_OS) && !defined(IRIX_OS) && !defined(AIX_OS) && !defined(LINUX_OS)
+#if !defined(HPUX_OS) && !defined(CYGWIN_OS) && !defined(MAC_OS_X) && !defined(BE_OS) && !defined(SOLARIS_OS) && !defined(BSD_BASED_OS) && !defined(OSF_OS) && !defined(IRIX_OS) && !defined(AIX_OS) && !defined(LINUX_OS) && !defined(__HAIKU__)
 #  undef uint
    typedef unsigned int uint;
 #endif
diff --git a/src/language.c b/src/language.c
index d55938c..fd89730 100644
--- a/src/language.c
+++ b/src/language.c
@@ -22,12 +22,13 @@
 
 /**
  *  This structure type provides universal access to all of Tidy's strings.
+ *  Note limit of 8, to be changed as more added...
  */
 typedef struct {
     Bool manually_set;
     languageDefinition *currentLanguage;
     languageDefinition *fallbackLanguage;
-    languageDefinition *languages[];
+    languageDefinition *languages[8];
 } tidyLanguagesType;
 
 
diff --git a/src/language_en_gb.h b/src/language_en_gb.h
index 97cc696..71c37e4 100644
--- a/src/language_en_gb.h
+++ b/src/language_en_gb.h
@@ -1,4 +1,4 @@
-#ifndef language_en_gb_h
+#ifndef language_en_gb_h
 #define language_en_gb_h
 /*
  * language_en_gb.h
@@ -180,3 +180,4 @@ static languageDefinition language_en_gb = { whichPluralForm_en_gb, {
 
 
 #endif /* language_en_gb_h */
+
diff --git a/src/language_es.h b/src/language_es.h
index eff66e4..14f51e5 100644
--- a/src/language_es.h
+++ b/src/language_es.h
@@ -1,4 +1,4 @@
-#ifndef language_es_h
+#ifndef language_es_h
 #define language_es_h
 /*
  * language_es.h
@@ -131,3 +131,4 @@ static languageDefinition language_es = { whichPluralForm_es, {
 
 
 #endif /* language_es_h */
+
diff --git a/src/language_es_mx.h b/src/language_es_mx.h
index 7f061b6..55b1b3a 100644
--- a/src/language_es_mx.h
+++ b/src/language_es_mx.h
@@ -1,4 +1,4 @@
-#ifndef language_es_mx_h
+#ifndef language_es_mx_h
 #define language_es_mx_h
 /*
  * language_es_mx.h
@@ -76,3 +76,4 @@ static languageDefinition language_es_mx = { whichPluralForm_es_mx, {
 
 
 #endif /* language_es_mx_h */
+
diff --git a/src/language_fr.h b/src/language_fr.h
index c6140e9..aeaaa6f 100644
--- a/src/language_fr.h
+++ b/src/language_fr.h
@@ -1,4 +1,4 @@
-#ifndef language_fr_h
+#ifndef language_fr_h
 #define language_fr_h
 /*
  * language_fr.h
@@ -1172,3 +1172,4 @@ static languageDefinition language_fr = { whichPluralForm_fr, {
 
 
 #endif /* language_fr_h */
+
diff --git a/src/language_pt_br.h b/src/language_pt_br.h
index 2b65d88..f64fd32 100644
--- a/src/language_pt_br.h
+++ b/src/language_pt_br.h
@@ -1,4 +1,4 @@
-#ifndef language_pt_br_h
+#ifndef language_pt_br_h
 #define language_pt_br_h
 /*
  * language_pt_br.h
@@ -1294,3 +1294,4 @@ static languageDefinition language_pt_br = { whichPluralForm_pt_br, {
 
 
 #endif /* language_pt_br_h */
+
diff --git a/src/language_zh_cn.h b/src/language_zh_cn.h
index 2321974..1919fa5 100644
--- a/src/language_zh_cn.h
+++ b/src/language_zh_cn.h
@@ -1,4 +1,4 @@
-#ifndef language_zh_cn_h
+#ifndef language_zh_cn_h
 #define language_zh_cn_h
 /*
  * language_zh_cn.h
@@ -78,3 +78,4 @@ static languageDefinition language_zh_cn = { whichPluralForm_zh_cn, {
 
 
 #endif /* language_zh_cn_h */
+
diff --git a/src/tidylib.c b/src/tidylib.c
index 85d59e2..67d7a37 100644
--- a/src/tidylib.c
+++ b/src/tidylib.c
@@ -1135,14 +1135,16 @@ int   tidyDocParseFile( TidyDocImpl* doc, ctmbstr filnam )
     fin = fopen( filnam, "rb" );
 
 #if PRESERVE_FILE_TIMES
-    struct stat sbuf = {0};
-    /* get last modified time */
-    TidyClearMemory( &doc->filetimes, sizeof(doc->filetimes) );
-    if ( fin && cfgBool(doc,TidyKeepFileTimes) &&
-         fstat(fileno(fin), &sbuf) != -1 )
     {
-          doc->filetimes.actime  = sbuf.st_atime;
-          doc->filetimes.modtime = sbuf.st_mtime;
+        struct stat sbuf = { 0 };
+        /* get last modified time */
+        TidyClearMemory(&doc->filetimes, sizeof(doc->filetimes));
+        if (fin && cfgBool(doc, TidyKeepFileTimes) &&
+            fstat(fileno(fin), &sbuf) != -1)
+        {
+            doc->filetimes.actime = sbuf.st_atime;
+            doc->filetimes.modtime = sbuf.st_mtime;
+        }
     }
 #endif
 
@@ -1436,8 +1438,8 @@ int         TY_(DocParseStream)( TidyDocImpl* doc, StreamIn* in )
     Bool xmlIn = cfgBool( doc, TidyXmlTags );
     TidyConfigChangeCallback callback = doc->pConfigChangeCallback;
     
-    doc->pConfigChangeCallback = NULL;
     int bomEnc;
+    doc->pConfigChangeCallback = NULL;
 
     assert( doc != NULL && in != NULL );
     assert( doc->docIn == NULL );
 
     |