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>
This commit is contained in:
parent
a66a483be2
commit
fd6765b4a3
@ -24,7 +24,7 @@ xdr_serialize_generic (struct iovec outmsg, void *res, xdrproc_t proc)
|
||||
xdrmem_create (&xdr, outmsg.iov_base, (unsigned int)outmsg.iov_len,
|
||||
XDR_ENCODE);
|
||||
|
||||
if (!proc (&xdr, res)) {
|
||||
if (!PROC(&xdr, res)) {
|
||||
ret = -1;
|
||||
goto ret;
|
||||
}
|
||||
@ -48,7 +48,7 @@ xdr_to_generic (struct iovec inmsg, void *args, xdrproc_t proc)
|
||||
xdrmem_create (&xdr, inmsg.iov_base, (unsigned int)inmsg.iov_len,
|
||||
XDR_DECODE);
|
||||
|
||||
if (!proc (&xdr, args)) {
|
||||
if (!PROC (&xdr, args)) {
|
||||
ret = -1;
|
||||
goto ret;
|
||||
}
|
||||
@ -72,7 +72,7 @@ xdr_to_generic_payload (struct iovec inmsg, void *args, xdrproc_t proc,
|
||||
xdrmem_create (&xdr, inmsg.iov_base, (unsigned int)inmsg.iov_len,
|
||||
XDR_DECODE);
|
||||
|
||||
if (!proc (&xdr, args)) {
|
||||
if (!PROC (&xdr, args)) {
|
||||
ret = -1;
|
||||
goto ret;
|
||||
}
|
||||
|
@ -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);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user