that should use regular errno, not WSAGetLastError(), now do so again.
index 756af07b65702c763864f8a6a98757b5f3c7e2cd..47f5d55c32325caeb0d4c4ded811395d5509ecf7 100644 (file)
*
*
* 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 $
*
*-------------------------------------------------------------------------
*/
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)
*
*
* 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 $
*
*-------------------------------------------------------------------------
*/
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
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)
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)
*
*
* 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)
#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