diff --git a/src/interfaces/libpq/fe-connect.c b/src/interfaces/libpq/fe-connect.c index 82008a58c3e..2582cdee8a8 100644 --- a/src/interfaces/libpq/fe-connect.c +++ b/src/interfaces/libpq/fe-connect.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-connect.c,v 1.168 2001/07/16 20:05:51 petere Exp $ + * $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-connect.c,v 1.169 2001/07/20 17:45:05 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -736,9 +736,6 @@ connectNoDelay(PGconn *conn) printfPQExpBuffer(&conn->errorMessage, libpq_gettext("could not set socket to TCP no delay mode: %s\n"), strerror(errno)); -#ifdef WIN32 - printf("Winsock error: %i\n", WSAGetLastError()); -#endif return 0; } @@ -937,11 +934,7 @@ connectDBStart(PGconn *conn) */ if (connect(conn->sock, &conn->raddr.sa, conn->raddr_len) < 0) { -#ifndef WIN32 if (errno == EINPROGRESS || errno == 0) -#else - if (WSAGetLastError() == WSAEINPROGRESS) -#endif { /* @@ -2142,7 +2135,11 @@ PQrequestCancel(PGconn *conn) strcpy(conn->errorMessage.data, "PQrequestCancel() -- connection is not open\n"); conn->errorMessage.len = strlen(conn->errorMessage.data); +#ifdef WIN32 + WSASetLastError(save_errno); +#else errno = save_errno; +#endif return FALSE; } @@ -2184,11 +2181,12 @@ PQrequestCancel(PGconn *conn) /* Sent it, done */ #ifdef WIN32 closesocket(tmpsock); + WSASetLastError(save_errno); #else close(tmpsock); + errno = save_errno; #endif - errno = save_errno; return TRUE; cancel_errReturn: @@ -2199,11 +2197,12 @@ cancel_errReturn: { #ifdef WIN32 closesocket(tmpsock); + WSASetLastError(save_errno); #else close(tmpsock); + errno = save_errno; #endif } - errno = save_errno; return FALSE; } diff --git a/src/interfaces/libpq/fe-exec.c b/src/interfaces/libpq/fe-exec.c index fcd2724b8eb..924da5fcf25 100644 --- a/src/interfaces/libpq/fe-exec.c +++ b/src/interfaces/libpq/fe-exec.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-exec.c,v 1.103 2001/07/15 13:45:04 petere Exp $ + * $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-exec.c,v 1.104 2001/07/20 17:45:06 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -223,7 +223,7 @@ pqResultAlloc(PGresult *res, size_t nBytes, bool isBinary) } /* If there's enough space in the current block, no problem. */ - if (nBytes <= res->spaceLeft) + if (nBytes <= (size_t)res->spaceLeft) { space = res->curBlock->space + res->curOffset; res->curOffset += nBytes; @@ -1024,7 +1024,7 @@ getAnotherTuple(PGconn *conn, int binary) vlen = 0; if (tup[i].value == NULL) { - tup[i].value = (char *) pqResultAlloc(result, vlen + 1, binary); + tup[i].value = (char *) pqResultAlloc(result, vlen + 1, (bool)binary); if (tup[i].value == NULL) goto outOfMemory; } @@ -2051,7 +2051,11 @@ 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) diff --git a/src/interfaces/libpq/fe-misc.c b/src/interfaces/libpq/fe-misc.c index af7998ce97c..6a4d753cebf 100644 --- a/src/interfaces/libpq/fe-misc.c +++ b/src/interfaces/libpq/fe-misc.c @@ -25,13 +25,17 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-misc.c,v 1.51 2001/07/15 13:45:04 petere Exp $ + * $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-misc.c,v 1.52 2001/07/20 17:45:06 momjian Exp $ * *------------------------------------------------------------------------- */ #include "postgres_fe.h" +#include +#include +#include + #ifdef WIN32 #include "win32.h" #else @@ -39,10 +43,6 @@ #include #endif -#include -#include -#include - #ifdef HAVE_SYS_SELECT_H #include #endif diff --git a/src/interfaces/libpq/win32.h b/src/interfaces/libpq/win32.h index c8cddb51dc4..eb250350be4 100644 --- a/src/interfaces/libpq/win32.h +++ b/src/interfaces/libpq/win32.h @@ -21,3 +21,18 @@ * crypt not available (yet) */ #define crypt(a,b) a + +/* + * assumes that errno is used for sockets only + * + */ + +#undef errno +#undef EINTR +#undef EAGAIN /* doesn't apply on sockets */ + +#define errno WSAGetLastError() +#define EINTR WSAEINTR +#define EWOULDBLOCK WSAEWOULDBLOCK +#define ECONNRESET WSAECONNRESET +#define EINPROGRESS WSAEINPROGRESS