Ticket #1124: file.c.diff

File file.c.diff, 2.2 KB (added by mcr42.myopenid.com, 7 years ago)
  • file.c

     
    5151#include <netdb.h>
    5252#endif
    5353
     54#ifdef HAVE_WINSOCK
     55#include <winsock2.h>
     56#include <ws2tcpip.h>
     57int inet_aton(const char *cp, struct in_addr *inp);
     58
     59int inet_aton(const char *cp, struct in_addr *inp)
     60{
     61        unsigned long addr = inet_addr(cp);
     62        inp->S_un.S_addr = addr;
     63        return addr!=-1;
     64}
     65#endif
     66
    5467extern char *version;
    5568
    5669#ifdef HAVE_LIBCRYPTO
     
    95108#pragma pack(pop)
    96109#endif
    97110
    98 #ifdef HAVE_SOCKET
     111#if defined(HAVE_SOCKET) || defined(HAVE_WINSOCK)
    99112static int
    100113file_socket_connect(char *host, char *service)
    101114{
     
    103116        struct addrinfo *result, *rp;
    104117        int fd=-1,s;
    105118
     119#ifdef _WIN32
     120        WSADATA wsi;
     121        WSAStartup(0x0202,&wsi);
     122#endif
     123
    106124        memset(&hints, 0, sizeof(struct addrinfo));
    107125        hints.ai_family = AF_UNSPEC;
    108126        hints.ai_socktype = SOCK_STREAM;
     
    130148file_http_request(struct file *file, char *method, char *host, char *path, char *header, int persistent)
    131149{
    132150        char *request=g_strdup_printf("%s %s HTTP/1.0\r\nUser-Agent: navit %s\r\nHost: %s\r\n%s%s%s\r\n",method,path,version,host,persistent?"Connection: Keep-Alive\r\n":"",header?header:"",header?"\r\n":"");
     151#ifdef _WIN32
     152        send(file->fd, request, strlen(request), 0);
     153#else
    133154        write(file->fd, request, strlen(request));
     155#endif
    134156        dbg(1,"%s\n",request);
    135157        file->requests++;
    136158}
     
    202224int
    203225file_request(struct file *f, struct attr **options)
    204226{
    205 #ifdef HAVE_SOCKET
     227#if defined(HAVE_SOCKET) || defined(HAVE_WINSOCK)
    206228        return file_request_do(f, options, 0);
    207229#else
    208230        return 0;
     
    225247        int open_flags=O_LARGEFILE|O_BINARY;
    226248
    227249        if (options && (attr=attr_search(options, NULL, attr_url))) {
    228 #ifdef HAVE_SOCKET
     250#if defined(HAVE_SOCKET) || defined(HAVE_WINSOCK)
    229251                file_request_do(file, options, 1);
    230252#endif
    231253        } else {
     
    436458                if (toread >= 4096 && !eof) {
    437459                        if (!file->requests && toread > size)
    438460                                toread=size;
     461#ifdef _WIN32
     462                        rd=recv(file->fd, file->buffer+file->buffer_len, toread, 0);
     463#else
    439464                        rd=read(file->fd, file->buffer+file->buffer_len, toread);
     465#endif
    440466                        if (rd > 0) {
    441467                                file->buffer_len+=rd;
    442468                        } else