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
This commit is contained in:
parent
ab2b8d671b
commit
b30c6ac9f9
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=359696
@ -36,12 +36,15 @@
|
|||||||
#define WITH_CASPER
|
#define WITH_CASPER
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include <sys/cdefs.h>
|
||||||
#include <sys/socket.h> /* socklen_t */
|
#include <sys/socket.h> /* socklen_t */
|
||||||
|
|
||||||
struct addrinfo;
|
struct addrinfo;
|
||||||
struct hostent;
|
struct hostent;
|
||||||
|
|
||||||
#ifdef WITH_CASPER
|
#ifdef WITH_CASPER
|
||||||
|
__BEGIN_DECLS
|
||||||
|
|
||||||
struct hostent *cap_gethostbyname(cap_channel_t *chan, const char *name);
|
struct hostent *cap_gethostbyname(cap_channel_t *chan, const char *name);
|
||||||
struct hostent *cap_gethostbyname2(cap_channel_t *chan, const char *name,
|
struct hostent *cap_gethostbyname2(cap_channel_t *chan, const char *name,
|
||||||
int type);
|
int type);
|
||||||
@ -58,6 +61,8 @@ int cap_dns_type_limit(cap_channel_t *chan, const char * const *types,
|
|||||||
size_t ntypes);
|
size_t ntypes);
|
||||||
int cap_dns_family_limit(cap_channel_t *chan, const int *families,
|
int cap_dns_family_limit(cap_channel_t *chan, const int *families,
|
||||||
size_t nfamilies);
|
size_t nfamilies);
|
||||||
|
|
||||||
|
__END_DECLS
|
||||||
#else
|
#else
|
||||||
#define cap_gethostbyname(chan, name) gethostbyname(name)
|
#define cap_gethostbyname(chan, name) gethostbyname(name)
|
||||||
#define cap_gethostbyname2(chan, name, type) gethostbyname2(name, type)
|
#define cap_gethostbyname2(chan, name, type) gethostbyname2(name, type)
|
||||||
|
@ -31,6 +31,7 @@
|
|||||||
#ifndef _FILEARGS_H_
|
#ifndef _FILEARGS_H_
|
||||||
#define _FILEARGS_H_
|
#define _FILEARGS_H_
|
||||||
|
|
||||||
|
#include <sys/cdefs.h>
|
||||||
#include <sys/dnv.h>
|
#include <sys/dnv.h>
|
||||||
#include <sys/nv.h>
|
#include <sys/nv.h>
|
||||||
|
|
||||||
@ -44,6 +45,8 @@ struct fileargs;
|
|||||||
typedef struct fileargs fileargs_t;
|
typedef struct fileargs fileargs_t;
|
||||||
struct stat;
|
struct stat;
|
||||||
|
|
||||||
|
__BEGIN_DECLS
|
||||||
|
|
||||||
fileargs_t *fileargs_init(int argc, char *argv[], int flags, mode_t mode,
|
fileargs_t *fileargs_init(int argc, char *argv[], int flags, mode_t mode,
|
||||||
cap_rights_t *rightsp, int operations);
|
cap_rights_t *rightsp, int operations);
|
||||||
fileargs_t *fileargs_cinit(cap_channel_t *cas, int argc, char *argv[],
|
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, const char *mode);
|
|||||||
|
|
||||||
fileargs_t *fileargs_wrap(cap_channel_t *chan, int fdflags);
|
fileargs_t *fileargs_wrap(cap_channel_t *chan, int fdflags);
|
||||||
cap_channel_t *fileargs_unwrap(fileargs_t *fa, int *fdflags);
|
cap_channel_t *fileargs_unwrap(fileargs_t *fa, int *fdflags);
|
||||||
|
|
||||||
|
__END_DECLS
|
||||||
|
|
||||||
#else
|
#else
|
||||||
typedef struct fileargs {
|
typedef struct fileargs {
|
||||||
int fa_flags;
|
int fa_flags;
|
||||||
|
@ -36,7 +36,11 @@
|
|||||||
#define WITH_CASPER
|
#define WITH_CASPER
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include <sys/cdefs.h>
|
||||||
|
|
||||||
#ifdef WITH_CASPER
|
#ifdef WITH_CASPER
|
||||||
|
__BEGIN_DECLS
|
||||||
|
|
||||||
struct group *cap_getgrent(cap_channel_t *chan);
|
struct group *cap_getgrent(cap_channel_t *chan);
|
||||||
struct group *cap_getgrnam(cap_channel_t *chan, const char *name);
|
struct group *cap_getgrnam(cap_channel_t *chan, const char *name);
|
||||||
struct group *cap_getgrgid(cap_channel_t *chan, gid_t gid);
|
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 char * const *fields,
|
|||||||
size_t nfields);
|
size_t nfields);
|
||||||
int cap_grp_limit_groups(cap_channel_t *chan, const char * const *names,
|
int cap_grp_limit_groups(cap_channel_t *chan, const char * const *names,
|
||||||
size_t nnames, const gid_t *gids, size_t ngids);
|
size_t nnames, const gid_t *gids, size_t ngids);
|
||||||
|
|
||||||
|
__END_DECLS
|
||||||
|
|
||||||
#else
|
#else
|
||||||
#define cap_getgrent(chan) getgrent()
|
#define cap_getgrent(chan) getgrent()
|
||||||
#define cap_getgrnam(chan, name) getgrnam(name)
|
#define cap_getgrnam(chan, name) getgrnam(name)
|
||||||
|
@ -36,7 +36,11 @@
|
|||||||
#define WITH_CASPER
|
#define WITH_CASPER
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include <sys/cdefs.h>
|
||||||
|
|
||||||
#ifdef WITH_CASPER
|
#ifdef WITH_CASPER
|
||||||
|
__BEGIN_DECLS
|
||||||
|
|
||||||
struct passwd *cap_getpwent(cap_channel_t *chan);
|
struct passwd *cap_getpwent(cap_channel_t *chan);
|
||||||
struct passwd *cap_getpwnam(cap_channel_t *chan, const char *login);
|
struct passwd *cap_getpwnam(cap_channel_t *chan, const char *login);
|
||||||
struct passwd *cap_getpwuid(cap_channel_t *chan, uid_t uid);
|
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 char * const *fields,
|
|||||||
size_t nfields);
|
size_t nfields);
|
||||||
int cap_pwd_limit_users(cap_channel_t *chan, const char * const *names,
|
int cap_pwd_limit_users(cap_channel_t *chan, const char * const *names,
|
||||||
size_t nnames, uid_t *uids, size_t nuids);
|
size_t nnames, uid_t *uids, size_t nuids);
|
||||||
|
|
||||||
|
__END_DECLS
|
||||||
|
|
||||||
#else
|
#else
|
||||||
#define cap_getpwent(chan) getpwent()
|
#define cap_getpwent(chan) getpwent()
|
||||||
#define cap_getpwnam(chan, login) getpwnam(login)
|
#define cap_getpwnam(chan, login) getpwnam(login)
|
||||||
|
@ -36,12 +36,16 @@
|
|||||||
#define WITH_CASPER
|
#define WITH_CASPER
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include <sys/cdefs.h>
|
||||||
|
|
||||||
#ifdef WITH_CASPER
|
#ifdef WITH_CASPER
|
||||||
#define CAP_SYSCTL_READ 0x01
|
#define CAP_SYSCTL_READ 0x01
|
||||||
#define CAP_SYSCTL_WRITE 0x02
|
#define CAP_SYSCTL_WRITE 0x02
|
||||||
#define CAP_SYSCTL_RDWR (CAP_SYSCTL_READ | CAP_SYSCTL_WRITE)
|
#define CAP_SYSCTL_RDWR (CAP_SYSCTL_READ | CAP_SYSCTL_WRITE)
|
||||||
#define CAP_SYSCTL_RECURSIVE 0x04
|
#define CAP_SYSCTL_RECURSIVE 0x04
|
||||||
|
|
||||||
|
__BEGIN_DECLS
|
||||||
|
|
||||||
int cap_sysctl(cap_channel_t *chan, const int *name, u_int namelen, void *oldp,
|
int cap_sysctl(cap_channel_t *chan, const int *name, u_int namelen, void *oldp,
|
||||||
size_t *oldlenp, const void *newp, size_t newlen);
|
size_t *oldlenp, const void *newp, size_t newlen);
|
||||||
int cap_sysctlbyname(cap_channel_t *chan, const char *name, void *oldp,
|
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_limit_t *limit,
|
|||||||
cap_sysctl_limit_t *cap_sysctl_limit_mib(cap_sysctl_limit_t *limit,
|
cap_sysctl_limit_t *cap_sysctl_limit_mib(cap_sysctl_limit_t *limit,
|
||||||
const int *mibp, u_int miblen, int flags);
|
const int *mibp, u_int miblen, int flags);
|
||||||
int cap_sysctl_limit(cap_sysctl_limit_t *limit);
|
int cap_sysctl_limit(cap_sysctl_limit_t *limit);
|
||||||
|
|
||||||
|
__END_DECLS
|
||||||
|
|
||||||
#else /* !WITH_CASPER */
|
#else /* !WITH_CASPER */
|
||||||
#define cap_sysctl(chan, name, namelen, oldp, oldlenp, newp, newlen) \
|
#define cap_sysctl(chan, name, namelen, oldp, oldlenp, newp, newlen) \
|
||||||
sysctl((name), (namelen), (oldp), (oldlenp), (newp), (newlen))
|
sysctl((name), (namelen), (oldp), (oldlenp), (newp), (newlen))
|
||||||
|
@ -29,7 +29,11 @@
|
|||||||
#ifndef _CAP_SYSLOG_H_
|
#ifndef _CAP_SYSLOG_H_
|
||||||
#define _CAP_SYSLOG_H_
|
#define _CAP_SYSLOG_H_
|
||||||
|
|
||||||
|
#include <sys/cdefs.h>
|
||||||
|
|
||||||
#ifdef WITH_CASPER
|
#ifdef WITH_CASPER
|
||||||
|
__BEGIN_DECLS
|
||||||
|
|
||||||
void cap_syslog(cap_channel_t *chan, int pri,
|
void cap_syslog(cap_channel_t *chan, int pri,
|
||||||
const char *fmt, ...) __printflike(3, 4);
|
const char *fmt, ...) __printflike(3, 4);
|
||||||
void cap_vsyslog(cap_channel_t *chan, int priority, const char *fmt,
|
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 *ident, int logopt,
|
|||||||
void cap_closelog(cap_channel_t *chan);
|
void cap_closelog(cap_channel_t *chan);
|
||||||
|
|
||||||
int cap_setlogmask(cap_channel_t *chan, int maskpri);
|
int cap_setlogmask(cap_channel_t *chan, int maskpri);
|
||||||
|
|
||||||
|
__END_DECLS
|
||||||
|
|
||||||
#else
|
#else
|
||||||
#define cap_syslog(chan, pri, ...) syslog(pri, __VA_ARGS__)
|
#define cap_syslog(chan, pri, ...) syslog(pri, __VA_ARGS__)
|
||||||
#define cap_vsyslog(chan, pri, fmt, ap) vsyslog(pri, fmt, ap)
|
#define cap_vsyslog(chan, pri, fmt, ap) vsyslog(pri, fmt, ap)
|
||||||
|
Loading…
Reference in New Issue
Block a user