X-Git-Url: http://research.m1stereo.tv/gitweb?a=blobdiff_plain;f=src%2Fmvcp%2Fmvcp_socket.c;h=c66b0b616a9918f1e0ce420d9d0b1aea200ceb1a;hb=f54ffdc5e3653042e9f429e1c0cbc3a1f5abebed;hp=8a918328ec2efc6ddafcab2893cf03a13a3bbe8e;hpb=27f0329aa8f434794f1f18e018fc3221e58b77a4;p=melted diff --git a/src/mvcp/mvcp_socket.c b/src/mvcp/mvcp_socket.c index 8a91832..c66b0b6 100644 --- a/src/mvcp/mvcp_socket.c +++ b/src/mvcp/mvcp_socket.c @@ -1,6 +1,6 @@ /* - * valerie_socket.c -- Client Socket - * Copyright (C) 2002-2003 Ushodaya Enterprises Limited + * mvcp_socket.c -- Client Socket + * Copyright (C) 2002-2009 Ushodaya Enterprises Limited * Author: Charles Yates * * This library is free software; you can redistribute it and/or @@ -27,26 +27,30 @@ #include #include #include +#if !defined(__MINGW32__) #include -#include #include +#include +#else +#include +#endif +#include #include #include -#include #include /* Application header files */ -#include "valerie_socket.h" +#include "mvcp_socket.h" /** Initialise the socket. */ -valerie_socket valerie_socket_init( char *server, int port ) +mvcp_socket mvcp_socket_init( char *server, int port ) { - valerie_socket socket = malloc( sizeof( valerie_socket_t ) ); + mvcp_socket socket = malloc( sizeof( mvcp_socket_t ) ); if ( socket != NULL ) { - memset( socket, 0, sizeof( valerie_socket_t ) ); + memset( socket, 0, sizeof( mvcp_socket_t ) ); socket->fd = -1; socket->server = strdup( server ); socket->port = port; @@ -57,7 +61,7 @@ valerie_socket valerie_socket_init( char *server, int port ) /** Connect to the server. */ -int valerie_socket_connect( valerie_socket connection ) +int mvcp_socket_connect( mvcp_socket connection ) { int ret = 0; struct hostent *host; @@ -84,12 +88,12 @@ int valerie_socket_connect( valerie_socket connection ) /** Convenience constructor for a connected file descriptor. */ -valerie_socket valerie_socket_init_fd( int fd ) +mvcp_socket mvcp_socket_init_fd( int fd ) { - valerie_socket socket = malloc( sizeof( valerie_socket_t ) ); + mvcp_socket socket = malloc( sizeof( mvcp_socket_t ) ); if ( socket != NULL ) { - memset( socket, 0, sizeof( valerie_socket_t ) ); + memset( socket, 0, sizeof( mvcp_socket_t ) ); socket->fd = fd; socket->no_close = 1; } @@ -99,7 +103,7 @@ valerie_socket valerie_socket_init_fd( int fd ) /** Read an arbitrarily formatted block of data from the server. */ -int valerie_socket_read_data( valerie_socket socket, char *data, int length ) +int mvcp_socket_read_data( mvcp_socket socket, char *data, int length ) { struct timeval tv = { 1, 0 }; fd_set rfds; @@ -112,7 +116,11 @@ int valerie_socket_read_data( valerie_socket socket, char *data, int length ) if ( select( socket->fd + 1, &rfds, NULL, NULL, &tv ) ) { +#if defined(__MINGW32__) + used = recv( socket->fd, data, length - 1, 0 ); +#else used = read( socket->fd, data, length - 1 ); +#endif if ( used > 0 ) data[ used ] = '\0'; else @@ -125,7 +133,7 @@ int valerie_socket_read_data( valerie_socket socket, char *data, int length ) /** Write an arbitrarily formatted block of data to the server. */ -int valerie_socket_write_data( valerie_socket socket, const char *data, int length ) +int mvcp_socket_write_data( mvcp_socket socket, const char *data, int length ) { int used = 0; @@ -153,7 +161,11 @@ int valerie_socket_write_data( valerie_socket socket, const char *data, int leng } else if ( FD_ISSET( socket->fd, &wfds ) ) { +#if defined(__MINGW32__) + int inc = send( socket->fd, data + used, length - used, 0 ); +#else int inc = write( socket->fd, data + used, length - used ); +#endif if ( inc > 0 ) used += inc; else @@ -168,10 +180,14 @@ int valerie_socket_write_data( valerie_socket socket, const char *data, int leng /** Close the socket. */ -void valerie_socket_close( valerie_socket socket ) +void mvcp_socket_close( mvcp_socket socket ) { if ( socket->fd > 0 && !socket->no_close ) +#if defined(__MINGW32__) + closesocket( socket->fd ); +#else close( socket->fd ); +#endif free( socket->server ); free( socket ); }