xref: /src/tests/sys/capsicum/capsicum.h (revision fba81b33aabff74ad03d5f9f9663c176cf060fa6)
1 /*
2  * Minimal portability layer for Capsicum-related features.
3  */
4 #ifndef __CAPSICUM_H__
5 #define __CAPSICUM_H__
6 
7 #include <stdio.h>
8 
9 #include "capsicum-freebsd.h"
10 #include "capsicum-rights.h"
11 
12 /* New-style Capsicum API extras for debugging */
cap_rights_describe(const cap_rights_t * rights,char * buffer)13 static inline void cap_rights_describe(const cap_rights_t *rights, char *buffer) {
14   int ii;
15   for (ii = 0; ii < (CAP_RIGHTS_VERSION+2); ii++) {
16     int len = sprintf(buffer, "0x%016llx ", (unsigned long long)rights->cr_rights[ii]);
17     buffer += len;
18   }
19 }
20 
21 #ifdef __cplusplus
22 #include <iostream>
23 #include <iomanip>
24 #include <string>
25 
26 inline std::ostream& operator<<(std::ostream& os, cap_rights_t rights) {
27   for (int ii = 0; ii < (CAP_RIGHTS_VERSION+2); ii++) {
28     os << std::hex << std::setw(16) << std::setfill('0') << (unsigned long long)rights.cr_rights[ii] << " ";
29   }
30   return os;
31 }
32 extern std::string capsicum_test_bindir;
33 #endif
34 
35 #endif /*__CAPSICUM_H__*/
36