#ifndef HEADER_CONFIG_DOS_H
#define HEADER_CONFIG_DOS_H


/* ================================================================ */
/*       ares/config-dos.h - Hand crafted config file for DOS       */
/* ================================================================ */

#define PACKAGE  "c-ares"

#define HAVE_ERRNO_H           1
#define HAVE_GETENV            1
#define HAVE_GETTIMEOFDAY      1
#define HAVE_IOCTLSOCKET       1
#define HAVE_IOCTLSOCKET_FIONBIO   1
#define HAVE_LIMITS_H          1
#define HAVE_NET_IF_H          1
#define HAVE_RECV              1
#define HAVE_RECVFROM          1
#define HAVE_SEND              1
#define HAVE_STRDUP            1
#define HAVE_STRICMP           1
#define HAVE_STRUCT_IN6_ADDR   1
#define HAVE_STRUCT_TIMEVAL    1
#define HAVE_SYS_IOCTL_H       1
#define HAVE_SYS_SOCKET_H      1
#define HAVE_SYS_STAT_H        1
#define HAVE_SYS_TYPES_H       1
#define HAVE_TIME_H            1
#define HAVE_UNISTD_H          1

#define NEED_MALLOC_H          1

#define RETSIGTYPE             void
#define TIME_WITH_SYS_TIME     1

/* Qualifiers for send(), recv(), recvfrom() and getnameinfo(). */

#define SEND_TYPE_ARG1         int
#define SEND_QUAL_ARG2         const
#define SEND_TYPE_ARG2         void *
#define SEND_TYPE_ARG3         int
#define SEND_TYPE_ARG4         int
#define SEND_TYPE_RETV         int

#define RECV_TYPE_ARG1         int
#define RECV_TYPE_ARG2         void *
#define RECV_TYPE_ARG3         int
#define RECV_TYPE_ARG4         int
#define RECV_TYPE_RETV         int

#define RECVFROM_TYPE_ARG1     int
#define RECVFROM_TYPE_ARG2     void
#define RECVFROM_TYPE_ARG3     int
#define RECVFROM_TYPE_ARG4     int
#define RECVFROM_TYPE_ARG5     struct sockaddr
#define RECVFROM_TYPE_ARG6     int
#define RECVFROM_TYPE_RETV     int
#define RECVFROM_TYPE_ARG2_IS_VOID 1

#define BSD

/* Target HAVE_x section */

#if defined(DJGPP)
  #define HAVE_STRCASECMP           1
  #define HAVE_STRNCASECMP          1
  #define HAVE_SYS_TIME_H           1
  #define HAVE_VARIADIC_MACROS_GCC  1

  /* Because djgpp <= 2.03 doesn't have snprintf() etc. */
  #if (DJGPP_MINOR < 4)
    #define _MPRINTF_REPLACE
  #endif

#elif defined(__WATCOMC__)
  #define HAVE_STRCASECMP 1

#elif defined(__HIGHC__)
  #define HAVE_SYS_TIME_H 1
  #define strerror(e) strerror_s_((e))
#endif

#ifdef WATT32
  #define HAVE_AF_INET6                    1
  #define HAVE_ARPA_INET_H                 1
  #define HAVE_ARPA_NAMESER_H              1
  #define HAVE_CLOSE_S                     1
  #define HAVE_GETHOSTNAME                 1
  #define HAVE_NETDB_H                     1
  #define HAVE_NETINET_IN_H                1
  #define HAVE_NETINET_TCP_H               1
  #define HAVE_PF_INET6                    1
  #define HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID  1
  #define HAVE_STRUCT_ADDRINFO             1
  #define HAVE_STRUCT_IN6_ADDR             1
  #define HAVE_STRUCT_SOCKADDR_IN6         1
  #define HAVE_SYS_SOCKET_H                1
  #define HAVE_SYS_UIO_H                   1
  #define NS_INADDRSZ                      4
  #define HAVE_STRUCT_SOCKADDR_IN6         1
#endif

#undef word
#undef byte

#endif /* HEADER_CONFIG_DOS_H */

