On Sun, 2 Sep 2012 21:04:40 +0000 (UTC), Pedro F. Giffuni wrote:
Author: pfg
Date: Sun Sep  2 21:04:40 2012
New Revision: 240060
URL: http://svn.freebsd.org/changeset/base/240060

Log:
   Fix RPC headers for C++

   C++ mangling will cause trouble with variables like __rpc_xdr
   in xdr.h so rename this to XDR.
   While here add proper C++ guards to RPC headers.

   PR:          137443
   MFC after:   2 weeks

Modified:
   head/include/rpc/auth.h
   head/include/rpc/auth_unix.h
   head/include/rpc/clnt.h
   head/include/rpc/clnt_soc.h
   head/include/rpc/des_crypt.h
   head/include/rpc/nettype.h
   head/include/rpc/pmap_clnt.h
   head/include/rpc/pmap_rmt.h
   head/include/rpc/rpc_com.h
   head/include/rpc/rpc_msg.h
   head/include/rpc/rpcb_clnt.h
   head/include/rpc/rpcent.h
   head/include/rpc/rpcsec_gss.h
   head/include/rpc/svc.h
   head/include/rpc/svc_soc.h
   head/include/rpc/xdr.h
   head/sys/rpc/rpc_com.h
   head/sys/rpc/xdr.h

Modified: head/include/rpc/auth.h
==============================================================================
--- head/include/rpc/auth.h     Sun Sep  2 18:54:51 2012        (r240059)
+++ head/include/rpc/auth.h     Sun Sep  2 21:04:40 2012        (r240060)
@@ -51,6 +51,10 @@
  #include <sys/cdefs.h>
  #include <sys/socket.h>

+#ifdef __cplusplus
+extern "C" {
+#endif
+
  #define MAX_AUTH_BYTES        400
  #define MAXNETNAMELEN 255     /* maximum length of network user's name */

@@ -366,4 +370,8 @@ __END_DECLS
  #define       RPCSEC_GSS_KRB5I        390004
  #define       RPCSEC_GSS_KRB5P        390005

+#ifdef __cplusplus
+}
+#endif
+
  #endif /* !_RPC_AUTH_H */

Modified: head/include/rpc/auth_unix.h
==============================================================================
--- head/include/rpc/auth_unix.h        Sun Sep  2 18:54:51 2012        
(r240059)
+++ head/include/rpc/auth_unix.h        Sun Sep  2 21:04:40 2012        
(r240060)
@@ -48,6 +48,10 @@
  #define _RPC_AUTH_UNIX_H
  #include <sys/cdefs.h>

+#ifdef __cplusplus
+extern "C" {
+#endif
+
  /* The machine name is part of a credential; it may not exceed 255 bytes */
  #define MAX_MACHINE_NAME 255

@@ -81,4 +85,8 @@ struct short_hand_verf {
        struct opaque_auth new_cred;
  };

+#ifdef __cplusplus
+}
+#endif
+
  #endif /* !_RPC_AUTH_UNIX_H */

Modified: head/include/rpc/clnt.h
==============================================================================
--- head/include/rpc/clnt.h     Sun Sep  2 18:54:51 2012        (r240059)
+++ head/include/rpc/clnt.h     Sun Sep  2 21:04:40 2012        (r240060)
@@ -64,6 +64,10 @@
  #include <netconfig.h>
  #include <sys/un.h>

+#ifdef __cplusplus
+extern "C" {
+#endif
+
  /*
   * Well-known IPV6 RPC broadcast address.
   */
@@ -551,6 +555,10 @@ extern enum clnt_stat rpc_broadcast_exp(
                                        const int, const char *);
  __END_DECLS

+#ifdef __cplusplus
+}
+#endif
+
  /* For backward compatibility */
  #include <rpc/clnt_soc.h>


Modified: head/include/rpc/clnt_soc.h
==============================================================================
--- head/include/rpc/clnt_soc.h Sun Sep  2 18:54:51 2012        (r240059)
+++ head/include/rpc/clnt_soc.h Sun Sep  2 21:04:40 2012        (r240060)
@@ -49,6 +49,10 @@

  #include <sys/cdefs.h>

