From: Daniele Varrazzo Date: Fri, 11 Mar 2022 20:07:03 +0000 (+0000) Subject: fix(c): fix portable endian aliases on different BSD flavours X-Git-Tag: 3.1~172 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=97d71ff8ac316c8f47674f893a26d4e3d5178c84;p=thirdparty%2Fpsycopg.git fix(c): fix portable endian aliases on different BSD flavours See the commit at: https://github.com/linux-sunxi/sunxi-tools/commit/384ff6473455da1a24b5037b358591f44f3bbf57 Close #241 --- diff --git a/docs/news.rst b/docs/news.rst index f5c4a9d53..6a7ac3b28 100644 --- a/docs/news.rst +++ b/docs/news.rst @@ -28,6 +28,7 @@ Psycopg 3.0.10 (currently only for sync connections, :ticket:`#231`). - Fix `Cursor.description` after a COPY ... TO STDOUT operation (:ticket:`#235`). +- Fix building on FreeBSD and likely other BSD flavours (:ticket:`#241`). Psycopg 3.0.9 diff --git a/psycopg_c/psycopg_c/_psycopg/endian.pxd b/psycopg_c/psycopg_c/_psycopg/endian.pxd index 1f6743da7..44e730561 100644 --- a/psycopg_c/psycopg_c/_psycopg/endian.pxd +++ b/psycopg_c/psycopg_c/_psycopg/endian.pxd @@ -8,6 +8,8 @@ from libc.stdint cimport uint16_t, uint32_t, uint64_t cdef extern from * nogil: # from https://gist.github.com/panzi/6856583 + # Improved in: + # https://github.com/linux-sunxi/sunxi-tools/blob/master/include/portable_endian.h """ // "License": Public Domain // I, Mathias Panzenböck, place this file hereby into the public domain. Use it at your own risk for whatever you like. @@ -52,22 +54,29 @@ cdef extern from * nogil: # define __LITTLE_ENDIAN LITTLE_ENDIAN # define __PDP_ENDIAN PDP_ENDIAN -#elif defined(__OpenBSD__) - -# include - -#elif defined(__NetBSD__) || defined(__FreeBSD__) || defined(__DragonFly__) +#elif defined(__OpenBSD__) || defined(__NetBSD__) || defined(__FreeBSD__) || defined(__DragonFly__) # include +/* For functions still missing, try to substitute 'historic' OpenBSD names */ +#ifndef be16toh # define be16toh(x) betoh16(x) +#endif +#ifndef le16toh # define le16toh(x) letoh16(x) - +#endif +#ifndef be32toh # define be32toh(x) betoh32(x) +#endif +#ifndef le32toh # define le32toh(x) letoh32(x) - +#endif +#ifndef be64toh # define be64toh(x) betoh64(x) +#endif +#ifndef le64toh # define le64toh(x) letoh64(x) +#endif #elif defined(__WINDOWS__)