1
0
mirror of https://github.com/postgres/postgres.git synced 2025-07-21 16:02:15 +03:00

Update odbc driver to current version V.0244

This commit is contained in:
Byron Nikolaidis
1998-06-03 20:33:45 +00:00
parent 85f91d0e8e
commit 99d21d5b62
39 changed files with 5468 additions and 3771 deletions

View File

@ -1,16 +1,16 @@
/* Module: socket.c
*
* Description: This module contains functions for low level socket
* operations (connecting/reading/writing to the backend)
*
* Classes: SocketClass (Functions prefix: "SOCK_")
*
* API functions: none
*
* Comments: See "notice.txt" for copyright and license information.
*
*/
/* Module: socket.c
*
* Description: This module contains functions for low level socket
* operations (connecting/reading/writing to the backend)
*
* Classes: SocketClass (Functions prefix: "SOCK_")
*
* API functions: none
*
* Comments: See "notice.txt" for copyright and license information.
*
*/
#include "socket.h"
@ -45,8 +45,8 @@ SocketClass *rv;
return NULL;
rv->errormsg = NULL;
rv->errornumber = 0;
rv->errornumber = 0;
rv->reverse = FALSE;
}
return rv;
@ -77,6 +77,7 @@ SOCK_connect_to(SocketClass *self, unsigned short port, char *hostname)
{
struct hostent *host;
struct sockaddr_in sadr;
unsigned long iaddr;
if (self->socket != -1) {
self->errornumber = SOCKET_ALREADY_CONNECTED;
@ -84,15 +85,24 @@ struct sockaddr_in sadr;
return 0;
}
host = gethostbyname(hostname);
if (host == NULL) {
self->errornumber = SOCKET_HOST_NOT_FOUND;
self->errormsg = "Could not resolve hostname.";
return 0;
}
memset((char *)&sadr, 0, sizeof(sadr));
memcpy(&(sadr.sin_addr), host->h_addr, host->h_length);
/* If it is a valid IP address, use it.
Otherwise use hostname lookup.
*/
iaddr = inet_addr(hostname);
if (iaddr == INADDR_NONE) {
host = gethostbyname(hostname);
if (host == NULL) {
self->errornumber = SOCKET_HOST_NOT_FOUND;
self->errormsg = "Could not resolve hostname.";
return 0;
}
memcpy(&(sadr.sin_addr), host->h_addr, host->h_length);
}
else
memcpy(&(sadr.sin_addr), (struct in_addr *) &iaddr, sizeof(iaddr));
sadr.sin_family = AF_INET;
sadr.sin_port = htons(port);
@ -185,15 +195,15 @@ char buf[4];
switch (len) {
case 2:
SOCK_get_n_char(self, buf, len);
if (self->reverse)
return *((unsigned short *) buf);
else
if (self->reverse)
return *((unsigned short *) buf);
else
return ntohs( *((unsigned short *) buf) );
case 4:
SOCK_get_n_char(self, buf, len);
if (self->reverse)
return *((unsigned int *) buf);
SOCK_get_n_char(self, buf, len);
if (self->reverse)
return *((unsigned int *) buf);
else
return ntohl( *((unsigned int *) buf) );
@ -202,7 +212,7 @@ char buf[4];
self->errormsg = "Cannot read ints of that length";
return 0;
}
}
}
void
@ -211,12 +221,12 @@ SOCK_put_int(SocketClass *self, int value, short len)
unsigned int rv;
switch (len) {
case 2:
case 2:
rv = self->reverse ? value : htons( (unsigned short) value);
SOCK_put_n_char(self, (char *) &rv, 2);
return;
case 4:
case 4:
rv = self->reverse ? value : htonl( (unsigned int) value);
SOCK_put_n_char(self, (char *) &rv, 4);
return;
@ -251,7 +261,7 @@ SOCK_get_next_byte(SocketClass *self)
// reload the buffer
self->buffer_read_in = 0;
self->buffer_filled_in = recv(self->socket, (char *)self->buffer_in, globals.socket_buffersize, 0);
self->buffer_filled_in = recv(self->socket, (char *)self->buffer_in, globals.socket_buffersize, 0);
mylog("read %d, global_socket_buffersize=%d\n", self->buffer_filled_in, globals.socket_buffersize);