]> granicus.if.org Git - postgresql/commitdiff
Fix residual breakage from Windows socket-errno patch: the routines
authorTom Lane <tgl@sss.pgh.pa.us>
Fri, 3 Aug 2001 22:11:39 +0000 (22:11 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Fri, 3 Aug 2001 22:11:39 +0000 (22:11 +0000)
that should use regular errno, not WSAGetLastError(), now do so again.

src/interfaces/libpq/fe-connect.c
src/interfaces/libpq/fe-exec.c
src/interfaces/libpq/fe-lobj.c
src/interfaces/libpq/win32.h

index 756af07b65702c763864f8a6a98757b5f3c7e2cd..47f5d55c32325caeb0d4c4ded811395d5509ecf7 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-connect.c,v 1.171 2001/07/31 02:14:49 tgl Exp $
+ *       $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-connect.c,v 1.172 2001/08/03 22:11:39 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -697,16 +697,16 @@ update_db_info(PGconn *conn)
 static int
 connectMakeNonblocking(PGconn *conn)
 {
-#ifdef WIN32
+#if defined(WIN32) || defined(__BEOS__)
        int                     on = 1;
+#endif
 
+#if defined(WIN32)
        if (ioctlsocket(conn->sock, FIONBIO, &on) != 0)
 #elif defined(__BEOS__)
-               int                     on = 1;
-
        if (ioctl(conn->sock, FIONBIO, &on) != 0)
 #else
-       if                      (fcntl(conn->sock, F_SETFL, O_NONBLOCK) < 0)
+       if (fcntl(conn->sock, F_SETFL, O_NONBLOCK) < 0)
 #endif
        {
                printfPQExpBuffer(&conn->errorMessage,
@@ -1194,6 +1194,8 @@ keep_going:                                               /* We will come back to here until there
                case CONNECTION_STARTED:
                        {
                                ACCEPT_TYPE_ARG3 laddrlen;
+                               int                     optval;
+                               ACCEPT_TYPE_ARG3 optlen = sizeof(optval);
 
                                /*
                                 * Write ready, since we've made it here, so the
@@ -1205,10 +1207,6 @@ keep_going:                                              /* We will come back to here until there
                                 * state waiting for us on the socket.
                                 */
 
-#ifndef WIN32
-                               int   optval;
-                               ACCEPT_TYPE_ARG3 optlen = sizeof(optval);
-
                                if (getsockopt(conn->sock, SOL_SOCKET, SO_ERROR,
                                                           (char *) &optval, &optlen) == -1)
                                {
@@ -1217,23 +1215,8 @@ keep_going:                                              /* We will come back to here until there
                                                                          strerror(errno));
                                        goto error_return;
                                }
-#else
-                               char far  optval[8];
-                               ACCEPT_TYPE_ARG3 optlen = sizeof(optval);
-                       
-                               int OptResult=getsockopt(conn->sock, SOL_SOCKET, SO_ERROR,optval, &optlen);
-                               if (OptResult==SOCKET_ERROR)
-                               {
-                                       printfPQExpBuffer(&conn->errorMessage,
-                                                       "PQconnectPoll() -- getsockopt() failed: "
-                                                       "errno=%i\n", errno);
-                                       connectFailureMessage(conn, OptResult);
-                                       goto error_return;
-                               }
-#endif
                                else if (optval != 0)
                                {
-
                                        /*
                                         * When using a nonblocking connect, we will typically
                                         * see connect failures at this point, so provide a
index 924da5fcf257ae075d6d317d50c8afd51ba72442..c512f6928c6c0ce08b822b91354573d0cd0a4bcf 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-exec.c,v 1.104 2001/07/20 17:45:06 momjian Exp $
+ *       $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-exec.c,v 1.105 2001/08/03 22:11:39 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -2037,6 +2037,10 @@ PQoidStatus(const PGresult *res)
        return buf;
 }
 
+#ifdef WIN32                                   /* need to get at normal errno here */
+#undef errno
+#endif
+
 /*
   PQoidValue -
                a perhaps preferable form of the above which just returns
@@ -2051,11 +2055,7 @@ PQoidValue(const PGresult *res)
        if (!res || !res->cmdStatus || strncmp(res->cmdStatus, "INSERT ", 7) != 0)
                return InvalidOid;
 
-#ifdef WIN32
-       WSASetLastError(0);
-#else
        errno = 0;
-#endif
        result = strtoul(res->cmdStatus + 7, &endptr, 10);
 
        if (!endptr || (*endptr != ' ' && *endptr != '\0') || errno == ERANGE)
@@ -2064,6 +2064,10 @@ PQoidValue(const PGresult *res)
                return (Oid) result;
 }
 
+#ifdef WIN32                                   /* back to socket errno */
+#define errno WSAGetLastError()
+#endif
+
 /*
    PQcmdTuples -
        if the last command was an INSERT/UPDATE/DELETE, return number
index 078184ceb0b15e84a266408b33455725ba2af059..f6761319dd6f21e86c1fa50e5bcc479c9d847208 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-lobj.c,v 1.35 2001/07/15 13:45:04 petere Exp $
+ *       $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-lobj.c,v 1.36 2001/08/03 22:11:39 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
 #include "libpq/libpq-fs.h"            /* must come after sys/stat.h */
 
 
+#ifdef WIN32                                   /* need to use normal errno in this file */
+#undef errno
+#endif
+
+
 #define LO_BUFSIZE               8192
 
 static int     lo_initialize(PGconn *conn);
index 988455a8ec15733e6b94964349f47d3959aa687a..38099b079e41a7295c50f3839f3f66146740371c 100644 (file)
@@ -7,7 +7,7 @@
 #define strncasecmp(a,b,c) _strnicmp(a,b,c)
 
 /*
- * Some compat functions
+ * Some other compat functions
  */
 #define open(a,b,c) _open(a,b,c)
 #define close(a) _close(a)
 /*
  * crypt not available (yet)
  */
-#define crypt(a,b) a
+#define crypt(a,b) (a)
 
 /*
- * assumes that errno is used for sockets only
- *
+ * Most of libpq uses "errno" to access error conditions from socket calls,
+ * so on Windows we want to redirect those usages to WSAGetLastError().
+ * Rather than #ifdef'ing every single place that has "errno", hack it up
+ * with a macro instead.  But there are a few places that do need to touch
+ * the regular errno variable.  For them, we #undef and then redefine errno.
  */
 
-#undef errno
-#undef EINTR
-#undef EAGAIN  /* doesn't apply on sockets */
-
 #define errno WSAGetLastError()
+
+#undef EAGAIN  /* doesn't apply on sockets */
+#undef EINTR
 #define EINTR WSAEINTR
 #define EWOULDBLOCK WSAEWOULDBLOCK
 #define ECONNRESET WSAECONNRESET