[libxslt] Fix Windows compiler warnings



commit 8760bb227604ed8e096fdc3cee249fb655c7cdbc
Author: Nick Wellnhofer <wellnhofer aevum de>
Date:   Wed Oct 25 16:21:23 2017 +0200

    Fix Windows compiler warnings
    
    Fixes bug 788317. Thanks to J. Peter Mugaas for the initial patch.

 libexslt/crypto.c      |   18 ++++++++++--------
 libexslt/date.c        |    5 +++--
 libxslt/transform.c    |    4 +++-
 libxslt/xsltlocale.c   |   12 +++++++-----
 libxslt/xsltutils.c    |   12 ++++--------
 python/libxslt.c       |    5 +++--
 xsltproc/testThreads.c |    2 ++
 xsltproc/xsltproc.c    |    9 +--------
 8 files changed, 33 insertions(+), 34 deletions(-)
---
diff --git a/libexslt/crypto.c b/libexslt/crypto.c
index e13db8b..64758d3 100644
--- a/libexslt/crypto.c
+++ b/libexslt/crypto.c
@@ -121,12 +121,14 @@ exsltCryptoHex2Bin (const unsigned char *hex, int hexlen,
 
 #include <windows.h>
 #include <wincrypt.h>
+#ifdef _MSC_VER
 #pragma comment(lib, "advapi32.lib")
+#endif
 
 static void
 exsltCryptoCryptoApiReportError (xmlXPathParserContextPtr ctxt,
                                 int line) {
-    LPVOID lpMsgBuf;
+    char *lpMsgBuf;
     DWORD dw = GetLastError ();
 
     FormatMessage (FORMAT_MESSAGE_ALLOCATE_BUFFER |
@@ -143,7 +145,7 @@ exsltCryptoCryptoApiReportError (xmlXPathParserContextPtr ctxt,
 static HCRYPTHASH
 exsltCryptoCryptoApiCreateHash (xmlXPathParserContextPtr ctxt,
                                HCRYPTPROV hCryptProv, ALG_ID algorithm,
-                               const char *msg, unsigned int msglen,
+                               const unsigned char *msg, unsigned int msglen,
                                char *dest, unsigned int destlen)
 {
     HCRYPTHASH hHash = 0;
@@ -154,12 +156,12 @@ exsltCryptoCryptoApiCreateHash (xmlXPathParserContextPtr ctxt,
        return 0;
     }
 
-    if (!CryptHashData (hHash, (const BYTE *) msg, msglen, 0)) {
+    if (!CryptHashData (hHash, msg, msglen, 0)) {
        exsltCryptoCryptoApiReportError (ctxt, __LINE__);
        goto fail;
     }
 
-    if (!CryptGetHashParam (hHash, HP_HASHVAL, dest, &dwHashLen, 0)) {
+    if (!CryptGetHashParam (hHash, HP_HASHVAL, (BYTE *) dest, &dwHashLen, 0)) {
        exsltCryptoCryptoApiReportError (ctxt, __LINE__);
        goto fail;
     }
@@ -194,8 +196,8 @@ exsltCryptoCryptoApiHash (xmlXPathParserContextPtr ctxt,
     }
 
     hHash = exsltCryptoCryptoApiCreateHash (ctxt, hCryptProv,
-                                           algorithm, msg, msglen,
-                                           dest, HASH_DIGEST_LENGTH);
+                                           algorithm, (unsigned char *) msg,
+                                            msglen, dest, HASH_DIGEST_LENGTH);
     if (0 != hHash) {
        CryptDestroyHash (hHash);
     }
@@ -212,7 +214,7 @@ exsltCryptoCryptoApiRc4Encrypt (xmlXPathParserContextPtr ctxt,
     HCRYPTKEY hKey;
     HCRYPTHASH hHash;
     DWORD dwDataLen;
-    unsigned char hash[HASH_DIGEST_LENGTH];
+    char hash[HASH_DIGEST_LENGTH];
 
     if (msglen > destlen) {
        xsltTransformError (xsltXPathGetTransformContext (ctxt), NULL,
@@ -263,7 +265,7 @@ exsltCryptoCryptoApiRc4Decrypt (xmlXPathParserContextPtr ctxt,
     HCRYPTKEY hKey;
     HCRYPTHASH hHash;
     DWORD dwDataLen;
-    unsigned char hash[HASH_DIGEST_LENGTH];
+    char hash[HASH_DIGEST_LENGTH];
 
     if (msglen > destlen) {
        xsltTransformError (xsltXPathGetTransformContext (ctxt), NULL,
diff --git a/libexslt/date.c b/libexslt/date.c
index 8687802..0f3a21a 100644
--- a/libexslt/date.c
+++ b/libexslt/date.c
@@ -808,8 +808,9 @@ exsltDateCurrent (void)
     gmtime_r(&secs, &gmTm);
 #else
     tb = gmtime(&secs);
-    if (tb != NULL)
-        gmTm = *tb;
+    if (tb == NULL)
+        return NULL;
+    gmTm = *tb;
 #endif
     ret->tz_flag = 0;
 #if 0
diff --git a/libxslt/transform.c b/libxslt/transform.c
index a9e8ffe..560f43c 100644
--- a/libxslt/transform.c
+++ b/libxslt/transform.c
@@ -22,6 +22,7 @@
 #include <limits.h>
 #include <string.h>
 #include <stdio.h>
+#include <stddef.h>
 
 #include <libxml/xmlmemory.h>
 #include <libxml/parser.h>
@@ -5872,7 +5873,8 @@ xsltApplyStylesheetInternal(xsltStylesheetPtr style, xmlDocPtr doc,
      */
     root = xmlDocGetRootElement(doc);
     if (root != NULL) {
-       if (((long) root->content) >= 0 && (xslDebugStatus == XSLT_DEBUG_NONE))
+       if (((ptrdiff_t) root->content >= 0) &&
+            (xslDebugStatus == XSLT_DEBUG_NONE))
            xmlXPathOrderDocElems(doc);
     }
 
diff --git a/libxslt/xsltlocale.c b/libxslt/xsltlocale.c
index bc9774b..c69735c 100644
--- a/libxslt/xsltlocale.c
+++ b/libxslt/xsltlocale.c
@@ -187,7 +187,7 @@ xsltNewLocale(const xmlChar *languageTag) {
     region = xsltDefaultRegion(localeName);
     if (region == NULL) goto end;
 
-    strcpy(localeName + llen + 1, region);
+    strcpy((char *) localeName + llen + 1, (char *) region);
     locale = xslt_locale_WINAPI(localeName);
 end:
     return(locale);
@@ -382,7 +382,7 @@ xsltStrxfrm(xsltLocale locale, const xmlChar *string)
 #endif
 
 #ifdef XSLT_LOCALE_WINAPI
-    xstrlen = MultiByteToWideChar(CP_UTF8, 0, string, -1, NULL, 0);
+    xstrlen = MultiByteToWideChar(CP_UTF8, 0, (char *) string, -1, NULL, 0);
     if (xstrlen == 0) {
         xsltTransformError(NULL, NULL, NULL, "xsltStrxfrm : MultiByteToWideChar check failed\n");
         return(NULL);
@@ -392,7 +392,7 @@ xsltStrxfrm(xsltLocale locale, const xmlChar *string)
         xsltTransformError(NULL, NULL, NULL, "xsltStrxfrm : out of memory\n");
         return(NULL);
     }
-    r = MultiByteToWideChar(CP_UTF8, 0, string, -1, xstr, xstrlen);
+    r = MultiByteToWideChar(CP_UTF8, 0, (char *) string, -1, xstr, xstrlen);
     if (r == 0) {
         xsltTransformError(NULL, NULL, NULL, "xsltStrxfrm : MultiByteToWideChar failed\n");
         xmlFree(xstr);
@@ -479,9 +479,11 @@ xsltIterateSupportedLocales(LPSTR lcid) {
     k = sscanf(lcid, "%lx", (long*)&p->lcid);
     if (k < 1) goto end;
     /*don't count terminating null character*/
-    k = GetLocaleInfoA(p->lcid, LOCALE_SISO639LANGNAME , iso639lang , sizeof(iso639lang ));
+    k = GetLocaleInfoA(p->lcid, LOCALE_SISO639LANGNAME,
+                       (char *) iso639lang, sizeof(iso639lang));
     if (--k < 1) goto end;
-    l = GetLocaleInfoA(p->lcid, LOCALE_SISO3166CTRYNAME, iso3136ctry, sizeof(iso3136ctry));
+    l = GetLocaleInfoA(p->lcid, LOCALE_SISO3166CTRYNAME,
+                       (char *) iso3136ctry, sizeof(iso3136ctry));
     if (--l < 1) goto end;
 
     {  /*fill results*/
diff --git a/libxslt/xsltutils.c b/libxslt/xsltutils.c
index 6bd8ed0..f023d84 100644
--- a/libxslt/xsltutils.c
+++ b/libxslt/xsltutils.c
@@ -42,16 +42,9 @@
 #include "imports.h"
 #include "transform.h"
 
-/* gettimeofday on Windows ??? */
 #if defined(WIN32) && !defined(__CYGWIN__)
-#ifdef _MSC_VER
-#include <winsock2.h>
-#pragma comment(lib, "ws2_32.lib")
-#define gettimeofday(p1,p2)
-#define HAVE_GETTIMEOFDAY
 #define XSLT_WIN32_PERFORMANCE_COUNTER
-#endif /* _MS_VER */
-#endif /* WIN32 */
+#endif
 
 /************************************************************************
  *                                                                     *
@@ -1811,6 +1804,8 @@ static long calibration = -1;
  *
  * Returns the number of milliseconds used by xsltTimestamp()
  */
+#if !defined(XSLT_WIN32_PERFORMANCE_COUNTER) && \
+    (defined(HAVE_CLOCK_GETTIME) || defined(HAVE_GETTIMEOFDAY))
 static long
 xsltCalibrateTimestamps(void) {
     register int i;
@@ -1819,6 +1814,7 @@ xsltCalibrateTimestamps(void) {
        xsltTimestamp();
     return(xsltTimestamp() / 1000);
 }
+#endif
 
 /**
  * xsltCalibrateAdjust:
diff --git a/python/libxslt.c b/python/libxslt.c
index b552ed9..b1fb18d 100644
--- a/python/libxslt.c
+++ b/python/libxslt.c
@@ -21,6 +21,7 @@
 #include "libxslt-py.h"
 
 #include <stdio.h>
+#include <stddef.h>
 
 #if (defined(_MSC_VER) || defined(__MINGW32__)) && !defined(vsnprintf)
 #define vsnprintf(b,c,f,a) _vsnprintf(b,c,f,a)
@@ -105,7 +106,7 @@ libxslt_xsltGetTransformContextHashCode(PyObject *self ATTRIBUTE_UNUSED, PyObjec
         return NULL;
 
     tctxt =  (xsltTransformContextPtr) PytransformCtxt_Get(py_tctxt);
-    hash_code = (long) tctxt;
+    hash_code = (ptrdiff_t) tctxt;
 
     ret = PyInt_FromLong(hash_code);
     return ret;
@@ -142,7 +143,7 @@ libxslt_xsltGetStylesheetHashCode(PyObject *self ATTRIBUTE_UNUSED, PyObject *arg
         return NULL;
 
     style =  (xsltStylesheetPtr) Pystylesheet_Get(py_style);
-    hash_code = (long) style;
+    hash_code = (ptrdiff_t) style;
 
     ret = PyInt_FromLong(hash_code);
     return ret;
diff --git a/xsltproc/testThreads.c b/xsltproc/testThreads.c
index 05f0039..7c22644 100644
--- a/xsltproc/testThreads.c
+++ b/xsltproc/testThreads.c
@@ -16,7 +16,9 @@
 #include <stdlib.h>
 #include <stdio.h>
 
+#ifndef _REENTRANT
 #define _REENTRANT
+#endif
 #include <libxml/xmlversion.h>
 
 #if defined(LIBXML_THREAD_ENABLED) && defined(HAVE_PTHREAD_H)
diff --git a/xsltproc/xsltproc.c b/xsltproc/xsltproc.c
index 3c83abd..096ae30 100644
--- a/xsltproc/xsltproc.c
+++ b/xsltproc/xsltproc.c
@@ -54,18 +54,11 @@
 
 #include <libexslt/exsltconfig.h>
 
-#if defined(WIN32) && !defined (__CYGWIN__)
-#if defined(_MSC_VER) || defined(__MINGW32__)
-#include <winsock2.h>
-#define gettimeofday(p1,p2)
-#endif /* _MS_VER */
-#else /* WIN32 */
 #if defined(HAVE_SYS_TIME_H)
 #include <sys/time.h>
 #elif defined(HAVE_TIME_H)
 #include <time.h>
 #endif
-#endif /* WIN32 */
 
 #ifdef HAVE_SYS_TIMEB_H
 #include <sys/timeb.h>
@@ -595,7 +588,7 @@ main(int argc, char **argv)
                    (!strcmp(argv[i], "--output"))) {
             i++;
 #if defined(WIN32) || defined (__CYGWIN__)
-           output = xmlCanonicPath(argv[i]);
+           output = (char *) xmlCanonicPath((xmlChar *) argv[i]);
             if (output == NULL)
 #endif
                output = (char *) xmlStrdup((xmlChar *) argv[i]);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]