+#ifdef __cplusplus
+extern "C" {
+#endif
+
  #define UDPMSGSIZE      8800    /* rpc imposed limit on udp msg size */

  /*
@@ -103,4 +107,8 @@ extern CLIENT *clntudp_bufcreate(struct
                                 struct timeval, int *, u_int, u_int);
  __END_DECLS

+#ifdef __cplusplus
+}
+#endif
+
  #endif /* _RPC_CLNT_SOC_H */

Modified: head/include/rpc/des_crypt.h
==============================================================================
--- head/include/rpc/des_crypt.h        Sun Sep  2 18:54:51 2012        
(r240059)
+++ head/include/rpc/des_crypt.h        Sun Sep  2 21:04:40 2012        
(r240060)
@@ -47,6 +47,10 @@
  #include <sys/cdefs.h>
  #include <rpc/rpc.h>

+#ifdef __cplusplus
+extern "C" {
+#endif
+
  #define DES_MAXDATA 8192      /* max bytes encrypted in one call */
  #define DES_DIRMASK (1 << 0)
  #define DES_ENCRYPT (0*DES_DIRMASK)   /* Encrypt */
@@ -103,4 +107,8 @@ __BEGIN_DECLS
  void des_setparity( char *);
  __END_DECLS

+#ifdef __cplusplus
+}
+#endif
+
  #endif  /* _DES_DES_CRYPT_H */

Modified: head/include/rpc/nettype.h
==============================================================================
--- head/include/rpc/nettype.h  Sun Sep  2 18:54:51 2012        (r240059)
+++ head/include/rpc/nettype.h  Sun Sep  2 21:04:40 2012        (r240060)
@@ -44,6 +44,10 @@

  #include <netconfig.h>

+#ifdef __cplusplus
+extern "C" {
+#endif
+
  #define       _RPC_NONE       0
  #define       _RPC_NETPATH    1
  #define       _RPC_VISIBLE    2
@@ -61,4 +65,8 @@ extern struct netconfig *__rpc_getconf(v
  extern struct netconfig *__rpc_getconfip(const char *);
  __END_DECLS

+#ifdef __cplusplus
+}
+#endif
+
  #endif        /* !_RPC_NETTYPE_H */

Modified: head/include/rpc/pmap_clnt.h
==============================================================================
--- head/include/rpc/pmap_clnt.h        Sun Sep  2 18:54:51 2012        
(r240059)
+++ head/include/rpc/pmap_clnt.h        Sun Sep  2 21:04:40 2012        
(r240060)
@@ -66,6 +66,10 @@
  #define _RPC_PMAP_CLNT_H_
  #include <sys/cdefs.h>

+#ifdef __cplusplus
+extern "C" {
+#endif
+
  __BEGIN_DECLS
  extern bool_t         pmap_set(u_long, u_long, int, int);
  extern bool_t         pmap_unset(u_long, u_long);
@@ -83,4 +87,8 @@ extern u_short                pmap_getport(struct sock
                                     u_long, u_long, u_int);
  __END_DECLS

+#ifdef __cplusplus
+}
+#endif
+
  #endif /* !_RPC_PMAP_CLNT_H_ */

Modified: head/include/rpc/pmap_rmt.h
==============================================================================
--- head/include/rpc/pmap_rmt.h Sun Sep  2 18:54:51 2012        (r240059)
+++ head/include/rpc/pmap_rmt.h Sun Sep  2 21:04:40 2012        (r240060)
@@ -44,6 +44,10 @@
  #define _RPC_PMAP_RMT_H
  #include <sys/cdefs.h>

+#ifdef __cplusplus
+extern "C" {
+#endif
+
  struct rmtcallargs {
        u_long prog, vers, proc, arglen;
        caddr_t args_ptr;
@@ -62,4 +66,8 @@ extern bool_t xdr_rmtcall_args(XDR *, st
  extern bool_t xdr_rmtcallres(XDR *, struct rmtcallres *);
  __END_DECLS

+#ifdef __cplusplus
+}
+#endif
+
  #endif /* !_RPC_PMAP_RMT_H */

Modified: head/include/rpc/rpc_com.h
==============================================================================
--- head/include/rpc/rpc_com.h  Sun Sep  2 18:54:51 2012        (r240059)
+++ head/include/rpc/rpc_com.h  Sun Sep  2 21:04:40 2012        (r240060)
@@ -42,9 +42,13 @@
  #ifndef _RPC_RPCCOM_H
  #define       _RPC_RPCCOM_H

+/* #pragma ident       "@(#)rpc_com.h     1.11    93/07/05 SMI" */
+
  #include <sys/cdefs.h>

-/* #pragma ident       "@(#)rpc_com.h     1.11    93/07/05 SMI" */
+#ifdef __cplusplus
+extern "C" {
+#endif

  /*
   * The max size of the transport, if the size cannot be determined
@@ -80,4 +84,8 @@ char *_get_next_token(char *, int);

  __END_DECLS

+#ifdef __cplusplus
+}
+#endif
+
  #endif /* _RPC_RPCCOM_H */

Modified: head/include/rpc/rpc_msg.h
==============================================================================
--- head/include/rpc/rpc_msg.h  Sun Sep  2 18:54:51 2012        (r240059)
+++ head/include/rpc/rpc_msg.h  Sun Sep  2 21:04:40 2012        (r240060)
@@ -43,6 +43,10 @@
  #ifndef _RPC_RPC_MSG_H
  #define _RPC_RPC_MSG_H

+#ifdef __cplusplus
+extern "C" {
+#endif
+
  #define RPC_MSG_VERSION               ((u_int32_t) 2)
  #define RPC_SERVICE_PORT      ((u_short) 2048)

@@ -211,4 +215,8 @@ extern bool_t       xdr_rejected_reply(XDR *,
  extern void   _seterr_reply(struct rpc_msg *, struct rpc_err *);
  __END_DECLS

+#ifdef __cplusplus
+}
+#endif
+
  #endif /* !_RPC_RPC_MSG_H */

Modified: head/include/rpc/rpcb_clnt.h
==============================================================================
--- head/include/rpc/rpcb_clnt.h        Sun Sep  2 18:54:51 2012        
(r240059)
+++ head/include/rpc/rpcb_clnt.h        Sun Sep  2 21:04:40 2012        
(r240060)
@@ -61,6 +61,10 @@
  #include <rpc/types.h>
  #include <rpc/rpcb_prot.h>

+#ifdef __cplusplus
+extern "C" {
+#endif
+
  __BEGIN_DECLS
  extern bool_t rpcb_set(const rpcprog_t, const rpcvers_t,
                       const struct netconfig  *, const struct netbuf *);
@@ -82,4 +86,8 @@ extern char *rpcb_taddr2uaddr(struct net
  extern struct netbuf *rpcb_uaddr2taddr(struct netconfig *, char *);
  __END_DECLS

+#ifdef __cplusplus
+}
+#endif
+
  #endif        /* !_RPC_RPCB_CLNT_H */

Modified: head/include/rpc/rpcent.h
==============================================================================
--- head/include/rpc/rpcent.h   Sun Sep  2 18:54:51 2012        (r240059)
+++ head/include/rpc/rpcent.h   Sun Sep  2 21:04:40 2012        (r240060)
@@ -45,6 +45,9 @@
  /*    #pragma ident "@(#)rpcent.h   1.13    94/04/25 SMI"   */
  /*      @(#)rpcent.h 1.1 88/12/06 SMI   */

+#ifdef __cplusplus
+extern "C" {
+#endif

  struct rpcent {
        char    *r_name;        /* name of server for this rpc program */
@@ -64,4 +67,8 @@ extern void setrpcent(int);
  extern void endrpcent(void);
  __END_DECLS

+#ifdef __cplusplus
+}
+#endif
+
  #endif /* !_RPC_CENT_H */

Modified: head/include/rpc/rpcsec_gss.h
==============================================================================
--- head/include/rpc/rpcsec_gss.h       Sun Sep  2 18:54:51 2012        
(r240059)
+++ head/include/rpc/rpcsec_gss.h       Sun Sep  2 21:04:40 2012        
(r240060)
@@ -29,6 +29,10 @@
  #ifndef _RPCSEC_GSS_H
  #define _RPCSEC_GSS_H

+#ifdef __cplusplus
+extern "C" {
+#endif
+
  #include <gssapi/gssapi.h>

  #ifndef MAX_GSS_MECH
@@ -176,4 +180,8 @@ bool_t __rpc_gss_set_error(int rpc_gss_e

  __END_DECLS

+#ifdef __cplusplus
+}
+#endif
+
  #endif /* !_RPCSEC_GSS_H */

Modified: head/include/rpc/svc.h
==============================================================================
--- head/include/rpc/svc.h      Sun Sep  2 18:54:51 2012        (r240059)
+++ head/include/rpc/svc.h      Sun Sep  2 21:04:40 2012        (r240060)
@@ -65,6 +65,10 @@
   * parameters, struct svc_req * and SVCXPRT *, defined below.
   */

+#ifdef __cplusplus
+extern "C" {
+#endif
+
  /*
   *      Service control requests
   */
@@ -467,6 +471,9 @@ int __rpc_get_local_uid(SVCXPRT *_transp

  __END_DECLS

+#ifdef __cplusplus
+}
+#endif

  /* for backward compatibility */
  #include <rpc/svc_soc.h>

Modified: head/include/rpc/svc_soc.h
==============================================================================
--- head/include/rpc/svc_soc.h  Sun Sep  2 18:54:51 2012        (r240059)
+++ head/include/rpc/svc_soc.h  Sun Sep  2 21:04:40 2012        (r240060)
@@ -49,6 +49,10 @@
   * with TS-RPC
   */

+#ifdef __cplusplus
+extern "C" {
+#endif
+
  /*
   *  Approved way of getting address of caller
   */
@@ -113,4 +117,8 @@ __BEGIN_DECLS
  extern SVCXPRT *svcfd_create(int, u_int, u_int);
  __END_DECLS

+#ifdef __cplusplus
+}
+#endif
+
  #endif /* !_RPC_SVC_SOC_H */

Modified: head/include/rpc/xdr.h
==============================================================================
--- head/include/rpc/xdr.h      Sun Sep  2 18:54:51 2012        (r240059)
+++ head/include/rpc/xdr.h      Sun Sep  2 21:04:40 2012        (r240060)
@@ -43,6 +43,10 @@
  #define _RPC_XDR_H
  #include <sys/cdefs.h>

+#ifdef __cplusplus
+extern "C" {
+#endif
+
  /*
   * XDR provides a conventional way for converting between C data
   * types and an external bit-string representation.  Library supplied
@@ -97,26 +101,26 @@ enum xdr_op {
   * an operations vector for the particular implementation (e.g. see 
xdr_mem.c),
   * and two private fields for the use of the particular implementation.
   */
-typedef struct __rpc_xdr {
+typedef struct XDR {
        enum xdr_op     x_op;           /* operation; fast additional param */
        const struct xdr_ops {
                /* get a long from underlying stream */
-               bool_t  (*x_getlong)(struct __rpc_xdr *, long *);
+               bool_t  (*x_getlong)(struct XDR *, long *);
                /* put a long to " */
-               bool_t  (*x_putlong)(struct __rpc_xdr *, const long *);
+               bool_t  (*x_putlong)(struct XDR *, const long *);
                /* get some bytes from " */
-               bool_t  (*x_getbytes)(struct __rpc_xdr *, char *, u_int);
+               bool_t  (*x_getbytes)(struct XDR *, char *, u_int);
                /* put some bytes to " */
-               bool_t  (*x_putbytes)(struct __rpc_xdr *, const char *, u_int);
+               bool_t  (*x_putbytes)(struct XDR *, const char *, u_int);
                /* returns bytes off from beginning */
-               u_int   (*x_getpostn)(struct __rpc_xdr *);
+               u_int   (*x_getpostn)(struct XDR *);
                /* lets you reposition the stream */
-               bool_t  (*x_setpostn)(struct __rpc_xdr *, u_int);
+               bool_t  (*x_setpostn)(struct XDR *, u_int);
                /* buf quick ptr to buffered data */
-               int32_t *(*x_inline)(struct __rpc_xdr *, u_int);
+               int32_t *(*x_inline)(struct XDR *, u_int);
                /* free privates of this xdr_stream */
-               void    (*x_destroy)(struct __rpc_xdr *);
-               bool_t  (*x_control)(struct __rpc_xdr *, int, void *);
+               void    (*x_destroy)(struct XDR *);
+               bool_t  (*x_control)(struct XDR *, int, void *);
        } *x_ops;
        char *          x_public;       /* users' data */
        void *          x_private;      /* pointer to private data */
@@ -366,4 +370,8 @@ extern bool_t xdrrec_eof(XDR *);
  extern u_int xdrrec_readbytes(XDR *, caddr_t, u_int);
  __END_DECLS

+#ifdef __cplusplus
+}
+#endif
+
  #endif /* !_RPC_XDR_H */

Modified: head/sys/rpc/rpc_com.h
==============================================================================
--- head/sys/rpc/rpc_com.h      Sun Sep  2 18:54:51 2012        (r240059)
+++ head/sys/rpc/rpc_com.h      Sun Sep  2 21:04:40 2012        (r240060)
@@ -114,8 +114,8 @@ extern int __rpc_sockisbound(struct sock
  extern int bindresvport(struct socket *so, struct sockaddr *sa);

  struct xucred;
-struct __rpc_xdr;
-bool_t xdr_authunix_parms(struct __rpc_xdr *xdrs, uint32_t *time, struct 
xucred *cred);
+struct XDR;
+bool_t xdr_authunix_parms(struct XDR *xdrs, uint32_t *time, struct xucred 
*cred);
  #endif

  __END_DECLS

Modified: head/sys/rpc/xdr.h
==============================================================================
--- head/sys/rpc/xdr.h  Sun Sep  2 18:54:51 2012        (r240059)
+++ head/sys/rpc/xdr.h  Sun Sep  2 21:04:40 2012        (r240060)
@@ -97,26 +97,26 @@ enum xdr_op {
   * an operations vector for the particular implementation (e.g. see 
xdr_mem.c),
   * and two private fields for the use of the particular implementation.
   */
-typedef struct __rpc_xdr {
+typedef struct XDR {
        enum xdr_op     x_op;           /* operation; fast additional param */
        const struct xdr_ops {
                /* get a long from underlying stream */
-               bool_t  (*x_getlong)(struct __rpc_xdr *, long *);
+               bool_t  (*x_getlong)(struct XDR *, long *);
                /* put a long to " */
-               bool_t  (*x_putlong)(struct __rpc_xdr *, const long *);
+               bool_t  (*x_putlong)(struct XDR *, const long *);
                /* get some bytes from " */
-               bool_t  (*x_getbytes)(struct __rpc_xdr *, char *, u_int);
+               bool_t  (*x_getbytes)(struct XDR *, char *, u_int);
                /* put some bytes to " */
-               bool_t  (*x_putbytes)(struct __rpc_xdr *, const char *, u_int);
+               bool_t  (*x_putbytes)(struct XDR *, const char *, u_int);
                /* returns bytes off from beginning */
-               u_int   (*x_getpostn)(struct __rpc_xdr *);
+               u_int   (*x_getpostn)(struct XDR *);
                /* lets you reposition the stream */
-               bool_t  (*x_setpostn)(struct __rpc_xdr *, u_int);
+               bool_t  (*x_setpostn)(struct XDR *, u_int);
                /* buf quick ptr to buffered data */
-               int32_t *(*x_inline)(struct __rpc_xdr *, u_int);
+               int32_t *(*x_inline)(struct XDR *, u_int);
                /* free privates of this xdr_stream */
-               void    (*x_destroy)(struct __rpc_xdr *);
-               bool_t  (*x_control)(struct __rpc_xdr *, int, void *);
+               void    (*x_destroy)(struct XDR *);
+               bool_t  (*x_control)(struct XDR *, int, void *);
        } *x_ops;
        char *          x_public;       /* users' data */
        void *          x_private;      /* pointer to private data */

Don't __BEGIN_DECLS and __END_DECLS do exactly that? i.e. it looks like some of the #ifdef's you added are redundant.
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to