OSStatus ot_OpenDriver( void) { OSStatus err; int i; // if this function has already been performed, then just return if( gOTInited){ return( kOTNoError); } // Set up the global array of socket pointers and clear it if( gSockets == NULL) gSockets = (SocketPtr *) malloc(kNumSockets * sizeof(SocketPtr)); if( gSockets == NULL) return(memFullErr); for( i = 0; i < kNumSockets; i++) gSockets[i] = NULL; #if TARGET_API_MAC_CARBON err = InitOpenTransportInContext(kInitOTForApplicationMask, NULL); #else err = InitOpenTransport(); #endif gOTInited = (kOTNoError == err); return( err); }
int GSocket_Verify_Inited() { OSStatus err ; #if TARGET_CARBON // Marc Newsam: added the clientcontext variable // however, documentation is unclear how this works OTClientContextPtr clientcontext; if ( gInetSvcRef ) return TRUE ; InitOpenTransportInContext(kInitOTForApplicationMask, &clientcontext); gOTInited = 1 ; gInetSvcRef = OTOpenInternetServicesInContext(kDefaultInternetServicesPath, NULL, &err, clientcontext); #else if ( gInetSvcRef ) return TRUE ; InitOpenTransport() ; gOTInited = 1 ; gInetSvcRef = OTOpenInternetServices(kDefaultInternetServicesPath, NULL, &err); #endif if ( gInetSvcRef == NULL || err != kOTNoError ) { OTAssert("Could not open Inet Services", err == noErr); return FALSE ; } gOTNotifierUPP = NewOTNotifyUPP( OTInetEventHandler ) ; return TRUE ; }
extern void main(void) { OSStatus err; OSStatus junk; err = InitOpenTransportInContext(kInitOTForApplicationMask, NULL); if (err == noErr) { err = OTRegisterAsClientInContext("\pOTClassicContextTest", DummyNotifier, NULL); if (err == noErr) { err = TransferTest(); if (err == noErr) { err = MemTest(); } if (err == noErr) { err = OpenTest(); } if (err == noErr) { err = TaskTest(); } if (err == noErr) { err = StreamTest(); } junk = OTUnregisterAsClientInContext(NULL); assert(junk == noErr); } CloseOpenTransportInContext(NULL); }
NMErr NetworkStartup( void ) { NMErr err = kNMNoError; _playerCount = 0; _nextPlayerID = 1; /*on mac, we gotta set up OpenTransport, which we use for interrupt-safe allocations (since OpenPlay's messages come in at interrupt time)*/ #if (OP_PLATFORM_MAC_CFM) #if (TARGET_API_MAC_CARBON) err = InitOpenTransportInContext(kInitOTForApplicationMask,&theOTContext); #else err = InitOpenTransport(); #endif #endif return err; }
static long OpenNetwork(void) { OSStatus lStatus; OSErr err; long lResponse, lCriteria; err = Gestalt(gestaltOpenTpt, &lResponse); if (err == noErr) { /* Older OpenTransport Headers require that thenext line read: lCriteria = gestaltOpenTptPresent + gestaltOpenTptTCPPresent; */ lCriteria = gestaltOpenTptPresentMask + gestaltOpenTptTCPPresentMask; lResponse = lCriteria & lResponse; if (lResponse == lCriteria) { #ifdef __CARBON__ lStatus=InitOpenTransportInContext(kInitOTForApplicationMask,NULL); #else lStatus = InitOpenTransport(); #endif if (lStatus == noErr) { if (OpenInetServices(&sSvcRef)) { slNetSvcOpen=1; return(1); } } return(0); /* OT present, but won't open */ } } #if !TARGET_API_MAC_CARBON else { gMacTCPDNRResultProcUPP = NewResultProc(&MacTCPDNRResultProc); err = OpenResolver(nil); if (err == noErr) { slNetSvcOpen=1; return(2); } } #endif return(0); } /* end OpenNetwork() */
errr report_score(void) { #ifdef MACINTOSH OSStatus err; #else errr err = 0; #endif #ifdef WINDOWS WSADATA wsaData; WORD wVersionRequested =(WORD) (( 1) | ( 1 << 8)); #endif BUF *score; int sd; char seikakutmp[128]; score = buf_new(); sprintf(seikakutmp, "%s ", ap_ptr->title); buf_sprintf(score, "name: %s\n", player_name); buf_sprintf(score, "version: Hengband %d.%d.%d\n", FAKE_VER_MAJOR-10, FAKE_VER_MINOR, FAKE_VER_PATCH); buf_sprintf(score, "score: %d\n", total_points()); buf_sprintf(score, "level: %d\n", p_ptr->lev); buf_sprintf(score, "depth: %d\n", dun_level); buf_sprintf(score, "maxlv: %d\n", p_ptr->max_plv); buf_sprintf(score, "maxdp: %d\n", max_dlv[DUNGEON_ANGBAND]); buf_sprintf(score, "au: %d\n", p_ptr->au); buf_sprintf(score, "turns: %d\n", turn_real(turn)); buf_sprintf(score, "sex: %d\n", p_ptr->psex); buf_sprintf(score, "race: %s\n", rp_ptr->title); buf_sprintf(score, "class: %s\n", cp_ptr->title); buf_sprintf(score, "seikaku: %s\n", seikakutmp); buf_sprintf(score, "realm1: %s\n", realm_names[p_ptr->realm1]); buf_sprintf(score, "realm2: %s\n", realm_names[p_ptr->realm2]); buf_sprintf(score, "killer: %s\n", p_ptr->died_from); buf_sprintf(score, "-----charcter dump-----\n"); make_dump(score); if (screen_dump) { buf_sprintf(score, "-----screen shot-----\n"); buf_append(score, screen_dump, strlen(screen_dump)); } #ifdef WINDOWS if (WSAStartup(wVersionRequested, &wsaData)) { msg_print("Report: WSAStartup failed."); goto report_end; } #endif #ifdef MACINTOSH #if TARGET_API_MAC_CARBON err = InitOpenTransportInContext(kInitOTForApplicationMask, NULL); #else err = InitOpenTransport(); #endif if (err != noErr) { msg_print("Report: OpenTransport failed."); return 1; } #endif Term_clear(); while (1) { char buff[160]; prt("connecting...", 0, 0); Term_fresh(); /* プロキシを設定する */ set_proxy(HTTP_PROXY, HTTP_PROXY_PORT); /* Connect to the score server */ sd = connect_server(HTTP_TIMEOUT, SCORE_SERVER, SCORE_PORT); if (!(sd < 0)) break; sprintf(buff, "Failed to connect to the score server.(%s)", soc_err()); prt(buff, 0, 0); (void)inkey(); if (!get_check_strict("Try again? ", CHECK_NO_HISTORY)) { err = 1; goto report_end; } } prt("Sending the score...", 0, 0); Term_fresh(); http_post(sd, SCORE_PATH, score); disconnect_server(sd); report_end: #ifdef WINDOWS WSACleanup(); #endif #ifdef MACINTOSH #if TARGET_API_MAC_CARBON CloseOpenTransportInContext(NULL); #else CloseOpenTransport(); #endif #endif return err; }
void main(fptr *f) { OSStatus err; DateTimeRec date; #ifdef MULTI_SEGMENT /* Multi-segment code resource stuff */ { Str255 buf; short i, n, theID; char **ch; OSType theType; n = Count1Resources('Cccc'); post("This external has %ld resources", (long) n); for (i = 1; i <= n; i++) { ch = Get1IndResource('Cccc', i); GetResInfo(ch, &theID, &theType, buf); rescopy('Cccc', theID); } } #endif #ifdef EXTENDED_CODE_RESOURCE // Cause it's an extended code resource... // rescopy('Cccc',22222); #endif setup((t_messlist **)&otudp_class, (method)otudp_new, (method) otudp_free, (short)sizeof(OTUDP), 0L, A_GIMME, 0); version(0); #ifdef DAVID_LIKES_EXPIRING_MAX_OBJECTS post("Expires %d/%d/%d", MONTH, DAY, YEAR); #endif #ifdef DAVID_LIKES_EXPIRING_MAX_OBJECTS GetTime(&date); if((date.year > YEAR) || (date.year == YEAR && ((date.month > MONTH) || (date.month == MONTH && date.day > DAY)))) { ouchstring(EXPIRATION_NOTICE); return; } #endif // post ("*** before InitOpenTransport();"); err = InitOpenTransportInContext(kInitOTForExtensionMask, &OTContext); if (err != kOTNoError) { error("¥ OTUDP: Couldn't InitOpenTransport (err %d). Perhaps Open Transport is not installed.", err); return; } /* bind methods */ addmess((method) otudp_write, "FullPacket", A_LONG, A_LONG, 0); addmess((method) version, "version", 0); addmess((method) otudp_toggleErrorReporting, "errorreporting", 0); addmess((method) otudp_tellmeeverything, "tellmeeverything", 0); addmess((method) otudp_old_write, "write", A_GIMME, 0); addmess((method) otudp_old_write, "gimme", A_GIMME, 0); addmess((method) otudp_assist, "assist", A_CANT, 0); addmess((method) otudp_changeHost, "host", A_SYM, A_LONG, 0); addmess((method) otudp_changeReceivePort, "receiveport", A_LONG, 0); /* These methods are just for debugging. */ addmess((method) otudp_debugstats, "debugstats", 0); addmess((method) otudp_resetdebugstats, "resetdebugstats", 0); addmess((method) otudp_read, "readitagainsam", 0); finder_addclass("System","otudp"); ps_read = gensym("read"); ps_write = gensym("write"); ps_FullPacket = gensym("FullPacket"); ps_PartialPacket = gensym("PartialPacket"); ps_nbufs = gensym("nbufs"); ps_bufsize = gensym("bufsize"); }
int connect_chuukei_server(char *prf_name) { #ifndef MACINTOSH #ifdef WINDOWS WSADATA wsaData; WORD wVersionRequested = (WORD) (( 1) | ( 1 << 8)); #endif struct sockaddr_in ask; struct hostent *hp; if (read_chuukei_prf(prf_name) < 0) { printf("Wrong prf file\n"); return (-1); } if (init_buffer() < 0) { printf("Malloc error\n"); return (-1); } #ifdef WINDOWS if (WSAStartup(wVersionRequested, &wsaData)) { msg_print("Report: WSAStartup failed."); return (-1); } #endif printf("server = %s\nport = %d\n", server_name, server_port); if ((hp = gethostbyname(server_name)) != NULL) { memset(&ask, 0, sizeof(ask)); memcpy(&ask.sin_addr, hp->h_addr_list[0], hp->h_length); } else { if ((ask.sin_addr.s_addr=inet_addr(server_name)) == 0) { printf("Bad hostname\n"); return (-1); } } ask.sin_family = AF_INET; ask.sin_port = htons((unsigned short)server_port); #ifndef WINDOWS if ((sd=socket(PF_INET,SOCK_STREAM, 0)) < 0) #else if ((sd=socket(PF_INET,SOCK_STREAM, 0)) == INVALID_SOCKET) #endif { printf("Can't create socket\n"); return (-1); } if (connect(sd, (struct sockaddr *)&ask, sizeof(ask)) < 0) { close(sd); printf("Can't connect %s port %d\n", server_name, server_port); return (-1); } return (0); #else /* MACINTOSH */ OSStatus err; InetHostInfo response; InetHost host_addr; InetAddress inAddr; TCall sndCall; Boolean bind = false; OSStatus junk; if (read_chuukei_prf(prf_name) < 0){ printf("Wrong prf file\n"); return (-1); } init_buffer(); printf("server = %s\nport = %d\n", server_name, server_port); #if TARGET_API_MAC_CARBON err = InitOpenTransportInContext(kInitOTForApplicationMask, NULL); #else err = InitOpenTransport(); #endif memset(&response, 0, sizeof(response)); #if TARGET_API_MAC_CARBON inet_services = OTOpenInternetServicesInContext(kDefaultInternetServicesPath, 0, &err, NULL); #else inet_services = OTOpenInternetServices(kDefaultInternetServicesPath, 0, &err); #endif if (err == noErr) { err = OTInetStringToAddress(inet_services, (char *)server_name, &response); if (err == noErr) { host_addr = response.addrs[0]; } else { printf("Bad hostname\n"); } #if TARGET_API_MAC_CARBON ep = (void *)OTOpenEndpointInContext(OTCreateConfiguration(kTCPName), 0, nil, &err, NULL); #else ep = (void *)OTOpenEndpoint(OTCreateConfiguration(kTCPName), 0, nil, &err); #endif if (err == noErr) { err = OTBind(ep, nil, nil); bind = (err == noErr); } if (err == noErr){ OTInitInetAddress(&inAddr, server_port, host_addr); sndCall.addr.len = sizeof(InetAddress); sndCall.addr.buf = (unsigned char*) &inAddr; sndCall.opt.buf = nil; /* no connection options */ sndCall.opt.len = 0; sndCall.udata.buf = nil; /* no connection data */ sndCall.udata.len = 0; sndCall.sequence = 0; /* ignored by OTConnect */ err = OTConnect(ep, &sndCall, NULL); if( err != noErr ){ printf("Can't connect %s port %d\n", server_name, server_port); } } err = OTSetSynchronous(ep); if (err == noErr) err = OTSetBlocking(ep); } if( err != noErr ){ if( bind ){ OTUnbind(ep); } /* Clean up. */ if (ep != kOTInvalidEndpointRef) { OTCloseProvider(ep); ep = nil; } if (inet_services != nil) { OTCloseProvider(inet_services); inet_services = nil; } return -1; } return 0; #endif }