📄 ospossys.h
字号:
e = WSAGetLastError(); \ OSPM_DBG(e,("%s failed. %s\n", "recv", strerror(errno))); \}#define OSPM_SELECT(s,fr,fw,fe,t,e) { \ e = select(s,fr,fw,fe,t); \ OSPM_DBG((e == SOCKET_ERROR),("%s failed. %s\n", "select", strerror(errno))); \}#define OSPM_CONNECT(s,ip,pt,e) { \ struct sockaddr_in sin; \ sin.sin_family = AF_INET; \ sin.sin_addr.s_addr = ip; \ sin.sin_port = pt; \ e = connect(s, (struct sockaddr *)&sin, sizeof(struct sockaddr_in)); \ if(e != 0) { \ if(WSAGetLastError() == WSAEWOULDBLOCK){ \ e = OSPC_ERR_SOCK_CONN_IN_PROGRESS; \ } \ else { \ OSPM_DBG(e,("Warning: %s to %s failed. %d\n", "connect", inet_ntoa(sin.sin_addr), WSAGetLastError())); \ } \ } \}#define OSPM_INET_NTOA(ip, s) { \ struct sockaddr_in sin; \ sin.sin_family = AF_INET; \ sin.sin_addr.s_addr = ip; \ s = inet_ntoa(sin.sin_addr); \}#define OSPM_CLOSE(s,e) { \ e = closesocket(s); \ if (e) \ OSPM_DBG(WSAGetLastError(),("%s failed. %d\n", "closesocket", WSAGetLastError())); \}#define OSPM_SOCKET(s,e) { \ s = socket(AF_INET, SOCK_STREAM, 0); \ if (s == INVALID_SOCKET) \ e = OSPC_ERR_SOCK_CREATE_FAILED; \ OSPM_DBG(e,("%s failed. %d\n", "socket", WSAGetLastError())); \}#define OSPM_UDP_SOCKET(s,e) { \ s = socket(AF_INET, SOCK_DGRAM, 0); \ if (s == INVALID_SOCKET) \ e = OSPC_ERR_SOCK_CREATE_FAILED; \ OSPM_DBG(e,("%s failed. %d\n", "socket", WSAGetLastError())); \}#else/* -----------------------------*//* UNIX Sockets Macros *//* -----------------------------*/#define OSPM_INITWINSOCK(e) { }#define OSPM_CLEANUPWINSOCK() { }#define OSPM_BLOCKIO(s,f,e) { \ if (f) { \ e = fcntl(s, F_SETFD, O_NONBLOCK); \ OSPM_DBG(e < 0,("%s failed. %s\n", "fcntl", strerror(errno))); \ } \ else { \ e = fcntl(s, F_SETFD, 0); \ OSPM_DBG(e < 0,("%s failed. %s\n", "fcntl", strerror(errno))); \ } \}/* wbr: changed gethostbyname_r() to gethostbyname(), remove cBuf[] */#define OSPM_GETHOSTBYNAME(h,ip,e) { \ struct hostent *pHost, sHostResult; \ struct sockaddr_in sSockAddr; \ char cBuf[512]; \ int Error; \ if ((pHost = gethostbyname((const char *)h)) \ == (struct hostent *)NULL) \ { \ e = Error; \ OSPM_DBG(e,("%s(%s) failed. %s\n", "gethostbyname", (const char*)h, strerror(errno))); \ ip = 0; \ } \ else { \ OSPM_MEMSET(&sSockAddr, 0, sizeof(sSockAddr)); \ OSPM_MEMCPY((char *)&sSockAddr.sin_addr, \ pHost->h_addr, pHost->h_length); \ ip = sSockAddr.sin_addr.s_addr; \ } \}#define OSPM_GETSOCKERR(h,e) { \ int err = 0, err_sz = sizeof(int); \ e = getsockopt(h->SockFd, SOL_SOCKET, SO_ERROR, (void *)&err, &err_sz); \ if (err != 0) e = OSPC_ERR_SOCK_RESET; \}#define OSPM_SEND(fd,n,b,l,e) { \ e = 0; \ errno = 0; \ n = send(fd, (char *)b, l, 0); \ e = errno; \ if (e == ENOTCONN || e == EPIPE || e == ECONNRESET) \ e = OSPC_ERR_SOCK_RESET; \ OSPM_DBG(e,("%s failed. %s\n", "send", strerror(errno))); \}#define OSPM_RECV(h,b,l,e) { \ e = 0; \ errno = 0; \ h->ByteCount = recv(h->SockFd, (char *)b, l, 0); \ e = errno; \ OSPM_DBG(e,("%s failed. %s\n", "recv", strerror(errno))); \}#define OSPM_SELECT(s,fr,fw,fe,t,e) { \ e = select(s,fr,fw,fe,t); \}#define OSPM_CONNECT(s,ip,pt,e) { \ struct sockaddr_in sin; \ sin.sin_family = AF_INET; \ sin.sin_addr.s_addr = ip; \ sin.sin_port = pt; \ e = connect(s, (struct sockaddr *)&sin, sizeof(struct sockaddr_in)); \ if(e != 0) { \ if(errno == EINPROGRESS){ \ e = OSPC_ERR_SOCK_CONN_IN_PROGRESS; \ } \ else { \ OSPM_DBG(e,("%s failed. %s\n", "connect", strerror(errno))); \ } \ } \}#define OSPM_INET_NTOA(ip, s) { \ struct in_addr sin; \ sin.s_addr = ip; \ s = inet_ntoa(sin); \}#define OSPM_CLOSE(s,e) { \ e = close(s); \ OSPM_DBG(e,("%s failed. %s\n", "close", strerror(errno))); \}#define OSPM_SOCKET(s,e) { \ s = socket(AF_INET, SOCK_STREAM, 0); \ if (s < 0) \ e = OSPC_ERR_SOCK_CREATE_FAILED; \ OSPM_DBG(e,("%s failed. %s\n", "socket", strerror(errno))); \}#define OSPM_UDP_SOCKET(s,e) { \ s = socket(AF_INET, SOCK_DGRAM, 0); \ if (s < 0) \ e = OSPC_ERR_SOCK_CREATE_FAILED; \ OSPM_DBG(e,("%s failed. %s\n", "socket", strerror(errno))); \}#endif/* -------------------------------*//* Common Winsock/Sockets Macros *//* -------------------------------*/#define OSPM_DISABLE_NAGLE(s,e) { \ int flag = 1; \ OSPM_SETSOCKOPT(s,IPPROTO_TCP, TCP_NODELAY, \ flag,sizeof(flag),e); \}#define OSPM_SETSOCKOPT(s,lev,opn,opv,opl,e) { \ e = setsockopt(s, lev, opn, \ (const char *)&opv, opl); \ OSPM_DBG(e,("%s failed. %s\n", "setsockopt", strerror(errno))); \}#define OSPM_INET_ADDR(host,ip) { \ if (!OSPPUtilIsDottedNumericIP(host)) \ ip = 0; \ else \ { \ ip = inet_addr(host); \ if (ip < 0) ip = 0; \ } \}#define OSPM_SHUTDOWN(s,h,e) { \ e = shutdown(s,h); \ OSPM_DBG(e,("%s failed. %s\n", "shutdown", strerror(errno))); \}/* * ============================================= * Char/String Manipulation Macros * ============================================= */#define OSPM_TOLOWER(c) tolower(c)#define OSPM_STRCPY(s1,s2) strcpy((s1), (s2))#define OSPM_STRCMP(s1,s2) strcmp((s1), (s2))#define OSPM_STRNCMP(s1,s2,n) strncmp((s1), (s2), (n))#define OSPM_STRLEN(s) ((s != OSPC_OSNULL)? strlen(s) : 0)#define OSPM_STRNCAT(s1,s2,n) strncat((s1), (s2), (n))#define OSPM_STRNCPY(s1,s2,n) strncpy((char *)(s1), (const char *)(s2), (n))#define OSPM_STRNCASECMP(s1,s2,n) strncasecmp((s1), (s2), (n))#define OSPM_STRTOUL(s1,a1,b) strtoul((s1), (a1), (b))#define OSPM_STRSTR(s1,s2) strstr((s1),(s2))#define OSPM_ATOF(s) atof(s)#ifdef _WIN32#define OSPM_STRTOK(s,c, s2) strtok(s,c)#else#define OSPM_STRTOK(s, c, s2) strtok_r(s,c,s2)#endif/* * ============================================= * Miscellaneous Macros * ============================================= */#ifdef _WIN32#define OSPM_SLEEP(sec) { \ Sleep(sec * 1000); \}#define OSPM_POW(num, power, err){ \ struct _exception e; \ if(num == 1){ \ err = num;} \ else{ \ err = ((unsigned)pow((double)num, power)); \ if((_matherr(&e)) || (err == 1) || (err == 0)){ \ err = OSPC_ERR_POW; \ } \ } \}#define OSPM_ISNAN(num, flag) { \ flag = _isnan(num); \ }#define OSPM_ACCESS _access#else#define OSPM_POW(num, power, err){ \ if(num == 1){ \ err = num;} \ else{ \ err = pow(num, power); \ if((isnan(err)) || (err == -HUGE_VAL) || (err == +HUGE_VAL) || (err == 1) || (err == 0)){ \ err = OSPC_ERR_POW; \ } \ } \}#define OSPM_SLEEP(sec) sleep(sec)#define OSPM_ISNAN(num, flag) { \ flag = isnan(num); \ }#define OSPM_ACCESS access#endif#define OSPM_SET_FLAG_BIT(bitfield,bitmask,value) { \ if (value) \ bitfield |= bitmask; \ else \ bitfield &= ~(bitmask); \}#define OSPM_PRINTF printf#define OSPM_SPRINTF sprintf#define OSPM_CTIME ctime#define OSPM_TIME time#define OSPM_MODF modf#define OSPM_CEIL ceil#define OSPM_FLOOR floor#define OSPM_GETENV getenv/* 'uses' the argument */#define OSPM_ARGUSED(x) (x=x)#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -