svn commit: r359696 - in head/lib/libcasper/services: cap_dns cap_fileargs cap_grp cap_pwd cap_sysctl cap_syslog

Conrad Meyer cem at FreeBSD.org
Tue Apr 7 16:40:42 UTC 2020


Author: cem
Date: Tue Apr  7 16:40:41 2020
New Revision: 359696
URL: https://svnweb.freebsd.org/changeset/base/359696

Log:
  libcasper(3): Export functions to C++
  
  We must wrap C declarations in __BEGIN / __END_DECLS to avoid C++ name-mangling
  of the declaration when including the C header; name-mangling causes the linker
  to attempt to locate the wrong (C++ ABI) symbol name.
  
  Reviewed by:	markj, oshogbo (earlier version both)
  Differential Revision:	https://reviews.freebsd.org/D24323

Modified:
  head/lib/libcasper/services/cap_dns/cap_dns.h
  head/lib/libcasper/services/cap_fileargs/cap_fileargs.h
  head/lib/libcasper/services/cap_grp/cap_grp.h
  head/lib/libcasper/services/cap_pwd/cap_pwd.h
  head/lib/libcasper/services/cap_sysctl/cap_sysctl.h
  head/lib/libcasper/services/cap_syslog/cap_syslog.h

Modified: head/lib/libcasper/services/cap_dns/cap_dns.h
==============================================================================
--- head/lib/libcasper/services/cap_dns/cap_dns.h	Tue Apr  7 16:29:11 2020	(r359695)
+++ head/lib/libcasper/services/cap_dns/cap_dns.h	Tue Apr  7 16:40:41 2020	(r359696)
@@ -36,12 +36,15 @@
 #define WITH_CASPER
 #endif
 
+#include <sys/cdefs.h>
 #include <sys/socket.h>	/* socklen_t */
 
 struct addrinfo;
 struct hostent;
 
 #ifdef WITH_CASPER
+__BEGIN_DECLS
+
 struct hostent *cap_gethostbyname(cap_channel_t *chan, const char *name);
 struct hostent *cap_gethostbyname2(cap_channel_t *chan, const char *name,
     int type);
@@ -58,6 +61,8 @@ int cap_dns_type_limit(cap_channel_t *chan, const char
     size_t ntypes);
 int cap_dns_family_limit(cap_channel_t *chan, const int *families,
     size_t nfamilies);
+
+__END_DECLS
 #else
 #define	cap_gethostbyname(chan, name)		 gethostbyname(name)
 #define cap_gethostbyname2(chan, name, type)	 gethostbyname2(name, type)

Modified: head/lib/libcasper/services/cap_fileargs/cap_fileargs.h
==============================================================================
--- head/lib/libcasper/services/cap_fileargs/cap_fileargs.h	Tue Apr  7 16:29:11 2020	(r359695)
+++ head/lib/libcasper/services/cap_fileargs/cap_fileargs.h	Tue Apr  7 16:40:41 2020	(r359696)
@@ -31,6 +31,7 @@
 #ifndef _FILEARGS_H_
 #define	_FILEARGS_H_
 
+#include <sys/cdefs.h>
 #include <sys/dnv.h>
 #include <sys/nv.h>
 
@@ -44,6 +45,8 @@ struct fileargs;
 typedef struct fileargs fileargs_t;
 struct stat;
 
