Allow compilation on Darwin diff --git a/netcat.c b/netcat.c index a0fb51b..bbb5dd1 100644 --- a/netcat.c +++ b/netcat.c @@ -51,11 +51,13 @@ # include #endif +#ifndef IPTOS_LOWCOST +# define IPTOS_LOWCOST 0x02 +#endif #ifndef IPTOS_LOWDELAY # define IPTOS_LOWDELAY 0x10 # define IPTOS_THROUGHPUT 0x08 # define IPTOS_RELIABILITY 0x04 -# define IPTOS_LOWCOST 0x02 # define IPTOS_MINCOST IPTOS_LOWCOST #endif /* IPTOS_LOWDELAY */ @@ -108,8 +110,9 @@ # include #endif #include -#include -#include +#include +#include +#include #include "atomicio.h" @@ -240,6 +243,43 @@ static int connect_with_timeout(int fd, const struct sockaddr *sa, static void quit(); +static char* strtonumerrs[] = { + "too large", + "too small", + "invalid" +}; + +static long long +strtonum( + const char *nptr, + long long minval, + long long maxval, + const char **errstr) +{ + long long val; + + while (*nptr != '\0' && isspace(*nptr)) + nptr++; + if (*nptr == '\0') { + if (errstr != NULL) + *errstr = strtonumerrs[2]; + return 0; + } + val = atoll(nptr); + if (val < minval) { + if (errstr != NULL) + *errstr = strtonumerrs[1]; + return 0; + } + if (val > maxval) { + if (errstr != NULL) + *errstr = strtonumerrs[0]; + return 0; + } + *errstr = NULL; + return val; +} + int main(int argc, char *argv[]) { diff --git a/socks.c b/socks.c index 9068f39..68b68e3 100644 --- a/socks.c +++ b/socks.c @@ -38,7 +38,7 @@ #include #include #include -#include +#include #include "atomicio.h" #define SOCKS_PORT "1080"