From e4dccfdc6e60f267c7d671163cdb3e12f3de37cb Mon Sep 17 00:00:00 2001 From: "Marc G. Fournier" Date: Sun, 15 Mar 1998 08:09:37 +0000 Subject: [PATCH] From: t-ishii@sra.co.jp 6.3 postmaster is supposed to work with pre 6.3 protocol. This is true for little endian architecture servers. But for big endian machines such as Sparc the backward compatibility function do not work. Attached are patches to fix the problem. --- src/backend/libpq/pqcomprim.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/backend/libpq/pqcomprim.c b/src/backend/libpq/pqcomprim.c index 7631e1c765..17c0a2fba5 100644 --- a/src/backend/libpq/pqcomprim.c +++ b/src/backend/libpq/pqcomprim.c @@ -34,12 +34,20 @@ #else #if BYTE_ORDER == BIG_ENDIAN +/* #define ntoh_s(n) (uint16)(((u_char *)&n)[1] << 8 \ | ((u_char *)&n)[0]) #define ntoh_l(n) (uint32)(((u_char *)&n)[3] << 24 \ | ((u_char *)&n)[2] << 16 \ | ((u_char *)&n)[1] << 8 \ | ((u_char *)&n)[0]) +*/ +#define ntoh_s(n) (uint16)((((uint16)n & 0x00ff) << 8) | \ + (((uint16)n & 0xff00) >> 8)) +#define ntoh_l(n) (uint32)((((uint32)n & 0x000000ff) << 24) | \ + (((uint32)n & 0x0000ff00) << 8) | \ + (((uint32)n & 0x00ff0000) >> 8) | \ + (((uint32)n & 0xff000000) >> 24)) #define hton_s(n) (ntoh_s(n)) #define hton_l(n) (ntoh_l(n))