From: Daniele Varrazzo Date: Mon, 28 Jun 2021 13:56:08 +0000 (+0100) Subject: Add compatibility with Mac OS X-Git-Tag: 3.0.dev0~6^2~4 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=33b9868b8e25d83930c7244e9fd3b05796993b50;p=thirdparty%2Fpsycopg.git Add compatibility with Mac OS --- diff --git a/psycopg/psycopg/pq/_pq_ctypes.py b/psycopg/psycopg/pq/_pq_ctypes.py index 2cbd2fce5..606423745 100644 --- a/psycopg/psycopg/pq/_pq_ctypes.py +++ b/psycopg/psycopg/pq/_pq_ctypes.py @@ -15,6 +15,8 @@ from psycopg.errors import NotSupportedError if sys.platform == "win32": libname = ctypes.util.find_library("libpq.dll") +elif sys.platform == "darwin": + libname = ctypes.util.find_library("libpq.dylib") else: libname = ctypes.util.find_library("pq") if not libname: diff --git a/psycopg_c/psycopg_c/_psycopg/endian.pxd b/psycopg_c/psycopg_c/_psycopg/endian.pxd index cf7592dc2..97aded859 100644 --- a/psycopg_c/psycopg_c/_psycopg/endian.pxd +++ b/psycopg_c/psycopg_c/_psycopg/endian.pxd @@ -3,20 +3,64 @@ from libc.stdint cimport uint16_t, uint32_t, uint64_t +IF UNAME_SYSNAME == "Darwin": + cdef extern from "" nogil: + cdef uint16_t OSSwapHostToBigInt16(uint16_t x) + cdef uint16_t OSSwapHostToLittleInt16(uint16_t x) + cdef uint16_t OSSwapBigToHostInt16(uint16_t x) + cdef uint16_t OSSwapLittleToHostInt16(uint16_t x) -cdef extern from "" nogil: + cdef uint32_t OSSwapHostToBigInt32(uint32_t x) + cdef uint32_t OSSwapHostToLittleInt32(uint32_t x) + cdef uint32_t OSSwapBigToHostInt32(uint32_t x) + cdef uint32_t OSSwapLittleToHostInt32(uint32_t x) - cdef uint16_t htobe16(uint16_t host_16bits) - cdef uint16_t htole16(uint16_t host_16bits) - cdef uint16_t be16toh(uint16_t big_endian_16bits) - cdef uint16_t le16toh(uint16_t little_endian_16bits) + cdef uint64_t OSSwapHostToBigInt64(uint64_t x) + cdef uint64_t OSSwapHostToLittleInt64(uint64_t x) + cdef uint64_t OSSwapBigToHostInt64(uint64_t x) + cdef uint64_t OSSwapLittleToHostInt64(uint64_t x) - cdef uint32_t htobe32(uint32_t host_32bits) - cdef uint32_t htole32(uint32_t host_32bits) - cdef uint32_t be32toh(uint32_t big_endian_32bits) - cdef uint32_t le32toh(uint32_t little_endian_32bits) + cdef inline uint16_t htobe16(uint16_t host_16bits): + return OSSwapHostToBigInt16(host_16bits) + cdef inline uint16_t htole16(uint16_t host_16bits): + return OSSwapHostToLittleInt16(host_16bits) + cdef inline uint16_t be16toh(uint16_t big_endian_16bits): + return OSSwapBigToHostInt16(big_endian_16bits) + cdef inline uint16_t le16toh(uint16_t little_endian_16bits): + return OSSwapLittleToHostInt16(little_endian_16bits) - cdef uint64_t htobe64(uint64_t host_64bits) - cdef uint64_t htole64(uint64_t host_64bits) - cdef uint64_t be64toh(uint64_t big_endian_64bits) - cdef uint64_t le64toh(uint64_t little_endian_64bits) + cdef inline uint32_t htobe32(uint32_t host_32bits): + return OSSwapHostToBigInt32(host_32bits) + cdef inline uint32_t htole32(uint32_t host_32bits): + return OSSwapHostToLittleInt32(host_32bits) + cdef inline uint32_t be32toh(uint32_t big_endian_32bits): + return OSSwapBigToHostInt32(big_endian_32bits) + cdef inline uint32_t le32toh(uint32_t little_endian_32bits): + return OSSwapLittleToHostInt32(little_endian_32bits) + + cdef inline uint64_t htobe64(uint64_t host_64bits): + return OSSwapHostToBigInt64(host_64bits) + cdef inline uint64_t htole64(uint64_t host_64bits): + return OSSwapHostToLittleInt64(host_64bits) + cdef inline uint64_t be64toh(uint64_t big_endian_64bits): + return OSSwapBigToHostInt64(big_endian_64bits) + cdef inline uint64_t le64toh(uint64_t little_endian_64bits): + return OSSwapLittleToHostInt64(little_endian_64bits) + +ELSE: + cdef extern from "" nogil: + + cdef uint16_t htobe16(uint16_t host_16bits) + cdef uint16_t htole16(uint16_t host_16bits) + cdef uint16_t be16toh(uint16_t big_endian_16bits) + cdef uint16_t le16toh(uint16_t little_endian_16bits) + + cdef uint32_t htobe32(uint32_t host_32bits) + cdef uint32_t htole32(uint32_t host_32bits) + cdef uint32_t be32toh(uint32_t big_endian_32bits) + cdef uint32_t le32toh(uint32_t little_endian_32bits) + + cdef uint64_t htobe64(uint64_t host_64bits) + cdef uint64_t htole64(uint64_t host_64bits) + cdef uint64_t be64toh(uint64_t big_endian_64bits) + cdef uint64_t le64toh(uint64_t little_endian_64bits)