File 0007-BUILD-fix-build-on-Solaris-11.patch of Package haproxy

From a71fda4bf6c3e57997a3873a8bdb2b295b2299a2 Mon Sep 17 00:00:00 2001
From: Willy Tarreau <w@1wt.eu>
Date: Fri, 20 May 2016 06:29:59 +0200
Subject: [PATCH 07/14] BUILD: fix build on Solaris 11

htonll()/ntohll() already exist on Solaris 11 with a different declaration,
causing a build error as reported by Jonathan Fisher. They used to exist on
OSX with a #define which allowed us to detect them. It was a bad idea to give
these functions a name subject to conflicts like this. Simply rename them
my_htonll()/my_ntohll() to definitely get rid of the conflict.

This patch must be backported to 1.6.

(cherry picked from commit 5f6e9054b920b9952baa9860c6ead1039c66e940)
---
 include/common/standard.h | 10 +++-------
 src/sample.c              |  2 +-
 2 files changed, 4 insertions(+), 8 deletions(-)

diff --git a/include/common/standard.h b/include/common/standard.h
index 2cc9f45..88776df 100644
--- a/include/common/standard.h
+++ b/include/common/standard.h
@@ -1009,8 +1009,7 @@ static inline unsigned char utf8_return_length(unsigned char code)
  * the whole code is optimized out. In little endian, with a decent compiler,
  * a few bswap and 2 shifts are left, which is the minimum acceptable.
  */
-#ifndef htonll
-static inline unsigned long long htonll(unsigned long long a)
+static inline unsigned long long my_htonll(unsigned long long a)
 {
 	union {
 		struct {
@@ -1021,15 +1020,12 @@ static inline unsigned long long htonll(unsigned long long a)
 	} w = { .by64 = a };
 	return ((unsigned long long)htonl(w.by32.w1) << 32) | htonl(w.by32.w2);
 }
-#endif
 
 /* Turns 64-bit value <a> from network byte order to host byte order. */
-#ifndef ntohll
-static inline unsigned long long ntohll(unsigned long long a)
+static inline unsigned long long my_ntohll(unsigned long long a)
 {
-	return htonll(a);
+	return my_htonll(a);
 }
-#endif
 
 /* returns a 64-bit a timestamp with the finest resolution available. The
  * unit is intentionally not specified. It's mostly used to compare dates.
diff --git a/src/sample.c b/src/sample.c
index ecea85e..527ff62 100644
--- a/src/sample.c
+++ b/src/sample.c
@@ -765,7 +765,7 @@ static int c_int2bin(struct sample *smp)
 {
 	struct chunk *chk = get_trash_chunk();
 
-	*(unsigned long long int *)chk->str = htonll(smp->data.u.sint);
+	*(unsigned long long int *)chk->str = my_htonll(smp->data.u.sint);
 	chk->len = 8;
 
 	smp->data.u.str = *chk;
-- 
2.6.6

openSUSE Build Service is sponsored by