double stod(string s) { double fmp = 1; double msg = 0.0; bool hasDec = false; bool hasN = false; uint16 i = 0; if (s[0] == '-') { hasN = true; i++; } while(s[i]) { if (isnum(s[i])) { if (hasDec) { fmp *= 0.1; msg += ntoi(s[i]) * fmp; } else msg = msg * 10 + ntoi(s[i]); } else if (s[i] == '.') { if (hasDec) break; hasDec = true; } else break; i++; } if (hasN) msg = -msg; return msg; }
int OMMoCoMaster::getVersion(uint8_t p_addr) { if (command(p_addr, (uint8_t) OM_SER_BASECOM, (uint8_t) OM_SER_COREVER) != 1) return (-1); if (responseLen() > 0) { int ver = ntoi((uint8_t*) responseData()); return (ver); } return (0); }
int stoi(string s) { int msg = 0; bool hasN = false; uint16 i = 0; if (s[0] == '-') { hasN = true; i++; } while(s[i]) { msg *= 10; convValidate = ntoi(s[i]); if(convValidate == -1) break; msg += convValidate; i++; } if (hasN) msg = -msg; return msg; }
int cGameServer::doDelete(char *name) { int pid; if((pid = mydb.nameExists(name))) { int id=ntoi(name); if(id>-1)//player is online { //check for items in array for(int i=0; i<MAX_INV; i++) if(player[id].inventory[i]!=-1) ml_items.item[player[id].inventory[i]]=cItem(); //remove from player array player[id].access=-1; nh.disconnect(player[id].pid); } //delete from db(handles items and account slots too) mydb.deletePlayer(pid); return 1; } return 0; }
int sock_init( char *_interface, char *_startIP, char *_endIP) { int rv; uchar *pb; uchar val; #ifdef WIN32 DWORD rvl; rvl = WSAStartup(0x0101,&lan_ws); if (rvl != 0) { printerr("init: WSAStartup(1.1) error %ld\n", rvl); return((int)rvl); } #else char findif; #endif if ((g_sockfd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) == SockInvalid) { printerr("socket: %s\n", showlasterr()); return(-1); } memset(&_srcaddr, 0, sizeof(_srcaddr)); _srcaddr.sin_family = AF_INET; _srcaddr.sin_port = htons(0); _srcaddr.sin_addr.s_addr = htonl(INADDR_ANY); #ifdef WIN32 { int ret; uchar osip[4]; uchar osmac[6]; uchar osname[64]; char ipstr[20]; char *temp_start; if (fBroadcastOk && (g_startDest[0] == 0)) { ret = GetFirstIP(osip,osmac,osname,fdebug); /*ilan.c*/ if (ret == 0) { // osip[3] = 0xFF; /*255 for broadcast*/ sprintf(ipstr,"%d.%d.%d.255",osip[0],osip[1],osip[2]); temp_start = ipstr; strcpy(g_startDest,temp_start); strcpy(g_endDest,temp_start); } else { /*use some defaults*/ strcpy(g_startDest,"255.255.255.255"); strcpy(g_endDest,"255.255.255.255"); } } } #elif defined(HPUX) { /*find the OS eth interface to use*/ char devname[INET_ADDRSTRLEN+1]; int i, n; n = 0; sprintf(devname,"lan%d",n); } #else { /*find the OS eth interface to use*/ struct sockaddr_in temp_sockaddr; char *temp_start; struct ifreq ifr; char devname[INET_ADDRSTRLEN+1]; int i, n; if (_interface == NULL) findif = 1; else if (_interface[0] == 0) findif = 1; else findif = 0; if (findif) { n = find_ifname(devname); if (n >= 0) { _interface = devname; findif = 0; } } if (findif) { /* try again to find the first active ethN interface */ n = -1; for (i = 0; (i < 16) && (n == -1); i++) { #ifdef SOLARIS sprintf(devname,"e1000g%d",i); #elif BSD sprintf(devname,"em%d",i); #else sprintf(devname,"eth%d",i); #endif strcpy(ifr.ifr_name, devname); ifr.ifr_addr.sa_family = AF_INET; if (ioctl(g_sockfd, SIOCGIFADDR, &ifr) >= 0) { /* valid IP address, so active interface, use it */ temp_sockaddr = *((struct sockaddr_in *)&ifr.ifr_addr); memcpy(&_srcaddr.sin_addr.s_addr, &temp_sockaddr.sin_addr.s_addr, sizeof(_srcaddr.sin_addr.s_addr)); strcpy(g_interface, devname); temp_start = inet_ntoa(temp_sockaddr.sin_addr); if (temp_start == NULL) temp_start = ""; else if (fBroadcastOk && (g_startDest[0] == 0)) { pb = (uchar *)&temp_sockaddr.sin_addr.s_addr; pb[3] = 0xFF; /*255 for broadcast*/ temp_start = inet_ntoa(temp_sockaddr.sin_addr); strcpy(g_startDest,temp_start); strcpy(g_endDest,temp_start); } printf("sock_init: found %s with %s\n",devname,temp_start); n = i; break; } } if (n < 0) rv = LAN_ERR_OTHER; /*-13*/ } else { /* valid _interface string */ if (strchr(_interface, '.') != NULL) { /* assume it is an IP address*/ if ((rv = inet_pton(AF_INET, _interface, &_srcaddr.sin_addr)) < 0) printerr("inet_pton: %s\n", showlasterr()); if (rv == 0) printerr("invalid interface address\n"); return(rv); } else { /* assume interface name, like eth0 */ strncpy(ifr.ifr_name, _interface, IFNAMSIZ); ifr.ifr_addr.sa_family = AF_INET; if (ioctl(g_sockfd, SIOCGIFADDR, &ifr) < 0) { printerr("ioctl(%s): %s\n", _interface, showlasterr()); return(-1); } temp_sockaddr = *((struct sockaddr_in *)&ifr.ifr_addr); memcpy(&_srcaddr.sin_addr.s_addr, &temp_sockaddr.sin_addr.s_addr, sizeof(_srcaddr.sin_addr.s_addr)); if (fBroadcastOk && (g_startDest[0] == 0)) { pb = (uchar *)&temp_sockaddr.sin_addr.s_addr; pb[3] = 0xFF; /*255 for broadcast*/ temp_start = inet_ntoa(temp_sockaddr.sin_addr); strcpy(g_startDest,temp_start); strcpy(g_endDest,temp_start); } } } } #endif if (fBroadcastOk) { rv = setsockopt(g_sockfd, SOL_SOCKET, SO_BROADCAST, (char *)&broadcast_pings, sizeof(broadcast_pings)); if (rv) { printerr("setsockopt: %s\n", showlasterr()); return(-1); } } if (bind(g_sockfd, (struct sockaddr *)&_srcaddr, sizeof(_srcaddr)) < 0) { printerr("bind: %s\n", showlasterr()); return(-1); } rv = inet_aton(_startIP, &_startAddr); if (rv ) { _startAddr.s_addr = ntohl(_startAddr.s_addr); if (fdebug) show_ip(_startAddr.s_addr); pb = (unsigned char*)&_startAddr.s_addr; if (pb[0] < 1) printerr("Malformed begin IP: %s\n", _startIP); else if (!fBroadcastOk && (pb[0] >254) ) printerr("Malformed begin IP: %s\n", _startIP); else if (fBroadcastOk) { val = pb[0] & 0x0f; if (val == 0x0f) rv = 0; else printerr("Malformed begin broadcast IP: %s\n", _startIP); } else rv = 0; } else { printerr("Invalid begin IP: %s\n", _startIP); } if (rv) return(rv); rv = inet_aton(_endIP, &_endAddr); if (rv ) { _endAddr.s_addr = ntohl(_endAddr.s_addr); if (fdebug) show_ip(_endAddr.s_addr); pb = (unsigned char*)&_endAddr.s_addr; if (pb[0] < 1) printerr("Malformed end IP: %s\n", _endIP); else if (!fBroadcastOk && (pb[0] >254) ) printerr("Malformed end IP: %s\n", _endIP); else rv = 0; } else { printerr("Invalid end IP: %s\n", _endIP); } /* calculate g_num_packets */ g_num_packets = ntoi(_endAddr.s_addr) - ntoi(_startAddr.s_addr) + 1; if (fdebug) printerr("g_num_packets = %d\n",g_num_packets); if (g_num_packets < 1) g_num_packets = 0; return(rv); } /*end sock_init*/
/*------------------------------------------------------------------------------------ ---------------------------------ntoi(name to index)1--------------------------------- ------------------------------------------------------------------------------------*/ int NameSearchable::ntoi(std::string fname) //accesses the nameMap to get the int associated with the name (assumes the amount of name maps is 1) { return ntoi(fname, 0); //assumes the index is 0 }