+__BEGIN_DECLS
+
 fileargs_t *fileargs_init(int argc, char *argv[], int flags, mode_t mode,
     cap_rights_t *rightsp, int operations);
 fileargs_t *fileargs_cinit(cap_channel_t *cas, int argc, char *argv[],
@@ -57,6 +60,9 @@ FILE *fileargs_fopen(fileargs_t *fa, const char *name,
 
 fileargs_t *fileargs_wrap(cap_channel_t *chan, int fdflags);
 cap_channel_t *fileargs_unwrap(fileargs_t *fa, int *fdflags);
+
+__END_DECLS
+
 #else
 typedef struct fileargs {
 	int	fa_flags;

Modified: head/lib/libcasper/services/cap_grp/cap_grp.h
==============================================================================
--- head/lib/libcasper/services/cap_grp/cap_grp.h	Tue Apr  7 16:29:11 2020	(r359695)
+++ head/lib/libcasper/services/cap_grp/cap_grp.h	Tue Apr  7 16:40:41 2020	(r359696)
@@ -36,7 +36,11 @@
 #define WITH_CASPER
 #endif
 
+#include <sys/cdefs.h>
+
 #ifdef WITH_CASPER
+__BEGIN_DECLS
+
 struct group *cap_getgrent(cap_channel_t *chan);
 struct group *cap_getgrnam(cap_channel_t *chan, const char *name);
 struct group *cap_getgrgid(cap_channel_t *chan, gid_t gid);
@@ -58,6 +62,9 @@ int cap_grp_limit_fields(cap_channel_t *chan, const ch
     size_t nfields);
 int cap_grp_limit_groups(cap_channel_t *chan, const char * const *names,
     size_t nnames, const gid_t *gids, size_t ngids);
+
+__END_DECLS
+
 #else
 #define	cap_getgrent(chan)		getgrent()
 #define	cap_getgrnam(chan, name)	getgrnam(name)

Modified: head/lib/libcasper/services/cap_pwd/cap_pwd.h
==============================================================================
--- head/lib/libcasper/services/cap_pwd/cap_pwd.h	Tue Apr  7 16:29:11 2020	(r359695)
+++ head/lib/libcasper/services/cap_pwd/cap_pwd.h	Tue Apr  7 16:40:41 2020	(r359696)
@@ -36,7 +36,11 @@
 #define WITH_CASPER
 #endif
 
+#include <sys/cdefs.h>
+
 #ifdef WITH_CASPER
+__BEGIN_DECLS
+
 struct passwd *cap_getpwent(cap_channel_t *chan);
 struct passwd *cap_getpwnam(cap_channel_t *chan, const char *login);
 struct passwd *cap_getpwuid(cap_channel_t *chan, uid_t uid);
@@ -58,6 +62,9 @@ int cap_pwd_limit_fields(cap_channel_t *chan, const ch
     size_t nfields);
 int cap_pwd_limit_users(cap_channel_t *chan, const char * const *names,
     size_t nnames, uid_t *uids, size_t nuids);
+
+__END_DECLS
+
 #else
 #define	cap_getpwent(chan)		getpwent()
 #define	cap_getpwnam(chan, login)	getpwnam(login)

Modified: head/lib/libcasper/services/cap_sysctl/cap_sysctl.h
==============================================================================
--- head/lib/libcasper/services/cap_sysctl/cap_sysctl.h	Tue Apr  7 16:29:11 2020	(r359695)
+++ head/lib/libcasper/services/cap_sysctl/cap_sysctl.h	Tue Apr  7 16:40:41 2020	(r359696)
@@ -36,12 +36,16 @@
 #define	WITH_CASPER
 #endif
 
+#include <sys/cdefs.h>
+
 #ifdef WITH_CASPER
 #define	CAP_SYSCTL_READ		0x01
 #define	CAP_SYSCTL_WRITE	0x02
 #define	CAP_SYSCTL_RDWR		(CAP_SYSCTL_READ | CAP_SYSCTL_WRITE)
 #define	CAP_SYSCTL_RECURSIVE	0x04
 
+__BEGIN_DECLS
+
 int cap_sysctl(cap_channel_t *chan, const int *name, u_int namelen, void *oldp,
     size_t *oldlenp, const void *newp, size_t newlen);
 int cap_sysctlbyname(cap_channel_t *chan, const char *name, void *oldp,
@@ -58,6 +62,9 @@ cap_sysctl_limit_t *cap_sysctl_limit_name(cap_sysctl_l
 cap_sysctl_limit_t *cap_sysctl_limit_mib(cap_sysctl_limit_t *limit,
     const int *mibp, u_int miblen, int flags);
 int cap_sysctl_limit(cap_sysctl_limit_t *limit);
+
+__END_DECLS
+
 #else /* !WITH_CASPER */
 #define	cap_sysctl(chan, name, namelen, oldp, oldlenp, newp, newlen)	\
 	sysctl((name), (namelen), (oldp), (oldlenp), (newp), (newlen))

Modified: head/lib/libcasper/services/cap_syslog/cap_syslog.h
==============================================================================
--- head/lib/libcasper/services/cap_syslog/cap_syslog.h	Tue Apr  7 16:29:11 2020	(r359695)
+++ head/lib/libcasper/services/cap_syslog/cap_syslog.h	Tue Apr  7 16:40:41 2020	(r359696)
@@ -29,7 +29,11 @@
 #ifndef	_CAP_SYSLOG_H_
 #define	_CAP_SYSLOG_H_
 
+#include <sys/cdefs.h>
+
 #ifdef WITH_CASPER
+__BEGIN_DECLS
+
 void cap_syslog(cap_channel_t *chan, int pri,
     const char *fmt, ...) __printflike(3, 4);
 void cap_vsyslog(cap_channel_t *chan, int priority, const char *fmt,
@@ -40,6 +44,9 @@ void cap_openlog(cap_channel_t *chan, const char *iden
 void cap_closelog(cap_channel_t *chan);
 
 int cap_setlogmask(cap_channel_t *chan, int maskpri);
+
+__END_DECLS
+
 #else
 #define	cap_syslog(chan, pri, ...)	syslog(pri, __VA_ARGS__)
 #define	cap_vsyslog(chan, pri, fmt, ap) vsyslog(pri, fmt, ap)


More information about the svn-src-head mailing list