diff options
| author | Daniel Stenberg <daniel@haxx.se> | 2004-11-02 10:12:22 +0000 | 
|---|---|---|
| committer | Daniel Stenberg <daniel@haxx.se> | 2004-11-02 10:12:22 +0000 | 
| commit | 24d47a6e07304cf0921f2d30734b3c64360773c3 (patch) | |
| tree | 03bae425fc10d6c083e866a3e1ab5bf620dffe42 /lib | |
| parent | 8a66584db4ab3bd1668a685785da7108f7550e95 (diff) | |
Paul Nolan fix to make libcurl build nicely on Windows CE
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/Makefile.am | 6 | ||||
| -rw-r--r-- | lib/config-win32ce.h | 258 | ||||
| -rw-r--r-- | lib/connect.c | 13 | ||||
| -rw-r--r-- | lib/dict.c | 4 | ||||
| -rw-r--r-- | lib/easy.c | 9 | ||||
| -rw-r--r-- | lib/file.c | 7 | ||||
| -rw-r--r-- | lib/formdata.c | 2 | ||||
| -rw-r--r-- | lib/ftp.c | 13 | ||||
| -rw-r--r-- | lib/getenv.c | 4 | ||||
| -rw-r--r-- | lib/hostthre.c | 9 | ||||
| -rw-r--r-- | lib/http.c | 4 | ||||
| -rw-r--r-- | lib/if2ip.c | 4 | ||||
| -rw-r--r-- | lib/ldap.c | 4 | ||||
| -rw-r--r-- | lib/mprintf.c | 18 | ||||
| -rw-r--r-- | lib/setup.h | 6 | ||||
| -rw-r--r-- | lib/strerror.c | 20 | ||||
| -rw-r--r-- | lib/telnet.c | 5 | ||||
| -rw-r--r-- | lib/transfer.c | 2 | ||||
| -rw-r--r-- | lib/url.c | 5 | 
19 files changed, 374 insertions, 19 deletions
| diff --git a/lib/Makefile.am b/lib/Makefile.am index d7f9f7d44..d5cca407f 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -24,14 +24,14 @@ AUTOMAKE_OPTIONS = foreign nostdinc  DSP = curllib.dsp -EXTRA_DIST = Makefile.b32 Makefile.m32	\ +EXTRA_DIST = Makefile.b32 Makefile.m32					\    Makefile.vc6 Makefile.riscos libcurl.def $(DSP) curllib.dsw		\    config-vms.h config-win32.h config-riscos.h config-mac.h config.h.in	\    ca-bundle.crt README.encoding README.memoryleak README.ares		\    README.curlx makefile.dj config.dj libcurl.framework.make		\    libcurl.plist libcurl.rc config-amigaos.h amigaos.c amigaos.h		\ -  makefile.amiga Makefile.netware nwlib.c libcurl.imp	\ -  msvcproj.head msvcproj.foot +  makefile.amiga Makefile.netware nwlib.c libcurl.imp			\ +  msvcproj.head msvcproj.foot config-win32ce.h  CLEANFILES = $(DSP) diff --git a/lib/config-win32ce.h b/lib/config-win32ce.h new file mode 100644 index 000000000..e217d4c81 --- /dev/null +++ b/lib/config-win32ce.h @@ -0,0 +1,258 @@ +/* config.h.  Generated automatically by configure.  */ +/* config.h.in.  Generated automatically from configure.in by autoheader.  */ + +#ifndef __CONFIG_WIN32_H +#define __CONFIG_WIN32_H + +/* Define if on AIX 3. +   System headers sometimes define this. +   We just want to avoid a redefinition error message.  */ +#ifndef _ALL_SOURCE +/* #undef _ALL_SOURCE */ +#endif + +/* Define to empty if the keyword does not work.  */ +/* #undef const */ + +/* Define if you don't have vprintf but do have _doprnt.  */ +/* #undef HAVE_DOPRNT */ + +/* Define if you have the vprintf function.  */ +#define HAVE_VPRINTF 1 + +/* Define as the return type of signal handlers (int or void).  */ +/*#define RETSIGTYPE void */ + +/* Define to `unsigned' if <sys/types.h> doesn't define.  */ +/* #undef size_t */ + +/* Define this to 'int' if ssize_t is not an available typedefed type */ +#define ssize_t int + +/* Define this to 'int' if socklen_t is not an available typedefed type */ +#if !defined(ENABLE_IPV6) && ((_MSC_VER < 1300) || !defined(USE_SSLEAY)) +#define socklen_t int +#endif + +/* The size of a `curl_off_t', as computed by sizeof. */ +#ifdef SIZEOF_CURL_OFF_T +#undef SIZEOF_CURL_OFF_T +#endif + +/* Borland lacks _lseeki64(), so we don't support >2GB files */ +#define SIZEOF_CURL_OFF_T 4  + +/* Define if you have the ANSI C header files.  */ +#define STDC_HEADERS 1 + +/* Define if you can safely include both <sys/time.h> and <time.h>.  */ +/* #define TIME_WITH_SYS_TIME 1 */ + +/* Define cpu-machine-OS */ +#define OS "i386-pc-win32" + +/* The number of bytes in a long double.  */ +#define SIZEOF_LONG_DOUBLE 16 + +/* The number of bytes in a long long.  */ +/* #define SIZEOF_LONG_LONG 8 */ + +/* Define if you have the gethostbyaddr function.  */ +#define HAVE_GETHOSTBYADDR 1 + +/* Define if you have the gethostname function.  */ +#define HAVE_GETHOSTNAME 1 + +/* Define if you have the getpass function.  */ +/*#define HAVE_GETPASS 1*/ + +/* Define if you have the getservbyname function.  */ +#define HAVE_GETSERVBYNAME 1 + +/* Define if you have the gettimeofday function.  */ +/*  #define HAVE_GETTIMEOFDAY 1 */ + +/* Define if you have the inet_addr function.  */ +#define HAVE_INET_ADDR 1 + +/* Define if you have the inet_ntoa function.  */ +#define HAVE_INET_NTOA 1 + +/* Define if you have the perror function.  */ +#define HAVE_PERROR 1 + +/* Define if you have the select function.  */ +#define HAVE_SELECT 1 + +/* Define if you have the socket function.  */ +#define HAVE_SOCKET 1 + +/* Define if you have the strcasecmp function.  */ +/*#define HAVE_STRCASECMP 1*/ + +/* Define if you have the stricmp function.  */ +//#define HAVE_STRICMP 1 + +/* Define if you have the strdup function.  */ +//#define HAVE_STRDUP 1 + +/* Define if you have the strftime function.  */ +//#define HAVE_STRFTIME 1 + +/* Define if you have the strstr function.  */ +#define HAVE_STRSTR 1 + +/* Define if you have the strtoll function.  */ +#ifdef MINGW32 +#define HAVE_STRTOLL 1 +#endif + +/* Define if you have the tcgetattr function.  */ +/*#define HAVE_TCGETATTR 1*/ + +/* Define if you have the tcsetattr function.  */ +/*#define HAVE_TCSETATTR 1*/ + +/* Define if you have the uname function.  */ +/*#define HAVE_UNAME 1*/ + +/* Define if you have utime() */ +#define HAVE_UTIME 1 + +/* Define if you have the <alloca.h> header file.  */ +/*#define HAVE_ALLOCA_H 1*/ + +/* Define if you have the malloc.h file.  */ +#define HAVE_MALLOC_H 1 + +/* Define if you have the <arpa/inet.h> header file.  */ +/* #define HAVE_ARPA_INET_H 1 */ + +/* Define if you have the <assert.h> header file.  */ +//#define HAVE_ASSERT_H 1 + +/* Define if you have the <crypto.h> header file.  */ +/* #undef HAVE_CRYPTO_H */ + +/* Define if you have the <dlfcn.h> header file.  */ +/*#define HAVE_DLFCN_H 1*/ + +/* Define if you have the <err.h> header file.  */ +/* #undef HAVE_ERR_H */ + +/* Define if you have the <fcntl.h> header file.  */ +#define HAVE_FCNTL_H 1 + +/* Define if you have the <getopt.h> header file.  */ +/* #undef HAVE_GETOPT_H */ + +/* Define if you have the <netdb.h> header file.  */ +/* #define HAVE_NETDB_H 1 */ + +/* Define if you have the <netinet/in.h> header file.  */ +/*#define HAVE_NETINET_IN_H 1*/ + +/* Define if you have the <sgtty.h> header file.  */ +/*#define HAVE_SGTTY_H 1*/ + +/* Define if you have the <ssl.h> header file.  */ +/* #undef HAVE_SSL_H */ + +/* Define if you have the <sys/param.h> header file.  */ +/*#define HAVE_SYS_PARAM_H 1*/ + +/* Define if you have the <sys/select.h> header file.  */ +/*  #define HAVE_SYS_SELECT_H 1 */ + +/* Define if you have the <sys/socket.h> header file.  */ +/*#define HAVE_SYS_SOCKET_H 1*/ + +/* Define if you have the <sys/sockio.h> header file.  */ +/* #define HAVE_SYS_SOCKIO_H 1 */ + +/* Define if you have the <sys/stat.h> header file.  */ +//#define HAVE_SYS_STAT_H 1 + +/* Define if you have the <sys/utime.h> header file */ +#define HAVE_SYS_UTIME_H 1 + +/* Define if you have the <sys/types.h> header file.  */ +//#define HAVE_SYS_TYPES_H 1 + +/* Define if you have the <termio.h> header file.  */ +/* #define HAVE_TERMIO_H 1 */ + +/* Define if you have the <termios.h> header file.  */ +/* #define HAVE_TERMIOS_H 1 */ + +/* Name of package */ +#define PACKAGE "curl" + +/* Define if you have the <io.h> header file.  */ +#define HAVE_IO_H 1 + +/* Define if you have the <time.h> header file.  */ +#define HAVE_TIME_H 1 + +/* Define if you have the <winsock.h> header file.  */ +#define HAVE_WINSOCK_H 1 + +/* Define if you have the <winsock2.h> header file.  */ +//#define HAVE_WINSOCK2_H 1 + +/* Define if you have the <ws2tcpip.h> header file.  */ +//#define HAVE_WS2TCPIP_H 1 + +/* Define if you have the <stdlib.h> header file.  */ +#define HAVE_STDLIB_H 1 + +/* Define if you have the closesocket function.  */ +#define HAVE_CLOSESOCKET 1 + +/* Define if you have the setvbuf function.  */ +#define HAVE_SETVBUF 1 + +/* Define if you have the RAND_screen function when using SSL  */ +#define HAVE_RAND_SCREEN 1 + +/* Define if you have the `RAND_status' function. */ +#define HAVE_RAND_STATUS 1 + +/* Define this to if in_addr_t is not an available typedefed type */ +#define in_addr_t unsigned long + +/* use ioctlsocket() for non-blocking sockets */ +#define HAVE_IOCTLSOCKET + +/************************************************* + * This section is for compiler specific defines.* + *************************************************/ +/* Borland and MS don't have this */ +#if defined(MINGW32) || defined(__WATCOMC__) || defined(__LCC__) + +/* Define if you have the <unistd.h> header file.  */ +#define HAVE_UNISTD_H 1 + +#else + +#endif + +/* WinCE */ + +#define CURL_DISABLE_FILE + +#define CURL_DISABLE_TELNET +#define CURL_DISABLE_LDAP +#define WITHOUT_MM_LIB + +#include <winsock.h> +#include <process.h> + +extern int errno; + +#define ENOSPC 1 +#define ENOMEM 2 + +extern int stat(const char *path,struct stat *buffer ); + +#endif diff --git a/lib/connect.c b/lib/connect.c index 5d464acbd..c61301ad2 100644 --- a/lib/connect.c +++ b/lib/connect.c @@ -156,6 +156,7 @@ int Curl_nonblock(curl_socket_t sockfd,    /* operate on this */    /* Windows? */    unsigned long flags;    flags = nonblock; +    return ioctlsocket(sockfd, FIONBIO, &flags);  #define SETBLOCK 3  #endif @@ -406,13 +407,25 @@ static bool verifyconnect(curl_socket_t sockfd, int *error)     *     *    Someone got to verify this on Win-NT 4.0, 2000."     */ + +#ifdef _WIN32_WCE +  Sleep(0); +#else    SleepEx(0, FALSE);  #endif +#endif +    if( -1 == getsockopt(sockfd, SOL_SOCKET, SO_ERROR,                         (void *)&err, &errSize))      err = Curl_ourerrno(); +#ifdef _WIN32_WCE +  /* Always returns this error, bug in CE? */ +  if(WSAENOPROTOOPT==err) +    err=0; +#endif +    if ((0 == err) || (EISCONN == err))      /* we are connected, awesome! */      rc = TRUE; diff --git a/lib/dict.c b/lib/dict.c index 1b3f00452..f8e402bcf 100644 --- a/lib/dict.c +++ b/lib/dict.c @@ -29,8 +29,12 @@  #include <stdarg.h>  #include <stdlib.h>  #include <ctype.h> +#ifdef HAVE_SYS_TYPES_H  #include <sys/types.h> +#endif +#ifdef HAVE_SYS_STAT_H  #include <sys/stat.h> +#endif  #include <errno.h> diff --git a/lib/easy.c b/lib/easy.c index 228d2aef0..7a8278dd8 100644 --- a/lib/easy.c +++ b/lib/easy.c @@ -29,8 +29,12 @@  #include <stdarg.h>  #include <stdlib.h>  #include <ctype.h> +#ifdef HAVE_SYS_TYPES_H  #include <sys/types.h> +#endif +#ifdef HAVE_SYS_STAT_H  #include <sys/stat.h> +#endif  #include <errno.h> @@ -168,6 +172,11 @@ static long          init_flags  = 0;   * If a memory-using function (like curl_getenv) is used before   * curl_global_init() is called, we need to have these pointers set already.   */ + +#ifdef _WIN32_WCE +#define strdup _strdup +#endif +  curl_malloc_callback Curl_cmalloc = (curl_malloc_callback)malloc;  curl_free_callback Curl_cfree = (curl_free_callback)free;  curl_realloc_callback Curl_crealloc = (curl_realloc_callback)realloc; diff --git a/lib/file.c b/lib/file.c index 6d6287d74..7831d2ef2 100644 --- a/lib/file.c +++ b/lib/file.c @@ -30,8 +30,12 @@  #include <stdarg.h>  #include <stdlib.h>  #include <ctype.h> +#ifdef HAVE_SYS_TYPES_H  #include <sys/types.h> +#endif +#ifdef HAVE_SYS_STAT_H  #include <sys/stat.h> +#endif  #include <errno.h> @@ -66,9 +70,6 @@  #include <sys/param.h>  #endif -#ifdef HAVE_SYS_STAT_H -#include <sys/stat.h> -#endif  #ifdef HAVE_FCNTL_H  #include <fcntl.h>  #endif diff --git a/lib/formdata.c b/lib/formdata.c index 442c306f5..fa26ebbe5 100644 --- a/lib/formdata.c +++ b/lib/formdata.c @@ -112,7 +112,9 @@ Content-Disposition: form-data; name="FILECONTENT"  #include <string.h>  #include <stdarg.h>  #include <time.h> +#ifdef HAVE_SYS_STAT_H  #include <sys/stat.h> +#endif  #if defined(HAVE_LIBGEN_H) && defined(HAVE_BASENAME)  #include <libgen.h>  #endif @@ -476,7 +476,7 @@ CURLcode Curl_ftp_connect(struct connectdata *conn)    char *buf = data->state.buffer; /* this is our buffer */    struct FTP *ftp;    CURLcode result; -  int ftpcode, try; +  int ftpcode, trynum;    ftp = (struct FTP *)malloc(sizeof(struct FTP));    if(!ftp) @@ -564,9 +564,9 @@ CURLcode Curl_ftp_connect(struct connectdata *conn)        return CURLE_FAILED_INIT; /* we don't know what to do */      } -    for (try = start; ftpauth[count]; try=trynext, count++) { +    for (trynum = start; ftpauth[count]; trynum=trynext, count++) { -      FTPSENDF(conn, "AUTH %s", ftpauth[try]); +      FTPSENDF(conn, "AUTH %s", ftpauth[trynum]);        result = Curl_GetFTPResponse(&nread, conn, &ftpcode); @@ -842,8 +842,15 @@ CURLcode Curl_ftp_done(struct connectdata *conn, CURLcode status)  #ifdef HAVE_KRB4    Curl_sec_fflush_fd(conn, conn->sock[SECONDARYSOCKET]);  #endif +    /* shut down the socket to inform the server we're done */ + +#ifdef _WIN32_WCE +  shutdown(conn->sock[SECONDARYSOCKET],2);  /* SD_BOTH */ +#endif +    sclose(conn->sock[SECONDARYSOCKET]); +    conn->sock[SECONDARYSOCKET] = CURL_SOCKET_BAD;    if(!ftp->no_transfer && !status) { diff --git a/lib/getenv.c b/lib/getenv.c index 8f8311bf0..fbf37a992 100644 --- a/lib/getenv.c +++ b/lib/getenv.c @@ -43,6 +43,9 @@  static  char *GetEnv(const char *variable)  { +#ifdef _WIN32_WCE +  return NULL; +#else  #ifdef WIN32    /* This shit requires windows.h (HUGE) to be included */    char env[MAX_PATH]; /* MAX_PATH is from windef.h */ @@ -62,6 +65,7 @@ char *GetEnv(const char *variable)  #endif  #endif    return (env && env[0])?strdup(env):NULL; +#endif  }  char *curl_getenv(const char *v) diff --git a/lib/hostthre.c b/lib/hostthre.c index fad335b45..2d70f2ef4 100644 --- a/lib/hostthre.c +++ b/lib/hostthre.c @@ -195,7 +195,9 @@ static unsigned __stdcall gethostbyname_thread (void *arg)     * hopefully make printouts synchronised. I'm not sure it works     * with a static runtime lib (MSVC's libc.lib).     */ +#ifndef _WIN32_WCE    *stderr = *td->stderr_file; +#endif    WSASetLastError (conn->async.status = NO_DATA); /* pending status */    he = gethostbyname (conn->async.hostname); @@ -375,8 +377,15 @@ static bool init_resolve_thread (struct connectdata *conn,    }    td->stderr_file = stderr; + +#ifdef _WIN32_WCE +  td->thread_hnd=(HANDLE) CreateThread(NULL,0,(LPTHREAD_START_ROUTINE) THREAD_FUNC,conn,0,&td->thread_id); +#else +    td->thread_hnd = (HANDLE) _beginthreadex(NULL, 0, THREAD_FUNC,                                             conn, 0, &td->thread_id); +#endif +  #ifdef CURLRES_IPV6    curlassert(hints);    td->hints = *hints; diff --git a/lib/http.c b/lib/http.c index ee5b81ff6..1de316b2f 100644 --- a/lib/http.c +++ b/lib/http.c @@ -30,8 +30,12 @@  #include <stdarg.h>  #include <stdlib.h>  #include <ctype.h> +#ifdef HAVE_SYS_TYPES_H  #include <sys/types.h> +#endif +#ifdef HAVE_SYS_STAT_H  #include <sys/stat.h> +#endif  #include <errno.h> diff --git a/lib/if2ip.c b/lib/if2ip.c index 96ecc5348..8f0a07782 100644 --- a/lib/if2ip.c +++ b/lib/if2ip.c @@ -127,9 +127,9 @@ char *Curl_if2ip(const char *interface, char *buf, int buf_size)  /* -- end of if2ip() -- */  #else -char *Curl_if2ip(const char *interface, char *buf, int buf_size) +char *Curl_if2ip(const char *interf, char *buf, int buf_size)  { -    (void) interface; +    (void) interf;      (void) buf;      (void) buf_size;      return NULL; diff --git a/lib/ldap.c b/lib/ldap.c index e140f4ffa..c6f7e5490 100644 --- a/lib/ldap.c +++ b/lib/ldap.c @@ -30,8 +30,12 @@  #include <stdarg.h>  #include <stdlib.h>  #include <ctype.h> +#ifdef HAVE_SYS_TYPES_H  #include <sys/types.h> +#endif +#ifdef HAVE_SYS_STAT_H  #include <sys/stat.h> +#endif  #include <errno.h>  #if defined(WIN32) diff --git a/lib/mprintf.c b/lib/mprintf.c index 9135a1308..629a9e07c 100644 --- a/lib/mprintf.c +++ b/lib/mprintf.c @@ -40,6 +40,12 @@  #include <curl/mprintf.h> +#ifdef _WIN32_WCE +#define CURL_CDECL __cdecl +#else +#define CURL_CDECL +#endif +  #ifndef SIZEOF_LONG_DOUBLE  #define SIZEOF_LONG_DOUBLE 0  #endif @@ -583,7 +589,12 @@ static int dprintf_formatf(    void *data, /* untouched by format(), just sent to the stream() function in                   the second argument */    /* function pointer called for each output character */ + +#if _WIN32_WCE +  int (__cdecl *stream) (int, FILE *), +#else    int (*stream)(int, FILE *), +#endif    const char *format,    /* %-formatted string */    va_list ap_save) /* list of parameters */  { @@ -979,7 +990,7 @@ static int dprintf_formatf(  }  /* fputc() look-alike */ -static int addbyter(int output, FILE *data) +static int CURL_CDECL addbyter(int output, FILE *data)  {    struct nsprintf *infop=(struct nsprintf *)data;    unsigned char outc = (unsigned char)output; @@ -1027,7 +1038,7 @@ int curl_msnprintf(char *buffer, size_t maxlength, const char *format, ...)  }  /* fputc() look-alike */ -static int alloc_addbyter(int output, FILE *data) +static int CURL_CDECL alloc_addbyter(int output, FILE *data)  {    struct asprintf *infop=(struct asprintf *)data;    unsigned char outc = (unsigned char)output; @@ -1113,7 +1124,7 @@ char *curl_mvaprintf(const char *format, va_list ap_save)      return strdup("");  } -static int storebuffer(int output, FILE *data) +static int CURL_CDECL storebuffer(int output, FILE *data)  {    char **buffer = (char **)data;    unsigned char outc = (unsigned char)output; @@ -1142,6 +1153,7 @@ int curl_mprintf(const char *format, ...)    int retcode;    va_list ap_save; /* argument pointer */    va_start(ap_save, format); +    retcode = dprintf_formatf(stdout, fputc, format, ap_save);    va_end(ap_save);    return retcode; diff --git a/lib/setup.h b/lib/setup.h index c6ee81181..f121b7320 100644 --- a/lib/setup.h +++ b/lib/setup.h @@ -40,11 +40,15 @@  #ifdef HAVE_CONFIG_H  #include "config.h" /* the configure script results */  #else +#ifdef _WIN32_WCE +#include "config-win32ce.h" +#else  #ifdef WIN32  /* hand-modified win32 config.h! */  #include "config-win32.h"  #endif  #endif +#endif  #ifdef macintosh  /* hand-modified MacOS config.h! */ @@ -173,7 +177,9 @@ defined(HAVE_LIBSSL) && defined(HAVE_LIBCRYPTO)  #define _WIN32_WINNT 0x0501  #endif +#if HAVE_WINSOCK2_H  #include <winsock2.h>        /* required by telnet.c */ +#endif  #if defined(ENABLE_IPV6) || defined(USE_SSLEAY)  #include <ws2tcpip.h> diff --git a/lib/strerror.c b/lib/strerror.c index dd5acc81b..fa84a1731 100644 --- a/lib/strerror.c +++ b/lib/strerror.c @@ -515,15 +515,29 @@ const char *Curl_strerror(struct connectdata *conn, int err)    *buf = '\0';  #if defined(WIN32) && !defined(__CYGWIN__) + +#if _WIN32_WCE +  buf[0]=0; +  { +    wchar_t wbuf[256]; + +    FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL, err, +                  LANG_NEUTRAL, wbuf, sizeof(wbuf)/sizeof(wchar_t), NULL); +    wcstombs(buf,wbuf,max); +  } + +#else +    /* 'sys_nerr' is the maximum errno number, it is not widely portable */    if (err >= 0 && err < sys_nerr)      strncpy(buf, strerror(err), max);    else { -    if (!get_winsock_error (err, buf, max) && -        !FormatMessage (FORMAT_MESSAGE_FROM_SYSTEM, NULL, err, -                        LANG_NEUTRAL, buf, max, NULL)) +    if (!get_winsock_error(err, buf, max) && +        !FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL, err, +                       LANG_NEUTRAL, buf, max, NULL))        snprintf(buf, max, "Unknown error %d (%#x)", err, err);    } +#endif  #else /* not native Windows coming up */    /* These should be atomic and hopefully thread-safe */ diff --git a/lib/telnet.c b/lib/telnet.c index b0f74bb8d..c2813fa2a 100644 --- a/lib/telnet.c +++ b/lib/telnet.c @@ -30,9 +30,12 @@  #include <stdarg.h>  #include <stdlib.h>  #include <ctype.h> +#ifdef HAVE_SYS_TYPES_H  #include <sys/types.h> +#endif +#ifdef HAVE_SYS_STAT_H  #include <sys/stat.h> - +#endif  #include <errno.h>  #if defined(WIN32) diff --git a/lib/transfer.c b/lib/transfer.c index 904dbd15b..389ed6e16 100644 --- a/lib/transfer.c +++ b/lib/transfer.c @@ -32,7 +32,9 @@  #ifdef HAVE_SYS_TYPES_H  #include <sys/types.h>  #endif +#ifdef HAVE_SYS_STAT_H  #include <sys/stat.h> +#endif  #include <errno.h> @@ -30,9 +30,12 @@  #include <stdarg.h>  #include <stdlib.h>  #include <ctype.h> +#ifdef HAVE_SYS_TYPES_H  #include <sys/types.h> +#endif +#ifdef HAVE_SYS_STAT_H  #include <sys/stat.h> - +#endif  #include <errno.h>  #if defined(WIN32) && !defined(__GNUC__) || defined(__MINGW32__) | 
