X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/3a45cd9275dc9279e133deb0932402ae5f4d0b5f..fde026c507b6562245d6d2495742c56d181cb3b4:/stglibs/common.lib/common.cpp diff --git a/stglibs/common.lib/common.cpp b/stglibs/common.lib/common.cpp index 606f057a..2ea32c2b 100644 --- a/stglibs/common.lib/common.cpp +++ b/stglibs/common.lib/common.cpp @@ -28,35 +28,13 @@ $Author: faust $ */ - -/*#include <sys/stat.h> -#include <fcntl.h> -#include <stdlib.h> -#include <errno.h> -#include <string.h> -#include <stdio.h> -#include <iconv.h> - - -#include <stdarg.h> - - +// For old and dub systems +// Like FreeBSD4 #include <sys/types.h> -#include <math.h> - -#ifdef WIN32 -#include <sysutils.hpp> -#else +#include <sys/time.h> #include <unistd.h> -#include <sys/wait.h> -#include <netinet/in.h> -#include <arpa/inet.h> -#include <sys/socket.h> -#endif*/ -#ifdef FREE_BSD -#include <sys/types.h> -#endif +#include <sys/select.h> #ifdef WIN32 #include <winsock2.h> @@ -64,6 +42,7 @@ #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> +#include <sys/select.h> #endif #include <iconv.h> @@ -75,7 +54,7 @@ #include <cerrno> #include <cassert> -#include "common.h" +#include "stg/common.h" #ifndef INET_ADDRSTRLEN # define INET_ADDRSTRLEN 16 @@ -996,7 +975,6 @@ if (0 == strncasecmp(str.c_str(), "no", 2)) return -1; } -inline int ParseInt(const std::string & str, int * val) { if (str2x<int>(str, *val)) @@ -1004,7 +982,6 @@ if (str2x<int>(str, *val)) return 0; } -inline int ParseUnsigned(const string & str, unsigned * val) { if (str2x<unsigned>(str, *val)) @@ -1034,3 +1011,27 @@ if (*val < min || *val > max) return 0; } + +bool WaitPackets(int sd) +{ +fd_set rfds; +FD_ZERO(&rfds); +FD_SET(sd, &rfds); + +struct timeval tv; +tv.tv_sec = 0; +tv.tv_usec = 500000; + +int res = select(sd + 1, &rfds, NULL, NULL, &tv); +if (res == -1) // Error + { + if (errno != EINTR) + printfd(__FILE__, "Error on select: '%s'\n", strerror(errno)); + return false; + } + +if (res == 0) // Timeout + return false; + +return true; +}