X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/62e83765c26fa613df0c97f4ad9355f691b048b7..1a02aff92534301c5e54f0617b5df1faec2cb057:/src/mac/carbon/gsocket.c diff --git a/src/mac/carbon/gsocket.c b/src/mac/carbon/gsocket.c index 49b8a92142..07fd19e193 100644 --- a/src/mac/carbon/gsocket.c +++ b/src/mac/carbon/gsocket.c @@ -15,6 +15,7 @@ #ifndef __GSOCKET_STANDALONE__ #include "wx/setup.h" +#include "wx/platform.h" #endif #if wxUSE_SOCKETS || defined(__GSOCKET_STANDALONE__) @@ -29,12 +30,13 @@ #define TRUE 1 #endif #else + #include #define OTUNIXERRORS 1 #include #include #include #endif -#if TARGET_CARBON +#if TARGET_CARBON && !defined(OTAssert) #define OTAssert( str , cond ) /* does not exists in Carbon */ #endif @@ -74,6 +76,13 @@ #endif /* __GSOCKET_STANDALONE__ */ +#ifndef ntohl +#define ntohl(x) (x) +#define ntohs(x) (x) +#define htonl(x) (x) +#define htons(x) (x) +#endif + void wxCYield() ; #ifdef __WXDEBUG__ #define qDebug 1 @@ -84,7 +93,8 @@ extern pascal void OTDebugStr(const char* str); #include #endif InetSvcRef gInetSvcRef = 0 ; - +int gOTInited = 0 ; +OTNotifyUPP gOTNotifierUPP = NULL ; OSStatus DoNegotiateIPReuseAddrOption(EndpointRef ep, Boolean enableReuseIPMode); @@ -153,7 +163,6 @@ pascal void OTInetEventHandler(void*s, OTEventCode event, OTResult result, void if ( event == kOTSyncIdleEvent ) { - YieldToAnyThread() ; return ; } @@ -183,7 +192,7 @@ static void SetDefaultEndpointModes(EndpointRef ep , void *data ) junk = OTSetBlocking(ep); OTAssert("SetDefaultEndpointModes: Could not set blocking", junk == noErr); */ - junk = OTInstallNotifier(ep, OTInetEventHandler, data); + junk = OTInstallNotifier(ep, gOTNotifierUPP, data); OTAssert("SetDefaultEndpointModes: Could not install notifier", junk == noErr); /* junk = OTUseSyncIdleEvents(ep, true); @@ -193,6 +202,11 @@ static void SetDefaultEndpointModes(EndpointRef ep , void *data ) /* Global initialisers */ +void GSocket_SetGUIFunctions(struct GSocketGUIFunctionsTable *table) +{ + // do nothing, wxMac doesn't have wxBase-GUI separation yet +} + int GSocket_Init() { return TRUE; @@ -211,6 +225,7 @@ int GSocket_Verify_Inited() return TRUE ; InitOpenTransportInContext(kInitOTForApplicationMask, &clientcontext); + gOTInited = 1 ; gInetSvcRef = OTOpenInternetServicesInContext(kDefaultInternetServicesPath, NULL, &err, clientcontext); #else @@ -218,6 +233,7 @@ int GSocket_Verify_Inited() return TRUE ; InitOpenTransport() ; + gOTInited = 1 ; gInetSvcRef = OTOpenInternetServices(kDefaultInternetServicesPath, NULL, &err); #endif if ( gInetSvcRef == NULL || err != kOTNoError ) @@ -225,18 +241,24 @@ int GSocket_Verify_Inited() OTAssert("Could not open Inet Services", err == noErr); return FALSE ; } + gOTNotifierUPP = NewOTNotifyUPP( OTInetEventHandler ) ; return TRUE ; } void GSocket_Cleanup() { - if ( gInetSvcRef != NULL ) - OTCloseProvider( gInetSvcRef ); -#if TARGET_CARBON - CloseOpenTransportInContext( NULL ) ; -#else - CloseOpenTransport() ; -#endif + if ( gOTInited != 0 ) + { + if ( gInetSvcRef != NULL ) + OTCloseProvider( gInetSvcRef ); + #if TARGET_CARBON + CloseOpenTransportInContext( NULL ) ; + #else + CloseOpenTransport() ; + #endif + if ( gOTNotifierUPP ) + DisposeOTNotifyUPP( gOTNotifierUPP ) ; + } } /* Constructors / Destructors for GSocket */ @@ -466,9 +488,6 @@ GAddress *GSocket_GetPeer(GSocket *socket) */ GSocketError GSocket_SetServer(GSocket *sck) { - int type; - int arg = 1; - assert(sck != NULL); /* must not be in use */ @@ -538,9 +557,6 @@ GSocketError GSocket_SetServer(GSocket *sck) GSocket *GSocket_WaitConnection(GSocket *socket) { GSocket *connection = NULL ; - GSocketError err; - - int arg = 1; assert(socket != NULL); @@ -633,8 +649,6 @@ GSocket *GSocket_WaitConnection(GSocket *socket) */ GSocketError GSocket_SetNonOriented(GSocket *sck) { - int arg = 1; - assert(sck != NULL); if (sck->m_endpoint != kOTInvalidEndpointRef ) @@ -719,12 +733,9 @@ GSocketError GSocket_SetNonOriented(GSocket *sck) */ GSocketError GSocket_Connect(GSocket *sck, GSocketStream stream) { - int ret; - int arg = 1; InetAddress addr ; TEndpointInfo info; - OTFlags flags = 0; - OSStatus err = kOTNoError; + OSStatus err = kOTNoError; TCall peer ; assert(sck != NULL); @@ -925,7 +936,6 @@ int GSocket_Write(GSocket *socket, const char *buffer, int size) */ GSocketEventFlags GSocket_Select(GSocket *socket, GSocketEventFlags flags) { - OTResult state ; assert(socket != NULL); wxMacProcessNotifierEvents() ; /* @@ -1072,7 +1082,7 @@ int _GSocket_Recv_Stream(GSocket *socket, char *buffer, int size) OTByteCount sz = 0 ; OTCountDataBytes( socket->m_endpoint , &sz ) ; - if ( size > sz ) + if ( size > (int)sz ) size = sz ; res = OTRcv( socket->m_endpoint , buffer , size , &flags ) ; if ( res < 0 ) @@ -1320,13 +1330,11 @@ GSocketError GAddress_INET_SetAnyAddress(GAddress *address) GSocketError GAddress_INET_SetHostAddress(GAddress *address, unsigned long hostaddr) { - struct in_addr *addr; - assert(address != NULL); CHECK_ADDRESS(address, INET, GSOCK_INVADDR); - address->m_host = hostaddr ; + address->m_host = htonl(hostaddr) ; return GSOCK_NOERROR; } @@ -1347,8 +1355,7 @@ service_entry gServices[] = GSocketError GAddress_INET_SetPortName(GAddress *address, const char *port, const char *protocol) { - InetAddress *addr; - int i ; + size_t i ; assert(address != NULL); CHECK_ADDRESS(address, INET, GSOCK_INVADDR); @@ -1382,8 +1389,6 @@ GSocketError GAddress_INET_SetPortName(GAddress *address, const char *port, GSocketError GAddress_INET_SetPort(GAddress *address, unsigned short port) { - InetAddress *addr; - assert(address != NULL); CHECK_ADDRESS(address, INET, GSOCK_INVADDR); address->m_port = port ; @@ -1410,7 +1415,7 @@ unsigned long GAddress_INET_GetHostAddress(GAddress *address) assert(address != NULL); CHECK_ADDRESS(address, INET, 0); - return address->m_host; + return ntohl(address->m_host); } unsigned short GAddress_INET_GetPort(GAddress *address) @@ -1643,10 +1648,12 @@ void _GSocket_Internal_Proc(unsigned long e , void* d ) /* Hack added for Mac OS X */ GSocketError GAddress_UNIX_GetPath(GAddress *addr, char *path, size_t buf) { + return GSOCK_INVADDR; } GSocketError GAddress_UNIX_SetPath(GAddress *addr, const char *path) { + return GSOCK_INVADDR; } #endif /* wxUSE_SOCKETS || defined(__GSOCKET_STANDALONE__) */