that should use regular errno, not WSAGetLastError(), now do so again.
*
*
* 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,
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
* 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)
{
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
*
*
* 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
*
*
* 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);
#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