diff options
author | Harshavardhana <harsha@harshavardhana.net> | 2014-08-11 17:36:12 -0700 |
---|---|---|
committer | Harshavardhana <harsha@harshavardhana.net> | 2014-08-12 09:02:10 -0700 |
commit | fd6765b4a3f8162bf36054cf3de6e88a6bdfadd3 (patch) | |
tree | 3a864d2ad5f49d9a6de872cb9bb8247c48617db3 /rpc/xdr/src/xdr-generic.h | |
parent | a66a483be2febd36e6cb338c9fe73d332257d89e (diff) | |
download | glusterfs-fd6765b4a3f8162bf36054cf3de6e88a6bdfadd3.tar.gz glusterfs-fd6765b4a3f8162bf36054cf3de6e88a6bdfadd3.tar.xz glusterfs-fd6765b4a3f8162bf36054cf3de6e88a6bdfadd3.zip |
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.h | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/rpc/xdr/src/xdr-generic.h b/rpc/xdr/src/xdr-generic.h index 2547d7e545..2f12290ef0 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); |