sockaddr_in sa;\r
int len = sizeof(SOCKADDR);\r
int rv = WSAStringToAddress((LPSTR)src, af, NULL, (LPSOCKADDR)&sa, &len);\r
+ if(rv >= 0)\r
+ {\r
+ if(WSAGetLastError() == 10022) // Invalid Argument\r
+ rv = 0;\r
+ else\r
+ rv = 1;\r
+ }\r
memcpy(dst, &sa.sin_addr, sizeof(struct in_addr));\r
return rv;\r
}\r
return errormessage;\r
}\r
\r
-int printf_c(const char * format, ...)\r
-{\r
- // Better hope we're not multithreaded, otherwise we'll have chickens crossing the road other side to get the to :P\r
- static char message[500];\r
- static char temp[10];\r
- int color1, color2;\r
- \r
- /* parse arguments */\r
- va_list ap;\r
- va_start(ap, format);\r
- vsnprintf(message, 500, format, ap);\r
- va_end(ap);\r
-\r
- /* search for unix-style escape sequences */\r
- int t;\r
- int c = 0;\r
- const char * p = message;\r
- while(*p != 0)\r
- {\r
- if (*p == '\033')\r
- {\r
- // Escape sequence -> copy into the temp buffer, and parse the color.\r
- p++;\r
- t = 0;\r
- while(*p != 'm')\r
- {\r
- temp[t++] = *p;\r
- ++p;\r
- }\r
- \r
- temp[t] = 0;\r
- p++;\r
- if (!_stricmp(temp, "[0"))\r
- {\r
- // Returning to normal colour.\r
- SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);\r
- }\r
- else if (sscanf(temp, "[%u;%u", &color1, &color2) == 2)\r
- {\r
- switch(color2)\r
- {\r
- case 32: // Green\r
- SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN | FOREGROUND_INTENSITY);\r
- break;\r
- \r
- default: // Unknown\r
- SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_INTENSITY);\r
- break;\r
- }\r
- }\r
- else\r
- {\r
- char message[50];\r
- sprintf("Unknown color code: %s", temp);\r
- MessageBox(0, message, message, MB_OK);\r
- }\r
- }\r
-\r
- putchar(*p);\r
- ++c;\r
- ++p;\r
- }\r
-\r
- return c;\r
-}\r
-\r
int arg_counter = 1;\r
char optarg[514];\r
int getopt_long_only(int ___argc, char *const *___argv, const char *__shortopts, const struct option *__longopts, int *__longind)\r
{\r
COORD coordScreen = { 0, 0 }; /* here's where we'll home the cursor */\r
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);\r
- BOOL bSuccess;\r
DWORD cCharsWritten;\r
CONSOLE_SCREEN_BUFFER_INFO csbi; /* to get buffer info */ \r
DWORD dwConSize; /* number of character cells in the current buffer */ \r