#ifndef COSMOPOLITAN_LIBC_INTRIN_PROMISES_H_
#define COSMOPOLITAN_LIBC_INTRIN_PROMISES_H_

#define PROMISE_STDIO     0
#define PROMISE_RPATH     1
#define PROMISE_WPATH     2
#define PROMISE_CPATH     3
#define PROMISE_DPATH     4
#define PROMISE_FLOCK     5
#define PROMISE_FATTR     6
#define PROMISE_INET      7
#define PROMISE_UNIX      8
#define PROMISE_DNS       9
#define PROMISE_TTY       10
#define PROMISE_RECVFD    11
#define PROMISE_PROC      12
#define PROMISE_EXEC      13
#define PROMISE_ID        14
#define PROMISE_UNVEIL    15
#define PROMISE_SENDFD    16
#define PROMISE_SETTIME   17
#define PROMISE_PROT_EXEC 18
#define PROMISE_VMINFO    19
#define PROMISE_TMPPATH   20
#define PROMISE_CHOWN     21
#define PROMISE_ANET      22
#define PROMISE_LEN_      23

#define PLEDGED(x) ((~__promises >> PROMISE_##x) & 1)

#if !(__ASSEMBLER__ + __LINKER__ + 0)
COSMOPOLITAN_C_START_

extern unsigned long __promises;
extern unsigned long __execpromises;

COSMOPOLITAN_C_END_
#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
#endif /* COSMOPOLITAN_LIBC_INTRIN_PROMISES_H_ */