summaryrefslogtreecommitdiffstats
path: root/rpc/xdr/src/xdr-generic.h
diff options
context:
space:
mode:
authorHarshavardhana <harsha@harshavardhana.net>2014-08-11 17:36:12 -0700
committerHarshavardhana <harsha@harshavardhana.net>2014-08-12 09:02:10 -0700
commitfd6765b4a3f8162bf36054cf3de6e88a6bdfadd3 (patch)
tree3a864d2ad5f49d9a6de872cb9bb8247c48617db3 /rpc/xdr/src/xdr-generic.h
parenta66a483be2febd36e6cb338c9fe73d332257d89e (diff)
porting: OSX/Darwin 10.9 porting issues
xdrproc_t() arguments are variadic and non-variadic On OSX > 10.9 ------------- typedef bool_t (*xdrproc_t)(XDR *, void *, unsigned int); On OSX < 10.9 ------------ typedef bool_t (*xdrproc_t)(XDR *, ...); FreeBSD all versions ------------ typedef bool_t (*xdrproc_t)(XDR *, ...); NetBSD 6.1.4 ----------- typedef bool_t (*xdrproc_t)(XDR *, const void *); Linux all versions ----------- typedef bool_t (*xdrproc_t)(XDR *, void *,...); This weird and odd implementations across various platforms should be handled properly. Change-Id: Iad8b7da2e5b82526bf3708cff31ab10ce09f59c9 BUG: 1128820 Signed-off-by: Harshavardhana <harsha@harshavardhana.net> Reviewed-on: http://review.gluster.org/8458 Reviewed-by: Emmanuel Dreyfus <manu@netbsd.org> Tested-by: Gluster Build System <jenkins@build.gluster.com>
Diffstat (limited to 'rpc/xdr/src/xdr-generic.h')
-rw-r--r--rpc/xdr/src/xdr-generic.h28
1 files changed, 28 insertions, 0 deletions
diff --git a/rpc/xdr/src/xdr-generic.h b/rpc/xdr/src/xdr-generic.h
index 2547d7e545d..2f12290ef02 100644
--- a/rpc/xdr/src/xdr-generic.h
+++ b/rpc/xdr/src/xdr-generic.h
@@ -24,6 +24,34 @@
#define XDR_BYTES_PER_UNIT 4
+/*
+ On OSX > 10.9
+ -------------
+ typedef bool_t (*xdrproc_t)(XDR *, void *, unsigned int);
+
+ On OSX < 10.9
+ ------------
+ typedef bool_t (*xdrproc_t)(XDR *, ...);
+
+ FreeBSD all versions
+ ------------
+ typedef bool_t (*xdrproc_t)(XDR *, ...);
+
+ NetBSD 6.1.4
+ -----------
+ typedef bool_t (*xdrproc_t)(XDR *, const void *);
+
+ Linux all versions
+ -----------
+ typedef bool_t (*xdrproc_t)(XDR *, void *,...);
+*/
+
+#if defined(__NetBSD__)
+#define PROC(xdr, res) proc(xdr, res)
+#else
+#define PROC(xdr, res) proc(xdr, res, 0)
+#endif
+
ssize_t
xdr_serialize_generic (struct iovec outmsg, void *res, xdrproc_t proc);