1.txt

text/plain

Filename: 1.txt
Type: text/plain
Part: 0
Message: Re: Re: [HACKERS] Re: WIN32 errno patch
#include <winsock.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>


#define SOCK_ERRNO (WSAGetLastError())
#define SOCK_STRERROR my_sock_strerror


static int     netmsg_loaded=0;

const char* my_sock_strerror(unsigned long eno){
    static char buf[512]; // i know, not threadsafe
    static HMODULE netmsg=0;

    if (!netmsg_loaded){
        netmsg_loaded=1;
        netmsg=LoadLibraryEx("netmsg.dll",0,LOAD_LIBRARY_AS_DATAFILE);
        // ^ never freed (doesn't matter)
    }

    unsigned long flags = FORMAT_MESSAGE_FROM_SYSTEM 
                        | FORMAT_MESSAGE_IGNORE_INSERTS;

    if (netmsg)
        flags |= FORMAT_MESSAGE_FROM_HMODULE;

    if (!FormatMessage( 
            flags,
            netmsg,eno,
            MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
            buf,sizeof(buf)-1,
            0
           )){
      sprintf(buf,"Unknown socket error(%u)",eno);
    }
    buf[sizeof(buf)-1]='\0';
    return buf;
}


int main(int argc, char* argv[])
{
    WSADATA wsa_data;
    struct sockaddr_in   addr;
    int sock, r;

    WSAStartup (0x0101, &wsa_data);

    sock = socket(PF_INET,SOCK_STREAM,0);
    
    addr.sin_family      = AF_INET;
    addr.sin_addr.s_addr = inet_addr("10.10.10.3");
    addr.sin_port= htons(1234);

    r = connect (sock,(struct sockaddr*)&addr,sizeof(struct sockaddr_in));
    if (r==-1) {
        int eno = SOCK_ERRNO;
        printf("socket error(%u):%s\n",eno,SOCK_STRERROR(eno));
    }
	
    WSACleanup();
	return 0;
}