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)13static 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