Преглед изворни кода

Detect if afunix.h exists (#2145)

Signed-off-by: Piotr Stankiewicz <piotr.stankiewicz@docker.com>
Piotr пре 8 месеци
родитељ
комит
4a7aae5469
1 измењених фајлова са 7 додато и 0 уклоњено
  1. 7 0
      httplib.h

+ 7 - 0
httplib.h

@@ -192,8 +192,13 @@ using ssize_t = long;
 #include <winsock2.h>
 #include <winsock2.h>
 #include <ws2tcpip.h>
 #include <ws2tcpip.h>
 
 
+#if defined(__has_include)
+#if __has_include(<afunix.h>)
 // afunix.h uses types declared in winsock2.h, so has to be included after it.
 // afunix.h uses types declared in winsock2.h, so has to be included after it.
 #include <afunix.h>
 #include <afunix.h>
+#define CPPHTTPLIB_HAVE_AFUNIX_H 1
+#endif
+#endif
 
 
 #ifndef WSA_FLAG_NO_HANDLE_INHERIT
 #ifndef WSA_FLAG_NO_HANDLE_INHERIT
 #define WSA_FLAG_NO_HANDLE_INHERIT 0x80
 #define WSA_FLAG_NO_HANDLE_INHERIT 0x80
@@ -3551,6 +3556,7 @@ socket_t create_socket(const std::string &host, const std::string &ip, int port,
     hints.ai_flags = socket_flags;
     hints.ai_flags = socket_flags;
   }
   }
 
 
+#if !defined(_WIN32) || defined(CPPHTTPLIB_HAVE_AFUNIX_H)
   if (hints.ai_family == AF_UNIX) {
   if (hints.ai_family == AF_UNIX) {
     const auto addrlen = host.length();
     const auto addrlen = host.length();
     if (addrlen > sizeof(sockaddr_un::sun_path)) { return INVALID_SOCKET; }
     if (addrlen > sizeof(sockaddr_un::sun_path)) { return INVALID_SOCKET; }
@@ -3595,6 +3601,7 @@ socket_t create_socket(const std::string &host, const std::string &ip, int port,
     }
     }
     return sock;
     return sock;
   }
   }
+#endif
 
 
   auto service = std::to_string(port);
   auto service = std::to_string(port);