Update of /cvsroot/monetdb/MonetDB/src/gdk
In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv13781/src/gdk

Modified Files:
        gdk_utils.mx 
Log Message:
propagated changes of Tuesday Dec 18 2007 - Thursday Dec 20 2007
from the MonetDB_1-20 branch to the development trunk


Index: gdk_utils.mx
===================================================================
RCS file: /cvsroot/monetdb/MonetDB/src/gdk/gdk_utils.mx,v
retrieving revision 1.201
retrieving revision 1.202
diff -u -d -r1.201 -r1.202
--- gdk_utils.mx        14 Dec 2007 13:18:50 -0000      1.201
+++ gdk_utils.mx        20 Dec 2007 16:36:02 -0000      1.202
@@ -1884,28 +1884,54 @@
        char message[GDKMAXERRLEN];
        size_t len = strlen(GDKERROR);
 
+#ifdef NATIVE_WIN32
+       DWORD err = GetLastError();
+       LPTSTR lpMsgBuf;
+#else
        int err = errno;
+#endif
        va_list ap;
 
-       if (!strncmp(format, GDKERROR, len)) {
+       if (strncmp(format, GDKERROR, len) == 0) {
                len = 0;
        } else {
-               strcpy(message, GDKERROR);
+               strncpy(message, GDKERROR, sizeof(message));
        }
        va_start(ap, format);
-       vsnprintf(message + len, GDKMAXERRLEN - (len + 2), format, ap);
+       vsnprintf(message + len, sizeof(message) - (len + 2), format, ap);
        va_end(ap);
-       if (err > 0 && err < 1024) {
-               char *osmsg = strerror(err);
-               size_t len1 = strlen(message);
-               size_t len2 = len1 + strlen(GDKMESSAGE);
-               size_t len3 = len2 + strlen(osmsg);
+#ifndef NATIVE_WIN32
+       if (err > 0 && err < 1024)
+#endif
+       {
+               size_t len1;
+               size_t len2;
+               size_t len3;
+               char *osmsg;
+#ifdef NATIVE_WIN32
+               char osmsgbuf[256];
+               osmsg = osmsgbuf;
+               FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,
+                             NULL,
+                             err,
+                             MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
+                             (LPTSTR) osmsgbuf,
+                             sizeof(osmsgbuf),
+                             NULL);
+#else
+               osmsg = strerror(err);
+#endif
+               len1 = strlen(message);
+               len2 = len1 + strlen(GDKMESSAGE);
+               len3 = len2 + strlen(osmsg);
 
                if (len3 + 2 < GDKMAXERRLEN) {
                        strcpy(message + len1, GDKMESSAGE);
                        strcpy(message + len2, osmsg);
-                       message[len3] = '\n';
-                       message[len3 + 1] = 0;
+                       if (len3 > 0 && message[len3 - 1] != '\n') {
+                               message[len3] = '\n';
+                               message[len3 + 1] = 0;
+                       }
                }
        }
        GDKaddbuf(message);


-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Monetdb-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/monetdb-checkins

Reply via email to