From eeb20775d2bb28954b3f56296d41fbc1fec52d7e Mon Sep 17 00:00:00 2001 From: Justine Tunney Date: Tue, 9 Jan 2024 01:26:03 -0800 Subject: [PATCH] Add `dontthrow` attribute to most libc functions This will help C++ code that uses exceptions to be tinier. For example, this change shaves away 1000 lines of assembly code from LLVM's libcxx, which is 0.7% of all assembly instructions in the entire library. --- libc/assert.h | 4 +- libc/calls/calls.h | 330 +++++++++--------- libc/calls/fadvise.c | 2 +- libc/calls/fstat.c | 2 +- libc/calls/fstatat.c | 2 +- libc/calls/ftruncate.c | 2 +- libc/calls/ipc.h | 2 +- libc/calls/lseek.c | 2 +- libc/calls/lstat.c | 2 +- libc/calls/makedev.h | 6 +- libc/calls/mkostemp.c | 2 +- libc/calls/mkostemps.c | 2 +- libc/calls/mkstemp.c | 2 +- libc/calls/mkstemps.c | 2 +- libc/calls/open.c | 2 +- libc/calls/openat.c | 2 +- libc/calls/pread.c | 2 +- libc/calls/pwrite.c | 2 +- libc/calls/stat.c | 2 +- libc/calls/statvfs.c | 2 +- libc/calls/struct/cpuset.h | 20 +- libc/calls/struct/dirent.h | 24 +- libc/calls/struct/iovec.h | 10 +- libc/calls/struct/rlimit.h | 4 +- libc/calls/struct/rusage.h | 8 +- libc/calls/struct/sched_param.h | 14 +- libc/calls/struct/sigaction.h | 4 +- libc/calls/struct/sigaltstack.h | 2 +- libc/calls/struct/siginfo.h | 4 +- libc/calls/struct/statfs.h | 4 +- libc/calls/struct/sysinfo.h | 2 +- libc/calls/struct/timespec.h | 47 +-- libc/calls/struct/tms.h | 2 +- libc/calls/struct/utsname.h | 2 +- libc/calls/termios.h | 48 +-- libc/complex.h | 138 ++++---- libc/cosmo.h | 2 +- libc/cxxabi.h | 2 +- libc/dlopen/dlfcn.h | 18 +- libc/fmt/conv.h | 55 ++- libc/fmt/itoa.h | 36 +- libc/fmt/leb128.h | 10 +- libc/fmt/libgen.h | 4 +- libc/fmt/wintime.internal.h | 14 +- libc/intrin/bsf.h | 6 +- libc/intrin/bsr.h | 6 +- libc/intrin/bswap.h | 6 +- libc/intrin/cxaatexit.internal.h | 10 +- libc/intrin/describebacktrace.internal.h | 2 +- libc/intrin/describeflags.internal.h | 118 +++---- libc/intrin/directmap.internal.h | 4 +- libc/intrin/extend.internal.h | 2 +- libc/intrin/getauxval.internal.h | 2 +- libc/intrin/getenv.internal.h | 2 +- libc/intrin/hilbert.h | 4 +- libc/intrin/kprintf.h | 20 +- libc/intrin/popcnt.h | 4 +- libc/intrin/psraw.h | 4 +- libc/intrin/ulock.h | 4 +- libc/math.h | 422 +++++++++++------------ libc/mem/alg.h | 13 +- libc/mem/critbit0.h | 8 +- libc/mem/gc.h | 6 +- libc/mem/internal.h | 2 +- libc/mem/mem.h | 24 +- libc/mem/sortedints.internal.h | 8 +- libc/proc/describefds.internal.h | 6 +- libc/proc/execve.internal.h | 2 +- libc/proc/posix_spawn.h | 53 +-- libc/proc/proc.internal.h | 20 +- libc/sock/epoll.h | 8 +- libc/sock/goodsocket.internal.h | 2 +- libc/sock/ifaddrs.h | 4 +- libc/sock/select.h | 4 +- libc/sock/select.internal.h | 2 +- libc/sock/sock.h | 36 +- libc/sock/syslog.h | 10 +- libc/stdio/append.h | 18 +- libc/stdio/dprintf.h | 4 +- libc/stdio/ftw.h | 6 +- libc/stdio/rand.h | 58 ++-- libc/stdio/stdio.h | 235 ++++++------- libc/stdio/stdio_ext.h | 28 +- libc/stdio/syscall.c | 2 +- libc/stdio/syscall.h | 2 +- libc/stdlib.h | 6 +- libc/str/highwayhash64.h | 2 +- libc/str/locale.h | 80 ++--- libc/str/nltypes.h | 6 +- libc/str/slice.h | 4 +- libc/str/str.h | 138 ++++---- libc/str/unicode.h | 4 +- libc/sysv/errfuns.h | 262 +++++++------- libc/temp.h | 14 +- libc/thread/posixthread.internal.h | 34 +- libc/thread/semaphore.h | 20 +- libc/thread/thread.h | 180 +++++----- libc/thread/thread2.h | 20 +- libc/thread/tls.h | 6 +- libc/time/struct/tm.h | 33 +- libc/time/time.h | 15 +- libc/time/tz.internal.h | 32 +- libc/zip.internal.h | 30 +- 103 files changed, 1455 insertions(+), 1456 deletions(-) diff --git a/libc/assert.h b/libc/assert.h index 5ee54351d..6d011f0c6 100644 --- a/libc/assert.h +++ b/libc/assert.h @@ -14,8 +14,8 @@ #define _ASSERT_H COSMOPOLITAN_C_START_ -void __assert_fail(const char *, const char *, int); -void unassert(const char *, const char *, int); +void __assert_fail(const char *, const char *, int) libcesque; +void unassert(const char *, const char *, int) libcesque; #ifdef NDEBUG #define assert(x) ((void)0) diff --git a/libc/calls/calls.h b/libc/calls/calls.h index 01dfac77d..44811fe1d 100644 --- a/libc/calls/calls.h +++ b/libc/calls/calls.h @@ -72,184 +72,184 @@ COSMOPOLITAN_C_START_ typedef int sig_atomic_t; -bool32 isatty(int); -char *getcwd(char *, size_t); -char *realpath(const char *, char *) __wur; -char *ttyname(int); -int access(const char *, int) dontthrow; -int chdir(const char *); -int chmod(const char *, unsigned); -int chown(const char *, unsigned, unsigned); -int chroot(const char *); -int close(int); -int close_range(unsigned, unsigned, unsigned); -int closefrom(int); -int creat(const char *, unsigned); -int dup(int); -int dup2(int, int); -int dup3(int, int, int); -int execl(const char *, const char *, ...) nullterminated(); -int execle(const char *, const char *, ...) nullterminated((1)); -int execlp(const char *, const char *, ...) nullterminated(); -int execv(const char *, char *const[]); -int execve(const char *, char *const[], char *const[]); -int execvp(const char *, char *const[]); -int faccessat(int, const char *, int, int); -int fchdir(int); -int fchmod(int, unsigned) dontthrow; -int fchmodat(int, const char *, unsigned, int); -int fchown(int, unsigned, unsigned); -int fchownat(int, const char *, unsigned, unsigned, int); -int fcntl(int, int, ...); -int fdatasync(int); -int fexecve(int, char *const[], char *const[]); -int flock(int, int); -int fork(void); -int fsync(int); -int ftruncate(int, int64_t); -int getdomainname(char *, size_t); -int getgroups(int, unsigned[]); -int gethostname(char *, size_t); -int getloadavg(double *, int); +bool32 isatty(int) libcesque; +char *getcwd(char *, size_t) dontthrow; +char *realpath(const char *, char *) libcesque __wur; +char *ttyname(int) libcesque; +int access(const char *, int) libcesque; +int chdir(const char *) libcesque; +int chmod(const char *, unsigned) libcesque; +int chown(const char *, unsigned, unsigned) libcesque; +int chroot(const char *) libcesque; +int close(int) libcesque; +int close_range(unsigned, unsigned, unsigned) libcesque; +int closefrom(int) libcesque; +int creat(const char *, unsigned) libcesque; +int dup(int) libcesque; +int dup2(int, int) libcesque; +int dup3(int, int, int) libcesque; +int execl(const char *, const char *, ...) nullterminated() libcesque; +int execle(const char *, const char *, ...) nullterminated((1)) libcesque; +int execlp(const char *, const char *, ...) nullterminated() libcesque; +int execv(const char *, char *const[]) libcesque; +int execve(const char *, char *const[], char *const[]) libcesque; +int execvp(const char *, char *const[]) libcesque; +int faccessat(int, const char *, int, int) libcesque; +int fchdir(int) libcesque; +int fchmod(int, unsigned) libcesque; +int fchmodat(int, const char *, unsigned, int) libcesque; +int fchown(int, unsigned, unsigned) libcesque; +int fchownat(int, const char *, unsigned, unsigned, int) libcesque; +int fcntl(int, int, ...) libcesque; +int fdatasync(int) libcesque; +int fexecve(int, char *const[], char *const[]) libcesque; +int flock(int, int) libcesque; +int fork(void) libcesque; +int fsync(int) libcesque; +int ftruncate(int, int64_t) libcesque; +int getdomainname(char *, size_t) libcesque; +int getgroups(int, unsigned[]) libcesque; +int gethostname(char *, size_t) libcesque; +int getloadavg(double *, int) libcesque; int getpgid(int) libcesque; -int getpgrp(void) nosideeffect; -int getpid(void) nosideeffect libcesque; -int getppid(void); -int getpriority(int, unsigned); +int getpgrp(void) libcesque nosideeffect; +int getpid(void) libcesque nosideeffect; +int getppid(void) libcesque; +int getpriority(int, unsigned) libcesque; int getsid(int) nosideeffect libcesque; -int ioctl(int, unsigned long, ...); -int issetugid(void); -int kill(int, int); -int killpg(int, int); -int lchmod(const char *, unsigned); -int lchown(const char *, unsigned, unsigned); -int link(const char *, const char *) dontthrow; -int linkat(int, const char *, int, const char *, int); -int mincore(void *, size_t, unsigned char *); -int mkdir(const char *, unsigned); -int mkdirat(int, const char *, unsigned); -int mknod(const char *, unsigned, uint64_t); -int nice(int); -int open(const char *, int, ...); -int openat(int, const char *, int, ...); -int pause(void); -int pipe(int[hasatleast 2]); -int pipe2(int[hasatleast 2], int); -int posix_fadvise(int, int64_t, int64_t, int); -int posix_madvise(void *, uint64_t, int); -int raise(int); -int reboot(int); -int remove(const char *); -int rename(const char *, const char *); -int renameat(int, const char *, int, const char *); -int rmdir(const char *); -int sched_yield(void); -int setegid(unsigned); -int seteuid(unsigned); -int setfsgid(unsigned); -int setfsuid(unsigned); -int setgid(unsigned); -int setgroups(size_t, const unsigned[]); -int setpgid(int, int); -int setpgrp(void); -int setpriority(int, unsigned, int); -int setregid(unsigned, unsigned); -int setreuid(unsigned, unsigned); -int setsid(void); -int setuid(unsigned); -int shm_open(const char *, int, unsigned); -int shm_unlink(const char *); -int sigignore(int); -int siginterrupt(int, int); -int symlink(const char *, const char *); -int symlinkat(const char *, int, const char *); -int tcgetpgrp(int); -int tcsetpgrp(int, int); -int truncate(const char *, int64_t); -int ttyname_r(int, char *, size_t); -int unlink(const char *); -int unlinkat(int, const char *, int); -int usleep(uint64_t); -int vfork(void) returnstwice; -int wait(int *); -int waitpid(int, int *, int); -int64_t clock(void); -int64_t time(int64_t *); -ssize_t copy_file_range(int, long *, int, long *, size_t, unsigned); -ssize_t lseek(int, int64_t, int); -ssize_t pread(int, void *, size_t, int64_t); -ssize_t pwrite(int, const void *, size_t, int64_t); -ssize_t read(int, void *, size_t); -ssize_t readlink(const char *, char *, size_t); -ssize_t readlinkat(int, const char *, char *, size_t); -ssize_t write(int, const void *, size_t); -unsigned alarm(unsigned); -unsigned getegid(void) nosideeffect; -unsigned geteuid(void) nosideeffect; -unsigned getgid(void) nosideeffect; +int ioctl(int, unsigned long, ...) libcesque; +int issetugid(void) libcesque; +int kill(int, int) libcesque; +int killpg(int, int) libcesque; +int lchmod(const char *, unsigned) libcesque; +int lchown(const char *, unsigned, unsigned) libcesque; +int link(const char *, const char *) libcesque; +int linkat(int, const char *, int, const char *, int) libcesque; +int mincore(void *, size_t, unsigned char *) libcesque; +int mkdir(const char *, unsigned) libcesque; +int mkdirat(int, const char *, unsigned) libcesque; +int mknod(const char *, unsigned, uint64_t) libcesque; +int nice(int) libcesque; +int open(const char *, int, ...) libcesque; +int openat(int, const char *, int, ...) libcesque; +int pause(void) libcesque; +int pipe(int[hasatleast 2]) libcesque; +int pipe2(int[hasatleast 2], int) libcesque; +int posix_fadvise(int, int64_t, int64_t, int) libcesque; +int posix_madvise(void *, uint64_t, int) libcesque; +int raise(int) libcesque; +int reboot(int) libcesque; +int remove(const char *) libcesque; +int rename(const char *, const char *) libcesque; +int renameat(int, const char *, int, const char *) libcesque; +int rmdir(const char *) libcesque; +int sched_yield(void) libcesque; +int setegid(unsigned) libcesque; +int seteuid(unsigned) libcesque; +int setfsgid(unsigned) libcesque; +int setfsuid(unsigned) libcesque; +int setgid(unsigned) libcesque; +int setgroups(size_t, const unsigned[]) libcesque; +int setpgid(int, int) libcesque; +int setpgrp(void) libcesque; +int setpriority(int, unsigned, int) libcesque; +int setregid(unsigned, unsigned) libcesque; +int setreuid(unsigned, unsigned) libcesque; +int setsid(void) libcesque; +int setuid(unsigned) libcesque; +int shm_open(const char *, int, unsigned) libcesque; +int shm_unlink(const char *) libcesque; +int sigignore(int) libcesque; +int siginterrupt(int, int) libcesque; +int symlink(const char *, const char *) libcesque; +int symlinkat(const char *, int, const char *) libcesque; +int tcgetpgrp(int) libcesque; +int tcsetpgrp(int, int) libcesque; +int truncate(const char *, int64_t) libcesque; +int ttyname_r(int, char *, size_t) libcesque; +int unlink(const char *) libcesque; +int unlinkat(int, const char *, int) libcesque; +int usleep(uint64_t) libcesque; +int vfork(void) libcesque returnstwice; +int wait(int *) libcesque; +int waitpid(int, int *, int) libcesque; +int64_t clock(void) libcesque; +int64_t time(int64_t *) libcesque; +ssize_t copy_file_range(int, long *, int, long *, size_t, unsigned) libcesque; +ssize_t lseek(int, int64_t, int) libcesque; +ssize_t pread(int, void *, size_t, int64_t) libcesque; +ssize_t pwrite(int, const void *, size_t, int64_t) libcesque; +ssize_t read(int, void *, size_t) libcesque; +ssize_t readlink(const char *, char *, size_t) libcesque; +ssize_t readlinkat(int, const char *, char *, size_t) libcesque; +ssize_t write(int, const void *, size_t) libcesque; +unsigned alarm(unsigned) libcesque; +unsigned getegid(void) libcesque nosideeffect; +unsigned geteuid(void) libcesque nosideeffect; +unsigned getgid(void) libcesque nosideeffect; unsigned getuid(void) libcesque; -unsigned sleep(unsigned); -unsigned ualarm(unsigned, unsigned); -unsigned umask(unsigned); -void sync(void); +unsigned sleep(unsigned) libcesque; +unsigned ualarm(unsigned, unsigned) libcesque; +unsigned umask(unsigned) libcesque; +void sync(void) libcesque; #if defined(_COSMO_SOURCE) || defined(_GNU_SOURCE) -int syncfs(int); -int prctl(int, ...); +int syncfs(int) libcesque; +int prctl(int, ...) libcesque; int gettid(void) libcesque; -int setresgid(unsigned, unsigned, unsigned); -int setresuid(unsigned, unsigned, unsigned); -int getresgid(unsigned *, unsigned *, unsigned *); -int getresuid(unsigned *, unsigned *, unsigned *); -char *get_current_dir_name(void) __wur; -ssize_t splice(int, int64_t *, int, int64_t *, size_t, unsigned); -int memfd_create(const char *, unsigned int); -int execvpe(const char *, char *const[], char *const[]); -int euidaccess(const char *, int); -int eaccess(const char *, int); -int madvise(void *, uint64_t, int); +int setresgid(unsigned, unsigned, unsigned) libcesque; +int setresuid(unsigned, unsigned, unsigned) libcesque; +int getresgid(unsigned *, unsigned *, unsigned *) libcesque; +int getresuid(unsigned *, unsigned *, unsigned *) libcesque; +char *get_current_dir_name(void) libcesque __wur; +ssize_t splice(int, int64_t *, int, int64_t *, size_t, unsigned) libcesque; +int memfd_create(const char *, unsigned int) libcesque; +int execvpe(const char *, char *const[], char *const[]) libcesque; +int euidaccess(const char *, int) libcesque; +int eaccess(const char *, int) libcesque; +int madvise(void *, uint64_t, int) libcesque; #endif #ifdef _COSMO_SOURCE -bool32 fdexists(int); -bool32 fileexists(const char *); -bool32 ischardev(int); -bool32 isdirectory(const char *); -bool32 isexecutable(const char *); -bool32 isregularfile(const char *); -bool32 issymlink(const char *); -char *commandv(const char *, char *, size_t); -int __getcwd(char *, size_t); +bool32 fdexists(int) libcesque; +bool32 fileexists(const char *) libcesque; +bool32 ischardev(int) libcesque; +bool32 isdirectory(const char *) libcesque; +bool32 isexecutable(const char *) libcesque; +bool32 isregularfile(const char *) libcesque; +bool32 issymlink(const char *) libcesque; +char *commandv(const char *, char *, size_t) libcesque; +int __getcwd(char *, size_t) libcesque; int clone(void *, void *, size_t, int, void *, void *, void *, void *); -int fadvise(int, uint64_t, uint64_t, int); -int makedirs(const char *, unsigned); -int pivot_root(const char *, const char *); -int pledge(const char *, const char *); -int seccomp(unsigned, unsigned, void *); -int sys_iopl(int); -int sys_ioprio_get(int, int); -int sys_ioprio_set(int, int, int); -int sys_mlock(const void *, size_t); -int sys_mlock2(const void *, size_t, int); -int sys_mlockall(int); -int sys_munlock(const void *, size_t); -int sys_munlockall(void); -int sys_personality(uint64_t); -int sys_ptrace(int, ...); +int fadvise(int, uint64_t, uint64_t, int) libcesque; +int makedirs(const char *, unsigned) libcesque; +int pivot_root(const char *, const char *) libcesque; +int pledge(const char *, const char *) libcesque; +int seccomp(unsigned, unsigned, void *) libcesque; +int sys_iopl(int) libcesque; +int sys_ioprio_get(int, int) libcesque; +int sys_ioprio_set(int, int, int) libcesque; +int sys_mlock(const void *, size_t) libcesque; +int sys_mlock2(const void *, size_t, int) libcesque; +int sys_mlockall(int) libcesque; +int sys_munlock(const void *, size_t) libcesque; +int sys_munlockall(void) libcesque; +int sys_personality(uint64_t) libcesque; +int sys_ptrace(int, ...) libcesque; int sys_sysctl(const int *, unsigned, void *, size_t *, void *, size_t); -int tmpfd(void); -int touch(const char *, unsigned); -int unveil(const char *, const char *); -long ptrace(int, ...); -ssize_t copyfd(int, int, size_t); -ssize_t readansi(int, char *, size_t); -ssize_t tinyprint(int, const char *, ...) nullterminated(); -void shm_path_np(const char *, char[hasatleast 78]); +int tmpfd(void) libcesque; +int touch(const char *, unsigned) libcesque; +int unveil(const char *, const char *) libcesque; +long ptrace(int, ...) libcesque; +ssize_t copyfd(int, int, size_t) libcesque; +ssize_t readansi(int, char *, size_t) libcesque; +ssize_t tinyprint(int, const char *, ...) libcesque nullterminated(); +void shm_path_np(const char *, char[hasatleast 78]) libcesque; #endif /* _COSMO_SOURCE */ -int __wifstopped(int) pureconst; -int __wifcontinued(int) pureconst; -int __wifsignaled(int) pureconst; +int __wifstopped(int) libcesque pureconst; +int __wifcontinued(int) libcesque pureconst; +int __wifsignaled(int) libcesque pureconst; #if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE) #define lseek64 lseek diff --git a/libc/calls/fadvise.c b/libc/calls/fadvise.c index 799cd9fa5..fb191ff34 100644 --- a/libc/calls/fadvise.c +++ b/libc/calls/fadvise.c @@ -66,4 +66,4 @@ int fadvise(int fd, uint64_t offset, uint64_t len, int advice) { return rc; } -__strong_reference(fadvise, fadvise64); +__weak_reference(fadvise, fadvise64); diff --git a/libc/calls/fstat.c b/libc/calls/fstat.c index ca465f7b7..5c24cb190 100644 --- a/libc/calls/fstat.c +++ b/libc/calls/fstat.c @@ -60,4 +60,4 @@ int fstat(int fd, struct stat *st) { return rc; } -__strong_reference(fstat, fstat64); +__weak_reference(fstat, fstat64); diff --git a/libc/calls/fstatat.c b/libc/calls/fstatat.c index 626244bcd..5c164df3e 100644 --- a/libc/calls/fstatat.c +++ b/libc/calls/fstatat.c @@ -102,4 +102,4 @@ int fstatat(int dirfd, const char *path, struct stat *st, int flags) { return rc; } -__strong_reference(fstatat, fstatat64); +__weak_reference(fstatat, fstatat64); diff --git a/libc/calls/ftruncate.c b/libc/calls/ftruncate.c index a2c4804e9..e441d4617 100644 --- a/libc/calls/ftruncate.c +++ b/libc/calls/ftruncate.c @@ -87,4 +87,4 @@ int ftruncate(int fd, int64_t length) { return rc; } -__strong_reference(ftruncate, ftruncate64); +__weak_reference(ftruncate, ftruncate64); diff --git a/libc/calls/ipc.h b/libc/calls/ipc.h index 70c253ca5..9c9d4eb1b 100644 --- a/libc/calls/ipc.h +++ b/libc/calls/ipc.h @@ -12,7 +12,7 @@ COSMOPOLITAN_C_START_ -int ftok(const char *, int); +int ftok(const char *, int) libcesque; COSMOPOLITAN_C_END_ #endif /* COSMOPOLITAN_LIBC_CALLS_IPC_H_ */ diff --git a/libc/calls/lseek.c b/libc/calls/lseek.c index 0faa0d707..696889f2b 100644 --- a/libc/calls/lseek.c +++ b/libc/calls/lseek.c @@ -93,4 +93,4 @@ int64_t lseek(int fd, int64_t offset, int whence) { return rc; } -__strong_reference(lseek, lseek64); +__weak_reference(lseek, lseek64); diff --git a/libc/calls/lstat.c b/libc/calls/lstat.c index e14cbcb12..9208e621d 100644 --- a/libc/calls/lstat.c +++ b/libc/calls/lstat.c @@ -27,4 +27,4 @@ int lstat(const char *pathname, struct stat *st) { return fstatat(AT_FDCWD, pathname, st, AT_SYMLINK_NOFOLLOW); } -__strong_reference(lstat, lstat64); +__weak_reference(lstat, lstat64); diff --git a/libc/calls/makedev.h b/libc/calls/makedev.h index 8dc2b0049..dcd221026 100644 --- a/libc/calls/makedev.h +++ b/libc/calls/makedev.h @@ -1,9 +1,9 @@ #ifndef COSMOPOLITAN_LIBC_CALLS_MAKEDEV_H_ #define COSMOPOLITAN_LIBC_CALLS_MAKEDEV_H_ -uint64_t makedev(uint32_t, uint32_t); -uint32_t major(uint64_t); -uint32_t minor(uint64_t); +uint64_t makedev(uint32_t, uint32_t) libcesque; +uint32_t major(uint64_t) libcesque; +uint32_t minor(uint64_t) libcesque; #define major(x) major(x) #define minor(x) minor(x) diff --git a/libc/calls/mkostemp.c b/libc/calls/mkostemp.c index 4ce8a520b..8ab41df7f 100644 --- a/libc/calls/mkostemp.c +++ b/libc/calls/mkostemp.c @@ -40,4 +40,4 @@ int mkostemp(char *template, unsigned flags) { return openatemp(AT_FDCWD, template, 0, flags, 0); } -__strong_reference(mkostemp, mkostemp64); +__weak_reference(mkostemp, mkostemp64); diff --git a/libc/calls/mkostemps.c b/libc/calls/mkostemps.c index 2babb7cec..44c624a7e 100644 --- a/libc/calls/mkostemps.c +++ b/libc/calls/mkostemps.c @@ -41,4 +41,4 @@ int mkostemps(char *template, int suffixlen, unsigned flags) { return openatemp(AT_FDCWD, template, suffixlen, flags, 0); } -__strong_reference(mkostemps, mkostemps64); +__weak_reference(mkostemps, mkostemps64); diff --git a/libc/calls/mkstemp.c b/libc/calls/mkstemp.c index 97e61ef70..98ba79799 100644 --- a/libc/calls/mkstemp.c +++ b/libc/calls/mkstemp.c @@ -40,4 +40,4 @@ int mkstemp(char *template) { return openatemp(AT_FDCWD, template, 0, 0, 0); } -__strong_reference(mkstemp, mkstemp64); +__weak_reference(mkstemp, mkstemp64); diff --git a/libc/calls/mkstemps.c b/libc/calls/mkstemps.c index f253ea383..6d079b3b5 100644 --- a/libc/calls/mkstemps.c +++ b/libc/calls/mkstemps.c @@ -42,4 +42,4 @@ int mkstemps(char *template, int suffixlen) { return openatemp(AT_FDCWD, template, suffixlen, 0, 0); } -__strong_reference(mkstemps, mkstemps64); +__weak_reference(mkstemps, mkstemps64); diff --git a/libc/calls/open.c b/libc/calls/open.c index 3a4f29ea2..637041209 100644 --- a/libc/calls/open.c +++ b/libc/calls/open.c @@ -43,4 +43,4 @@ int open(const char *file, int flags, ...) { return openat(AT_FDCWD, file, flags, mode); } -__strong_reference(open, open64); +__weak_reference(open, open64); diff --git a/libc/calls/openat.c b/libc/calls/openat.c index ee96fbe7a..f7d15c473 100644 --- a/libc/calls/openat.c +++ b/libc/calls/openat.c @@ -241,4 +241,4 @@ int openat(int dirfd, const char *path, int flags, ...) { return rc; } -__strong_reference(openat, openat64); +__weak_reference(openat, openat64); diff --git a/libc/calls/pread.c b/libc/calls/pread.c index 5db4277b1..c13dcab36 100644 --- a/libc/calls/pread.c +++ b/libc/calls/pread.c @@ -85,4 +85,4 @@ ssize_t pread(int fd, void *buf, size_t size, int64_t offset) { return rc; } -__strong_reference(pread, pread64); +__weak_reference(pread, pread64); diff --git a/libc/calls/pwrite.c b/libc/calls/pwrite.c index 39cae011b..b777e06ff 100644 --- a/libc/calls/pwrite.c +++ b/libc/calls/pwrite.c @@ -85,4 +85,4 @@ ssize_t pwrite(int fd, const void *buf, size_t size, int64_t offset) { return rc; } -__strong_reference(pwrite, pwrite64); +__weak_reference(pwrite, pwrite64); diff --git a/libc/calls/stat.c b/libc/calls/stat.c index 552cbc4c8..0cc4d6a8b 100644 --- a/libc/calls/stat.c +++ b/libc/calls/stat.c @@ -34,4 +34,4 @@ int stat(const char *path, struct stat *st) { return fstatat(AT_FDCWD, path, st, 0); } -__strong_reference(stat, stat64); +__weak_reference(stat, stat64); diff --git a/libc/calls/statvfs.c b/libc/calls/statvfs.c index 9038951fe..277381f57 100644 --- a/libc/calls/statvfs.c +++ b/libc/calls/statvfs.c @@ -36,4 +36,4 @@ int statvfs(const char *path, struct statvfs *sv) { } } -__strong_reference(statvfs, statvfs64); +__weak_reference(statvfs, statvfs64); diff --git a/libc/calls/struct/cpuset.h b/libc/calls/struct/cpuset.h index 26e654bc9..e7f3b8dd0 100644 --- a/libc/calls/struct/cpuset.h +++ b/libc/calls/struct/cpuset.h @@ -9,33 +9,33 @@ typedef struct cpu_set_t { uint64_t __bits[16]; } cpu_set_t; -int sched_getcpu(void); -int sched_getaffinity(int, size_t, cpu_set_t *); -int sched_setaffinity(int, size_t, const cpu_set_t *); +int sched_getcpu(void) libcesque; +int sched_getaffinity(int, size_t, cpu_set_t *) libcesque; +int sched_setaffinity(int, size_t, const cpu_set_t *) libcesque; #define CPU_SET(i, s) ((s)->__bits[(i) / 64] |= 1ull << ((i) % 64)) #define CPU_CLR(i, s) ((s)->__bits[(i) / 64] &= ~(1ull << ((i) % 64))) #define CPU_ISSET(i, s) (!!((s)->__bits[(i) / 64] & (1ull << ((i) % 64)))) -void CPU_ZERO(cpu_set_t *); +void CPU_ZERO(cpu_set_t *) libcesque; #define CPU_ZERO(x) CPU_ZERO(x) -int CPU_COUNT(cpu_set_t *); +int CPU_COUNT(cpu_set_t *) libcesque; #define CPU_COUNT(x) CPU_COUNT(x) -int CPU_EQUAL(cpu_set_t *, cpu_set_t *); +int CPU_EQUAL(cpu_set_t *, cpu_set_t *) libcesque; #define CPU_EQUAL(x, y) CPU_EQUAL(x, y) -void CPU_AND(cpu_set_t *, cpu_set_t *, cpu_set_t *); +void CPU_AND(cpu_set_t *, cpu_set_t *, cpu_set_t *) libcesque; #define CPU_AND(x, y, z) CPU_AND(x, y, z) -void CPU_OR(cpu_set_t *, cpu_set_t *, cpu_set_t *); +void CPU_OR(cpu_set_t *, cpu_set_t *, cpu_set_t *) libcesque; #define CPU_OR(x, y, z) CPU_OR(x, y, z) -void CPU_XOR(cpu_set_t *, cpu_set_t *, cpu_set_t *); +void CPU_XOR(cpu_set_t *, cpu_set_t *, cpu_set_t *) libcesque; #define CPU_XOR(x, y, z) CPU_XOR(x, y, z) -int CPU_COUNT_S(size_t, const cpu_set_t *); +int CPU_COUNT_S(size_t, const cpu_set_t *) libcesque; #define CPU_COUNT_S(x, y) CPU_COUNT_S(x, y) #define CPU_ALLOC_SIZE(n) \ diff --git a/libc/calls/struct/dirent.h b/libc/calls/struct/dirent.h index 39c387979..2c8f1e724 100644 --- a/libc/calls/struct/dirent.h +++ b/libc/calls/struct/dirent.h @@ -13,19 +13,19 @@ struct dirent { /* linux getdents64 abi */ struct dirstream; typedef struct dirstream DIR; -DIR *fdopendir(int) __wur; -DIR *opendir(const char *) __wur; -int closedir(DIR *); -int dirfd(DIR *); -long telldir(DIR *); -struct dirent *readdir(DIR *); -int readdir_r(DIR *, struct dirent *, struct dirent **); -void rewinddir(DIR *); -void seekdir(DIR *, long); -int alphasort(const struct dirent **, const struct dirent **); -int versionsort(const struct dirent **, const struct dirent **); +DIR *fdopendir(int) libcesque __wur; +DIR *opendir(const char *) libcesque __wur; +int closedir(DIR *) libcesque; +int dirfd(DIR *) libcesque; +long telldir(DIR *) libcesque; +struct dirent *readdir(DIR *) libcesque; +int readdir_r(DIR *, struct dirent *, struct dirent **) libcesque; +void rewinddir(DIR *) libcesque; +void seekdir(DIR *, long) libcesque; +int alphasort(const struct dirent **, const struct dirent **) libcesque; +int versionsort(const struct dirent **, const struct dirent **) libcesque; int scandir(const char *, struct dirent ***, int (*)(const struct dirent *), - int (*)(const struct dirent **, const struct dirent **)); + int (*)(const struct dirent **, const struct dirent **)) libcesque; COSMOPOLITAN_C_END_ #endif /* COSMOPOLITAN_LIBC_CALLS_STRUCT_DIRENT_H_ */ diff --git a/libc/calls/struct/iovec.h b/libc/calls/struct/iovec.h index cc984c997..4d9d77a5f 100644 --- a/libc/calls/struct/iovec.h +++ b/libc/calls/struct/iovec.h @@ -7,11 +7,11 @@ struct iovec { size_t iov_len; }; -ssize_t preadv(int, struct iovec *, int, int64_t); -ssize_t pwritev(int, const struct iovec *, int, int64_t); -ssize_t readv(int, const struct iovec *, int); -ssize_t vmsplice(int, const struct iovec *, int64_t, uint32_t); -ssize_t writev(int, const struct iovec *, int); +ssize_t preadv(int, struct iovec *, int, int64_t) libcesque; +ssize_t pwritev(int, const struct iovec *, int, int64_t) libcesque; +ssize_t readv(int, const struct iovec *, int) libcesque; +ssize_t vmsplice(int, const struct iovec *, int64_t, uint32_t) libcesque; +ssize_t writev(int, const struct iovec *, int) libcesque; COSMOPOLITAN_C_END_ #endif /* COSMOPOLITAN_LIBC_CALLS_STRUCT_IOVEC_H_ */ diff --git a/libc/calls/struct/rlimit.h b/libc/calls/struct/rlimit.h index 4d6f10369..9e46d38d5 100644 --- a/libc/calls/struct/rlimit.h +++ b/libc/calls/struct/rlimit.h @@ -7,8 +7,8 @@ struct rlimit { uint64_t rlim_max; /* maximum limit in bytes */ }; -int getrlimit(int, struct rlimit *); -int setrlimit(int, const struct rlimit *); +int getrlimit(int, struct rlimit *) libcesque; +int setrlimit(int, const struct rlimit *) libcesque; COSMOPOLITAN_C_END_ #endif /* COSMOPOLITAN_LIBC_CALLS_STRUCT_RLIMIT_H_ */ diff --git a/libc/calls/struct/rusage.h b/libc/calls/struct/rusage.h index edd451aac..5e0058e33 100644 --- a/libc/calls/struct/rusage.h +++ b/libc/calls/struct/rusage.h @@ -22,10 +22,10 @@ struct rusage { int64_t ru_nivcsw; /* involuntary context switches */ }; -int getrusage(int, struct rusage *); -int wait3(int *, int, struct rusage *); -int wait4(int, int *, int, struct rusage *); -void rusage_add(struct rusage *, const struct rusage *); +int getrusage(int, struct rusage *) libcesque; +int wait3(int *, int, struct rusage *) libcesque; +int wait4(int, int *, int, struct rusage *) libcesque; +void rusage_add(struct rusage *, const struct rusage *) libcesque; COSMOPOLITAN_C_END_ #endif /* COSMOPOLITAN_LIBC_CALLS_STRUCT_RUSAGE_H_ */ diff --git a/libc/calls/struct/sched_param.h b/libc/calls/struct/sched_param.h index 69de69f35..0d65f65fa 100644 --- a/libc/calls/struct/sched_param.h +++ b/libc/calls/struct/sched_param.h @@ -7,13 +7,13 @@ struct sched_param { int32_t sched_priority; }; -int sched_get_priority_max(int); -int sched_get_priority_min(int); -int sched_getparam(int, struct sched_param *); -int sched_getscheduler(int); -int sched_rr_get_interval(int, struct timespec *); -int sched_setparam(int, const struct sched_param *); -int sched_setscheduler(int, int, const struct sched_param *); +int sched_get_priority_max(int) libcesque; +int sched_get_priority_min(int) libcesque; +int sched_getparam(int, struct sched_param *) libcesque; +int sched_getscheduler(int) libcesque; +int sched_rr_get_interval(int, struct timespec *) libcesque; +int sched_setparam(int, const struct sched_param *) libcesque; +int sched_setscheduler(int, int, const struct sched_param *) libcesque; COSMOPOLITAN_C_END_ #endif /* COSMOPOLITAN_LIBC_CALLS_STRUCT_SCHED_PARAM_H_ */ diff --git a/libc/calls/struct/sigaction.h b/libc/calls/struct/sigaction.h index 657a18fa9..49d0d6fe3 100644 --- a/libc/calls/struct/sigaction.h +++ b/libc/calls/struct/sigaction.h @@ -17,8 +17,8 @@ struct sigaction { sigset_t sa_mask; }; -sighandler_t signal(int, sighandler_t); -int sigaction(int, const struct sigaction *, struct sigaction *); +sighandler_t signal(int, sighandler_t) libcesque; +int sigaction(int, const struct sigaction *, struct sigaction *) libcesque; COSMOPOLITAN_C_END_ #endif /* COSMOPOLITAN_LIBC_CALLS_STRUCT_SIGACTION_H_ */ diff --git a/libc/calls/struct/sigaltstack.h b/libc/calls/struct/sigaltstack.h index fcff879c3..d72ab1dd2 100644 --- a/libc/calls/struct/sigaltstack.h +++ b/libc/calls/struct/sigaltstack.h @@ -10,7 +10,7 @@ struct sigaltstack { typedef struct sigaltstack stack_t; -int sigaltstack(const struct sigaltstack *, struct sigaltstack *); +int sigaltstack(const struct sigaltstack *, struct sigaltstack *) libcesque; COSMOPOLITAN_C_END_ #endif /* COSMOPOLITAN_LIBC_CALLS_STRUCT_SIGALTSTACK_H_ */ diff --git a/libc/calls/struct/siginfo.h b/libc/calls/struct/siginfo.h index 967d6d6ed..a321c9404 100644 --- a/libc/calls/struct/siginfo.h +++ b/libc/calls/struct/siginfo.h @@ -57,8 +57,8 @@ struct siginfo { typedef struct siginfo siginfo_t; #ifdef _COSMO_SOURCE -void __minicrash(int, siginfo_t *, void *); -char __is_stack_overflow(siginfo_t *, void *); +void __minicrash(int, siginfo_t *, void *) libcesque; +char __is_stack_overflow(siginfo_t *, void *) libcesque; #endif COSMOPOLITAN_C_END_ diff --git a/libc/calls/struct/statfs.h b/libc/calls/struct/statfs.h index 2c2e648fc..eddb23600 100644 --- a/libc/calls/struct/statfs.h +++ b/libc/calls/struct/statfs.h @@ -20,8 +20,8 @@ struct statfs { /* cosmo abi */ char f_fstypename[16]; }; -int statfs(const char *, struct statfs *); -int fstatfs(int, struct statfs *); +int statfs(const char *, struct statfs *) libcesque; +int fstatfs(int, struct statfs *) libcesque; COSMOPOLITAN_C_END_ #endif /* COSMOPOLITAN_LIBC_CALLS_STRUCT_STATFS_H_ */ diff --git a/libc/calls/struct/sysinfo.h b/libc/calls/struct/sysinfo.h index f839f81c2..980841d84 100644 --- a/libc/calls/struct/sysinfo.h +++ b/libc/calls/struct/sysinfo.h @@ -19,7 +19,7 @@ struct sysinfo { uint32_t mem_unit; /* ram stuff above is multiples of this */ }; -int sysinfo(struct sysinfo *); +int sysinfo(struct sysinfo *) libcesque; COSMOPOLITAN_C_END_ #endif /* COSMOPOLITAN_LIBC_CALLS_STRUCT_SYSINFO_H_ */ diff --git a/libc/calls/struct/timespec.h b/libc/calls/struct/timespec.h index 3b8b04c31..b49eadb60 100644 --- a/libc/calls/struct/timespec.h +++ b/libc/calls/struct/timespec.h @@ -8,35 +8,38 @@ struct timespec { int64_t tv_nsec; /* nanoseconds */ }; -int clock_getres(int, struct timespec *); -int clock_gettime(int, struct timespec *); -int clock_settime(int, const struct timespec *); +int clock_getres(int, struct timespec *) libcesque; +int clock_gettime(int, struct timespec *) libcesque; +int clock_settime(int, const struct timespec *) libcesque; int clock_nanosleep(int, int, const struct timespec *, struct timespec *); -int futimens(int, const struct timespec[2]); -int nanosleep(const struct timespec *, struct timespec *); -int utimensat(int, const char *, const struct timespec[2], int); -int timespec_getres(struct timespec *, int); -int timespec_get(struct timespec *, int); +int futimens(int, const struct timespec[2]) libcesque; +int nanosleep(const struct timespec *, struct timespec *) libcesque; +int utimensat(int, const char *, const struct timespec[2], int) libcesque; +int timespec_getres(struct timespec *, int) libcesque; +int timespec_get(struct timespec *, int) libcesque; #ifdef _COSMO_SOURCE /* cosmopolitan libc's non-posix timespec library removed by default due to emacs codebase clash */ #define timespec_zero ((struct timespec){0}) #define timespec_max ((struct timespec){0x7fffffffffffffff, 999999999}) -int timespec_cmp(struct timespec, struct timespec) pureconst; -int64_t timespec_tomicros(struct timespec) pureconst; -int64_t timespec_tomillis(struct timespec) pureconst; -int64_t timespec_tonanos(struct timespec) pureconst; -struct timespec timespec_add(struct timespec, struct timespec) pureconst; -struct timespec timespec_fromnanos(int64_t) pureconst; -struct timespec timespec_frommicros(int64_t) pureconst; -struct timespec timespec_frommillis(int64_t) pureconst; -struct timespec timespec_real(void); -struct timespec timespec_mono(void); -struct timespec timespec_sleep(struct timespec); -int timespec_sleep_until(struct timespec); -struct timespec timespec_sub(struct timespec, struct timespec) pureconst; -struct timespec timespec_subz(struct timespec, struct timespec) pureconst; +libcesque int timespec_cmp(struct timespec, struct timespec) pureconst; +libcesque int64_t timespec_tomicros(struct timespec) pureconst; +libcesque int64_t timespec_tomillis(struct timespec) pureconst; +libcesque int64_t timespec_tonanos(struct timespec) pureconst; +libcesque struct timespec timespec_add(struct timespec, + struct timespec) pureconst; +libcesque struct timespec timespec_fromnanos(int64_t) pureconst; +libcesque struct timespec timespec_frommicros(int64_t) pureconst; +libcesque struct timespec timespec_frommillis(int64_t) pureconst; +libcesque struct timespec timespec_real(void) libcesque; +libcesque struct timespec timespec_mono(void) libcesque; +libcesque struct timespec timespec_sleep(struct timespec) libcesque; +libcesque int timespec_sleep_until(struct timespec) libcesque; +libcesque struct timespec timespec_sub(struct timespec, + struct timespec) pureconst; +libcesque struct timespec timespec_subz(struct timespec, + struct timespec) pureconst; int sys_futex(int *, int, int, const struct timespec *, int *); static inline struct timespec timespec_fromseconds(int64_t __x) { return (struct timespec){__x}; diff --git a/libc/calls/struct/tms.h b/libc/calls/struct/tms.h index a6af1392b..1ac33786a 100644 --- a/libc/calls/struct/tms.h +++ b/libc/calls/struct/tms.h @@ -9,7 +9,7 @@ struct tms { int64_t tms_cstime; /* children kernelspace time */ }; -long times(struct tms *); +long times(struct tms *) libcesque; COSMOPOLITAN_C_END_ #endif /* COSMOPOLITAN_LIBC_CALLS_STRUCT_TMS_H_ */ diff --git a/libc/calls/struct/utsname.h b/libc/calls/struct/utsname.h index c2e1094d1..705e3ac20 100644 --- a/libc/calls/struct/utsname.h +++ b/libc/calls/struct/utsname.h @@ -14,7 +14,7 @@ struct utsname { /* cosmo abi */ char domainname[SYS_NMLN]; /* domain name */ }; -int uname(struct utsname *); +int uname(struct utsname *) libcesque; COSMOPOLITAN_C_END_ #endif /* COSMOPOLITAN_LIBC_CALLS_STRUCT_UTSNAME_H_ */ diff --git a/libc/calls/termios.h b/libc/calls/termios.h index afb9a1cf8..7517106a3 100644 --- a/libc/calls/termios.h +++ b/libc/calls/termios.h @@ -8,34 +8,34 @@ COSMOPOLITAN_C_START_ │ cosmopolitan § teletypewriter control ─╬─│┼ ╚────────────────────────────────────────────────────────────────────────────│*/ -int tcgetattr(int, struct termios *); -int tcsetattr(int, int, const struct termios *); +int tcgetattr(int, struct termios *) libcesque; +int tcsetattr(int, int, const struct termios *) libcesque; int openpty(int *, int *, char *, const struct termios *, - const struct winsize *) paramsnonnull((1, 2)); -int forkpty(int *, char *, const struct termios *, const struct winsize *) - paramsnonnull((1, 2)) __wur; -char *ptsname(int); -errno_t ptsname_r(int, char *, size_t); + const struct winsize *) libcesque paramsnonnull((1, 2)); +int forkpty(int *, char *, const struct termios *, + const struct winsize *) libcesque paramsnonnull((1, 2)) __wur; +char *ptsname(int) libcesque; +errno_t ptsname_r(int, char *, size_t) libcesque; -int grantpt(int); -int unlockpt(int); -int posix_openpt(int) __wur; +int grantpt(int) libcesque; +int unlockpt(int) libcesque; +int posix_openpt(int) libcesque __wur; -int tcdrain(int); -int tcgetsid(int); -int tcflow(int, int); -int tcflush(int, int); -int tcsetsid(int, int); -int tcsendbreak(int, int); -void cfmakeraw(struct termios *); -int cfsetspeed(struct termios *, uint32_t); -int cfsetospeed(struct termios *, uint32_t); -int cfsetispeed(struct termios *, uint32_t); -uint32_t cfgetospeed(const struct termios *); -uint32_t cfgetispeed(const struct termios *); -int tcsetwinsize(int, const struct winsize *); -int tcgetwinsize(int, struct winsize *); +int tcdrain(int) libcesque; +int tcgetsid(int) libcesque; +int tcflow(int, int) libcesque; +int tcflush(int, int) libcesque; +int tcsetsid(int, int) libcesque; +int tcsendbreak(int, int) libcesque; +void cfmakeraw(struct termios *) libcesque; +int cfsetspeed(struct termios *, uint32_t) libcesque; +int cfsetospeed(struct termios *, uint32_t) libcesque; +int cfsetispeed(struct termios *, uint32_t) libcesque; +uint32_t cfgetospeed(const struct termios *) libcesque; +uint32_t cfgetispeed(const struct termios *) libcesque; +int tcsetwinsize(int, const struct winsize *) libcesque; +int tcgetwinsize(int, struct winsize *) libcesque; COSMOPOLITAN_C_END_ #endif /* COSMOPOLITAN_LIBC_CALLS_TERMIOS_H_ */ diff --git a/libc/complex.h b/libc/complex.h index e7fb8ad95..119ceb329 100644 --- a/libc/complex.h +++ b/libc/complex.h @@ -6,80 +6,80 @@ COSMOPOLITAN_C_START_ #define complex _Complex #define imaginary _Imaginary -double cabs(complex double); -double carg(complex double); -double cimag(complex double); -double creal(complex double); +double cabs(complex double) libcesque; +double carg(complex double) libcesque; +double cimag(complex double) libcesque; +double creal(complex double) libcesque; -float cabsf(complex float); -float cargf(complex float); -float cimagf(complex float); -float crealf(complex float); +float cabsf(complex float) libcesque; +float cargf(complex float) libcesque; +float cimagf(complex float) libcesque; +float crealf(complex float) libcesque; -long double cabsl(complex long double); -long double cargl(complex long double); -long double cimagl(complex long double); -long double creall(complex long double); +long double cabsl(complex long double) libcesque; +long double cargl(complex long double) libcesque; +long double cimagl(complex long double) libcesque; +long double creall(complex long double) libcesque; -complex double cacos(complex double); -complex double cacosh(complex double); -complex double casin(complex double); -complex double casinh(complex double); -complex double catan(complex double); -complex double catanh(complex double); -complex double ccos(complex double); -complex double ccosh(complex double); -complex double cexp(complex double); -complex double cexp2(complex double); -complex double clog(complex double); -complex double conj(complex double); -complex double cpow(complex double, complex double); -complex double cproj(complex double); -complex double csin(complex double); -complex double csinh(complex double); -complex double csqrt(complex double); -complex double ctan(complex double); -complex double ctanh(complex double); +complex double cacos(complex double) libcesque; +complex double cacosh(complex double) libcesque; +complex double casin(complex double) libcesque; +complex double casinh(complex double) libcesque; +complex double catan(complex double) libcesque; +complex double catanh(complex double) libcesque; +complex double ccos(complex double) libcesque; +complex double ccosh(complex double) libcesque; +complex double cexp(complex double) libcesque; +complex double cexp2(complex double) libcesque; +complex double clog(complex double) libcesque; +complex double conj(complex double) libcesque; +complex double cpow(complex double, complex double) libcesque; +complex double cproj(complex double) libcesque; +complex double csin(complex double) libcesque; +complex double csinh(complex double) libcesque; +complex double csqrt(complex double) libcesque; +complex double ctan(complex double) libcesque; +complex double ctanh(complex double) libcesque; -complex float cacosf(complex float); -complex float cacoshf(complex float); -complex float casinf(complex float); -complex float casinhf(complex float); -complex float catanf(complex float); -complex float catanhf(complex float); -complex float ccosf(complex float); -complex float ccoshf(complex float); -complex float cexpf(complex float); -complex float cexp2f(complex float); -complex float clogf(complex float); -complex float conjf(complex float); -complex float cpowf(complex float, complex float); -complex float cprojf(complex float); -complex float csinf(complex float); -complex float csinhf(complex float); -complex float csqrtf(complex float); -complex float ctanf(complex float); -complex float ctanhf(complex float); +complex float cacosf(complex float) libcesque; +complex float cacoshf(complex float) libcesque; +complex float casinf(complex float) libcesque; +complex float casinhf(complex float) libcesque; +complex float catanf(complex float) libcesque; +complex float catanhf(complex float) libcesque; +complex float ccosf(complex float) libcesque; +complex float ccoshf(complex float) libcesque; +complex float cexpf(complex float) libcesque; +complex float cexp2f(complex float) libcesque; +complex float clogf(complex float) libcesque; +complex float conjf(complex float) libcesque; +complex float cpowf(complex float, complex float) libcesque; +complex float cprojf(complex float) libcesque; +complex float csinf(complex float) libcesque; +complex float csinhf(complex float) libcesque; +complex float csqrtf(complex float) libcesque; +complex float ctanf(complex float) libcesque; +complex float ctanhf(complex float) libcesque; -complex long double cprojl(complex long double); -complex long double csinhl(complex long double); -complex long double csinl(complex long double); -complex long double csqrtl(complex long double); -complex long double ctanhl(complex long double); -complex long double ctanl(complex long double); -complex long double cacoshl(complex long double); -complex long double cacosl(complex long double); -complex long double casinhl(complex long double); -complex long double casinl(complex long double); -complex long double catanhl(complex long double); -complex long double catanl(complex long double); -complex long double ccoshl(complex long double); -complex long double ccosl(complex long double); -complex long double cexpl(complex long double); -complex long double cexp2l(complex long double); -complex long double clogl(complex long double); -complex long double conjl(complex long double); -complex long double cpowl(complex long double, complex long double); +complex long double cprojl(complex long double) libcesque; +complex long double csinhl(complex long double) libcesque; +complex long double csinl(complex long double) libcesque; +complex long double csqrtl(complex long double) libcesque; +complex long double ctanhl(complex long double) libcesque; +complex long double ctanl(complex long double) libcesque; +complex long double cacoshl(complex long double) libcesque; +complex long double cacosl(complex long double) libcesque; +complex long double casinhl(complex long double) libcesque; +complex long double casinl(complex long double) libcesque; +complex long double catanhl(complex long double) libcesque; +complex long double catanl(complex long double) libcesque; +complex long double ccoshl(complex long double) libcesque; +complex long double ccosl(complex long double) libcesque; +complex long double cexpl(complex long double) libcesque; +complex long double cexp2l(complex long double) libcesque; +complex long double clogl(complex long double) libcesque; +complex long double conjl(complex long double) libcesque; +complex long double cpowl(complex long double, complex long double) libcesque; #ifndef __cplusplus #define __CIMAG(x, t) \ diff --git a/libc/cosmo.h b/libc/cosmo.h index 60f4f4112..35c1a47eb 100644 --- a/libc/cosmo.h +++ b/libc/cosmo.h @@ -3,7 +3,7 @@ COSMOPOLITAN_C_START_ errno_t cosmo_once(_Atomic(uint32_t) *, void (*)(void)); -int systemvpe(const char *, char *const[], char *const[]); +int systemvpe(const char *, char *const[], char *const[]) libcesque; COSMOPOLITAN_C_END_ #endif /* COSMOPOLITAN_LIBC_COSMO_H_ */ diff --git a/libc/cxxabi.h b/libc/cxxabi.h index 4e3d9a4a9..4d33c99d1 100644 --- a/libc/cxxabi.h +++ b/libc/cxxabi.h @@ -6,7 +6,7 @@ union CxaGuardValue; char *__cxa_demangle(const char *, char *, size_t *, int *); int __cxa_atexit(void (*)(void *), void *, void *) paramsnonnull((1)) dontthrow; -int __cxa_guard_acquire(union CxaGuardValue *); +int __cxa_guard_acquire(union CxaGuardValue *) libcesque; int __cxa_thread_atexit(void *, void *, void *) dontthrow; void __cxa_finalize(void *); void __cxa_guard_abort(union CxaGuardValue *) dontthrow; diff --git a/libc/dlopen/dlfcn.h b/libc/dlopen/dlfcn.h index 2514d908d..57eecd2f8 100644 --- a/libc/dlopen/dlfcn.h +++ b/libc/dlopen/dlfcn.h @@ -11,17 +11,17 @@ COSMOPOLITAN_C_START_ #define RTLD_NEXT ((void *)-1) #define RTLD_DEFAULT ((void *)0) -char *dlerror(void); -void *dlopen(const char *, int); -void *dlsym(void *, const char *); -int dlclose(void *); +char *dlerror(void) libcesque; +void *dlopen(const char *, int) libcesque; +void *dlsym(void *, const char *) libcesque; +int dlclose(void *) libcesque; #ifdef _COSMO_SOURCE -char *cosmo_dlerror(void); -void *cosmo_dlopen(const char *, int); -void *cosmo_dlsym(void *, const char *); -void *cosmo_dltramp(void *); -int cosmo_dlclose(void *); +char *cosmo_dlerror(void) libcesque; +void *cosmo_dlopen(const char *, int) libcesque; +void *cosmo_dlsym(void *, const char *) libcesque; +void *cosmo_dltramp(void *) libcesque; +int cosmo_dlclose(void *) libcesque; #endif COSMOPOLITAN_C_END_ diff --git a/libc/fmt/conv.h b/libc/fmt/conv.h index 9fe3f1c7c..ff66fb41d 100644 --- a/libc/fmt/conv.h +++ b/libc/fmt/conv.h @@ -5,39 +5,38 @@ COSMOPOLITAN_C_START_ int abs(int) libcesque pureconst; long labs(long) libcesque pureconst; long long llabs(long long) libcesque pureconst; -intmax_t imaxabs(intmax_t) -libcesque pureconst; +libcesque intmax_t imaxabs(intmax_t) pureconst; int atoi(const char *) paramsnonnull() libcesque; long atol(const char *) paramsnonnull() libcesque; long long atoll(const char *) paramsnonnull() libcesque; -unsigned long strtoul(const char *, char **, int) paramsnonnull((1)); -long long strtoll(const char *, char **, int) paramsnonnull((1)); +unsigned long strtoul(const char *, char **, int) libcesque paramsnonnull((1)); +long long strtoll(const char *, char **, int) libcesque paramsnonnull((1)); unsigned long long strtoull(const char *, char **, int) paramsnonnull((1)); -intmax_t strtoimax(const char *, char **, int) paramsnonnull((1)); -uintmax_t strtoumax(const char *, char **, int) paramsnonnull((1)); -intmax_t wcstoimax(const wchar_t *, wchar_t **, int); -uintmax_t wcstoumax(const wchar_t *, wchar_t **, int); -long wcstol(const wchar_t *, wchar_t **, int); -unsigned long wcstoul(const wchar_t *, wchar_t **, int); +intmax_t strtoimax(const char *, char **, int) libcesque paramsnonnull((1)); +uintmax_t strtoumax(const char *, char **, int) libcesque paramsnonnull((1)); +intmax_t wcstoimax(const wchar_t *, wchar_t **, int) libcesque; +uintmax_t wcstoumax(const wchar_t *, wchar_t **, int) libcesque; +long wcstol(const wchar_t *, wchar_t **, int) libcesque; +unsigned long wcstoul(const wchar_t *, wchar_t **, int) libcesque; long strtol(const char *, char **, int) paramsnonnull((1)) libcesque; long sizetol(const char *, long) paramsnonnull() libcesque; -char *sizefmt(char *, uint64_t, uint64_t); -long long wcstoll(const wchar_t *, wchar_t **, int); -unsigned long long wcstoull(const wchar_t *, wchar_t **, int); -int wcscoll(const wchar_t *, const wchar_t *); -size_t wcsxfrm(wchar_t *, const wchar_t *, size_t); +char *sizefmt(char *, uint64_t, uint64_t) libcesque; +long long wcstoll(const wchar_t *, wchar_t **, int) libcesque; +unsigned long long wcstoull(const wchar_t *, wchar_t **, int) libcesque; +int wcscoll(const wchar_t *, const wchar_t *) libcesque; +size_t wcsxfrm(wchar_t *, const wchar_t *, size_t) libcesque; -double atof(const char *); -float strtof(const char *, char **); -double strtod(const char *, char **); -long double strtold(const char *, char **); -float wcstof(const wchar_t *, wchar_t **); -double wcstod(const wchar_t *, wchar_t **); -long double wcstold(const wchar_t *, wchar_t **); +double atof(const char *) libcesque; +float strtof(const char *, char **) libcesque; +double strtod(const char *, char **) libcesque; +long double strtold(const char *, char **) libcesque; +float wcstof(const wchar_t *, wchar_t **) libcesque; +double wcstod(const wchar_t *, wchar_t **) libcesque; +long double wcstold(const wchar_t *, wchar_t **) libcesque; #ifdef _COSMO_SOURCE -char *stripext(char *); -char *stripexts(char *); +char *stripext(char *) libcesque; +char *stripexts(char *) libcesque; #endif /* _COSMO_SOURCE */ typedef struct { @@ -60,10 +59,10 @@ typedef struct { intmax_t rem; } imaxdiv_t; -div_t div(int, int) pureconst; -ldiv_t ldiv(long, long) pureconst; -lldiv_t lldiv(long long, long long) pureconst; -imaxdiv_t imaxdiv(intmax_t, intmax_t) pureconst; +libcesque div_t div(int, int) pureconst; +libcesque ldiv_t ldiv(long, long) pureconst; +libcesque lldiv_t lldiv(long long, long long) pureconst; +libcesque imaxdiv_t imaxdiv(intmax_t, intmax_t) pureconst; #if __STDC_VERSION__ + 0 >= 199901L #define div(num, den) ((div_t){(num) / (den), (num) % (den)}) diff --git a/libc/fmt/itoa.h b/libc/fmt/itoa.h index 10d976723..0ed808f07 100644 --- a/libc/fmt/itoa.h +++ b/libc/fmt/itoa.h @@ -22,24 +22,24 @@ COSMOPOLITAN_C_START_ #define uint64toarray_fixed16 __uint64toarray_fixed16 #define uint64toarray_radix8 __uint64toarray_radix8 -unsigned LengthInt64(int64_t) pureconst; -unsigned LengthUint64(uint64_t) pureconst; -unsigned LengthInt64Thousands(int64_t) pureconst; -unsigned LengthUint64Thousands(uint64_t) pureconst; -char *FormatInt32(char[hasatleast 12], int32_t); -char *FormatUint32(char[hasatleast 12], uint32_t); -char *FormatInt64(char[hasatleast 21], int64_t); -char *FormatUint64(char[hasatleast 21], uint64_t); -char *FormatInt64Thousands(char[hasatleast 27], int64_t); -char *FormatUint64Thousands(char[hasatleast 27], uint64_t); -char *FormatOctal32(char[hasatleast 13], uint32_t, bool32); -char *FormatOctal64(char[hasatleast 24], uint64_t, bool32); -char *FormatBinary64(char[hasatleast 67], uint64_t, char); -char *FormatHex64(char[hasatleast 19], uint64_t, char); -char *FormatFlex64(char[hasatleast 24], int64_t, char); -size_t uint64toarray_radix16(uint64_t, char[hasatleast 17]); -size_t uint64toarray_fixed16(uint64_t, char[hasatleast 17], uint8_t); -size_t uint64toarray_radix8(uint64_t, char[hasatleast 24]); +libcesque unsigned LengthInt64(int64_t) pureconst; +libcesque unsigned LengthUint64(uint64_t) pureconst; +libcesque unsigned LengthInt64Thousands(int64_t) pureconst; +libcesque unsigned LengthUint64Thousands(uint64_t) pureconst; +libcesque char *FormatInt32(char[hasatleast 12], int32_t); +libcesque char *FormatUint32(char[hasatleast 12], uint32_t); +libcesque char *FormatInt64(char[hasatleast 21], int64_t); +libcesque char *FormatUint64(char[hasatleast 21], uint64_t); +libcesque char *FormatInt64Thousands(char[hasatleast 27], int64_t); +libcesque char *FormatUint64Thousands(char[hasatleast 27], uint64_t); +libcesque char *FormatOctal32(char[hasatleast 13], uint32_t, bool32); +libcesque char *FormatOctal64(char[hasatleast 24], uint64_t, bool32); +libcesque char *FormatBinary64(char[hasatleast 67], uint64_t, char); +libcesque char *FormatHex64(char[hasatleast 19], uint64_t, char); +libcesque char *FormatFlex64(char[hasatleast 24], int64_t, char); +libcesque size_t uint64toarray_radix16(uint64_t, char[hasatleast 17]); +libcesque size_t uint64toarray_fixed16(uint64_t, char[hasatleast 17], uint8_t); +libcesque size_t uint64toarray_radix8(uint64_t, char[hasatleast 24]); COSMOPOLITAN_C_END_ #endif /* _COSMO_SOURCE */ diff --git a/libc/fmt/leb128.h b/libc/fmt/leb128.h index f01bc1e7f..8da59b5d3 100644 --- a/libc/fmt/leb128.h +++ b/libc/fmt/leb128.h @@ -9,11 +9,11 @@ COSMOPOLITAN_C_START_ #define unzleb64 __unzleb64 #define unuleb64 __unuleb64 -char *sleb64(char *, int64_t); -char *zleb64(char[hasatleast 10], int64_t); -char *uleb64(char[hasatleast 10], uint64_t); -int unzleb64(const char *, size_t, int64_t *); -int unuleb64(const char *, size_t, uint64_t *); +char *sleb64(char *, int64_t) libcesque; +char *zleb64(char[hasatleast 10], int64_t) libcesque; +char *uleb64(char[hasatleast 10], uint64_t) libcesque; +int unzleb64(const char *, size_t, int64_t *) libcesque; +int unuleb64(const char *, size_t, uint64_t *) libcesque; COSMOPOLITAN_C_END_ #endif /* _COSMO_SOURCE */ diff --git a/libc/fmt/libgen.h b/libc/fmt/libgen.h index 96dcb98e4..5453e2cad 100644 --- a/libc/fmt/libgen.h +++ b/libc/fmt/libgen.h @@ -2,8 +2,8 @@ #define COSMOPOLITAN_LIBC_FMT_LIBGEN_H_ COSMOPOLITAN_C_START_ -char *dirname(char *); -char *basename(char *); +char *dirname(char *) libcesque; +char *basename(char *) libcesque; COSMOPOLITAN_C_END_ #endif /* COSMOPOLITAN_LIBC_FMT_LIBGEN_H_ */ diff --git a/libc/fmt/wintime.internal.h b/libc/fmt/wintime.internal.h index 1c067abb8..f0fbcd458 100644 --- a/libc/fmt/wintime.internal.h +++ b/libc/fmt/wintime.internal.h @@ -9,13 +9,13 @@ COSMOPOLITAN_C_START_ -int64_t DosDateTimeToUnix(uint32_t, uint32_t) pureconst; -int64_t TimeSpecToWindowsTime(struct timespec) pureconst; -int64_t TimeValToWindowsTime(struct timeval) pureconst; -struct timespec WindowsDurationToTimeSpec(int64_t) pureconst; -struct timespec WindowsTimeToTimeSpec(int64_t) pureconst; -struct timeval WindowsDurationToTimeVal(int64_t) pureconst; -struct timeval WindowsTimeToTimeVal(int64_t) pureconst; +libcesque int64_t DosDateTimeToUnix(uint32_t, uint32_t) pureconst; +libcesque int64_t TimeSpecToWindowsTime(struct timespec) pureconst; +libcesque int64_t TimeValToWindowsTime(struct timeval) pureconst; +libcesque struct timespec WindowsDurationToTimeSpec(int64_t) pureconst; +libcesque struct timespec WindowsTimeToTimeSpec(int64_t) pureconst; +libcesque struct timeval WindowsDurationToTimeVal(int64_t) pureconst; +libcesque struct timeval WindowsTimeToTimeVal(int64_t) pureconst; #define MakeFileTime(x) \ ({ \ diff --git a/libc/intrin/bsf.h b/libc/intrin/bsf.h index 241beb54f..69931599f 100644 --- a/libc/intrin/bsf.h +++ b/libc/intrin/bsf.h @@ -2,9 +2,9 @@ #define COSMOPOLITAN_LIBC_NEXGEN32E_BSF_H_ COSMOPOLITAN_C_START_ -int _bsf(int) pureconst; -int _bsfl(long) pureconst; -int _bsfll(long long) pureconst; +libcesque int _bsf(int) pureconst; +libcesque int _bsfl(long) pureconst; +libcesque int _bsfll(long long) pureconst; #if defined(__GNUC__) && !defined(__STRICT_ANSI__) #define _bsf(x) __builtin_ctz(x) diff --git a/libc/intrin/bsr.h b/libc/intrin/bsr.h index 0229b7e82..8004eb9ee 100644 --- a/libc/intrin/bsr.h +++ b/libc/intrin/bsr.h @@ -2,9 +2,9 @@ #define COSMOPOLITAN_LIBC_NEXGEN32E_BSR_H_ COSMOPOLITAN_C_START_ -int _bsr(int) pureconst; -int _bsrl(long) pureconst; -int _bsrll(long long) pureconst; +libcesque int _bsr(int) pureconst; +libcesque int _bsrl(long) pureconst; +libcesque int _bsrll(long long) pureconst; #if defined(__GNUC__) && !defined(__STRICT_ANSI__) #define _bsr(x) (__builtin_clz(x) ^ (sizeof(int) * 8 - 1)) diff --git a/libc/intrin/bswap.h b/libc/intrin/bswap.h index c05cb668f..05f55629d 100644 --- a/libc/intrin/bswap.h +++ b/libc/intrin/bswap.h @@ -2,9 +2,9 @@ #define COSMOPOLITAN_LIBC_BITS_BSWAP_H_ COSMOPOLITAN_C_START_ -uint16_t bswap_16(uint16_t) pureconst; -uint32_t bswap_32(uint32_t) pureconst; -uint64_t bswap_64(uint64_t) pureconst; +libcesque uint16_t bswap_16(uint16_t) pureconst; +libcesque uint32_t bswap_32(uint32_t) pureconst; +libcesque uint64_t bswap_64(uint64_t) pureconst; #if defined(__GNUC__) && !defined(__STRICT_ANSI__) #define bswap_16(x) __builtin_bswap16(x) diff --git a/libc/intrin/cxaatexit.internal.h b/libc/intrin/cxaatexit.internal.h index be417acb7..45b566b70 100644 --- a/libc/intrin/cxaatexit.internal.h +++ b/libc/intrin/cxaatexit.internal.h @@ -13,15 +13,15 @@ struct CxaAtexitBlocks { void *arg; void *pred; } p[32]; - } * p, root; + } *p, root; }; extern struct CxaAtexitBlocks __cxa_blocks; -void __cxa_lock(void); -void __cxa_unlock(void); -void __cxa_thread_finalize(void); -void __cxa_printexits(FILE *, void *); +void __cxa_lock(void) libcesque; +void __cxa_unlock(void) libcesque; +void __cxa_thread_finalize(void) libcesque; +void __cxa_printexits(FILE *, void *) libcesque; int __cxa_thread_atexit_impl(void *, void *, void *); COSMOPOLITAN_C_END_ diff --git a/libc/intrin/describebacktrace.internal.h b/libc/intrin/describebacktrace.internal.h index 8186bb071..407057578 100644 --- a/libc/intrin/describebacktrace.internal.h +++ b/libc/intrin/describebacktrace.internal.h @@ -4,7 +4,7 @@ #include "libc/nexgen32e/stackframe.h" COSMOPOLITAN_C_START_ -const char *DescribeBacktrace(char[160], struct StackFrame *); +const char *DescribeBacktrace(char[160], struct StackFrame *) libcesque; #define DescribeBacktrace(x) DescribeBacktrace(alloca(160), x) COSMOPOLITAN_C_END_ diff --git a/libc/intrin/describeflags.internal.h b/libc/intrin/describeflags.internal.h index 389391b56..6c3ccb58c 100644 --- a/libc/intrin/describeflags.internal.h +++ b/libc/intrin/describeflags.internal.h @@ -9,66 +9,66 @@ struct thatispacked DescribeFlags { }; const char *DescribeFlags(char *, size_t, const struct DescribeFlags *, size_t, - const char *, unsigned); + const char *, unsigned) libcesque; -const char *DescribeArchPrctlCode(char[12], int); -const char *DescribeCancelState(char[12], int, int *); -const char *DescribeCapability(char[32], int); -const char *DescribeClockName(char[32], int); -const char *DescribeControlKeyState(char[64], uint32_t); -const char *DescribeDirfd(char[12], int); -const char *DescribeDnotifyFlags(char[80], int); -const char *DescribeErrno(char[30], int); -const char *DescribeFcntlCmd(char[20], int); -const char *DescribeFlockType(char[12], int); -const char *DescribeFrame(char[32], int); -const char *DescribeFutexOp(char[64], int); -const char *DescribeHow(char[12], int); -const char *DescribeInOutInt64(char[23], ssize_t, int64_t *); -const char *DescribeItimer(char[12], int); -const char *DescribeMapFlags(char[64], int); -const char *DescribeMapping(char[8], int, int); -const char *DescribeNtConsoleInFlags(char[256], uint32_t); -const char *DescribeNtConsoleOutFlags(char[128], uint32_t); -const char *DescribeNtCreationDisposition(uint32_t); -const char *DescribeNtFileAccessFlags(char[512], uint32_t); -const char *DescribeNtFileFlagAttr(char[256], uint32_t); -const char *DescribeNtFileMapFlags(char[64], uint32_t); -const char *DescribeNtFileShareFlags(char[64], uint32_t); -const char *DescribeNtFiletypeFlags(char[64], uint32_t); -const char *DescribeNtLockFileFlags(char[64], uint32_t); -const char *DescribeNtMovFileInpFlags(char[256], uint32_t); -const char *DescribeNtPageFlags(char[64], uint32_t); -const char *DescribeNtPipeModeFlags(char[64], uint32_t); -const char *DescribeNtPipeOpenFlags(char[64], uint32_t); -const char *DescribeNtProcAccessFlags(char[256], uint32_t); -const char *DescribeNtStartFlags(char[128], uint32_t); -const char *DescribeNtSymlinkFlags(char[64], uint32_t); -const char *DescribeOpenFlags(char[128], int); -const char *DescribeOpenMode(char[15], int, int); -const char *DescribePersonalityFlags(char[128], int); -const char *DescribePollFlags(char[64], int); -const char *DescribePrctlOperation(int); -const char *DescribeProtFlags(char[48], int); -const char *DescribePtrace(char[12], int); -const char *DescribePtraceEvent(char[32], int); -const char *DescribeRemapFlags(char[48], int); -const char *DescribeRlimitName(char[20], int); -const char *DescribeSchedPolicy(char[48], int); -const char *DescribeSeccompOperation(int); -const char *DescribeSiCode(char[20], int, int); -const char *DescribeSleepFlags(char[16], int); -const char *DescribeSockLevel(char[12], int); -const char *DescribeSockOptname(char[32], int, int); -const char *DescribeSocketFamily(char[12], int); -const char *DescribeSocketProtocol(char[12], int); -const char *DescribeSocketType(char[64], int); -const char *DescribeStdioState(char[12], int); -const char *DescribeStringList(char[300], char *const[]); -const char *DescribeThreadCreateFlags(char[64], uint32_t); -const char *DescribeVirtualKeyCode(char[32], uint32_t); -const char *DescribeWhence(char[12], int); -const char *DescribeWhichPrio(char[12], int); +const char *DescribeArchPrctlCode(char[12], int) libcesque; +const char *DescribeCancelState(char[12], int, int *) libcesque; +const char *DescribeCapability(char[32], int) libcesque; +const char *DescribeClockName(char[32], int) libcesque; +const char *DescribeControlKeyState(char[64], uint32_t) libcesque; +const char *DescribeDirfd(char[12], int) libcesque; +const char *DescribeDnotifyFlags(char[80], int) libcesque; +const char *DescribeErrno(char[30], int) libcesque; +const char *DescribeFcntlCmd(char[20], int) libcesque; +const char *DescribeFlockType(char[12], int) libcesque; +const char *DescribeFrame(char[32], int) libcesque; +const char *DescribeFutexOp(char[64], int) libcesque; +const char *DescribeHow(char[12], int) libcesque; +const char *DescribeInOutInt64(char[23], ssize_t, int64_t *) libcesque; +const char *DescribeItimer(char[12], int) libcesque; +const char *DescribeMapFlags(char[64], int) libcesque; +const char *DescribeMapping(char[8], int, int) libcesque; +const char *DescribeNtConsoleInFlags(char[256], uint32_t) libcesque; +const char *DescribeNtConsoleOutFlags(char[128], uint32_t) libcesque; +const char *DescribeNtCreationDisposition(uint32_t) libcesque; +const char *DescribeNtFileAccessFlags(char[512], uint32_t) libcesque; +const char *DescribeNtFileFlagAttr(char[256], uint32_t) libcesque; +const char *DescribeNtFileMapFlags(char[64], uint32_t) libcesque; +const char *DescribeNtFileShareFlags(char[64], uint32_t) libcesque; +const char *DescribeNtFiletypeFlags(char[64], uint32_t) libcesque; +const char *DescribeNtLockFileFlags(char[64], uint32_t) libcesque; +const char *DescribeNtMovFileInpFlags(char[256], uint32_t) libcesque; +const char *DescribeNtPageFlags(char[64], uint32_t) libcesque; +const char *DescribeNtPipeModeFlags(char[64], uint32_t) libcesque; +const char *DescribeNtPipeOpenFlags(char[64], uint32_t) libcesque; +const char *DescribeNtProcAccessFlags(char[256], uint32_t) libcesque; +const char *DescribeNtStartFlags(char[128], uint32_t) libcesque; +const char *DescribeNtSymlinkFlags(char[64], uint32_t) libcesque; +const char *DescribeOpenFlags(char[128], int) libcesque; +const char *DescribeOpenMode(char[15], int, int) libcesque; +const char *DescribePersonalityFlags(char[128], int) libcesque; +const char *DescribePollFlags(char[64], int) libcesque; +const char *DescribePrctlOperation(int) libcesque; +const char *DescribeProtFlags(char[48], int) libcesque; +const char *DescribePtrace(char[12], int) libcesque; +const char *DescribePtraceEvent(char[32], int) libcesque; +const char *DescribeRemapFlags(char[48], int) libcesque; +const char *DescribeRlimitName(char[20], int) libcesque; +const char *DescribeSchedPolicy(char[48], int) libcesque; +const char *DescribeSeccompOperation(int) libcesque; +const char *DescribeSiCode(char[20], int, int) libcesque; +const char *DescribeSleepFlags(char[16], int) libcesque; +const char *DescribeSockLevel(char[12], int) libcesque; +const char *DescribeSockOptname(char[32], int, int) libcesque; +const char *DescribeSocketFamily(char[12], int) libcesque; +const char *DescribeSocketProtocol(char[12], int) libcesque; +const char *DescribeSocketType(char[64], int) libcesque; +const char *DescribeStdioState(char[12], int) libcesque; +const char *DescribeStringList(char[300], char *const[]) libcesque; +const char *DescribeThreadCreateFlags(char[64], uint32_t) libcesque; +const char *DescribeVirtualKeyCode(char[32], uint32_t) libcesque; +const char *DescribeWhence(char[12], int) libcesque; +const char *DescribeWhichPrio(char[12], int) libcesque; #define DescribeArchPrctlCode(x) DescribeArchPrctlCode(alloca(12), x) #define DescribeCancelState(x, y) DescribeCancelState(alloca(12), x, y) diff --git a/libc/intrin/directmap.internal.h b/libc/intrin/directmap.internal.h index bfe6b0c70..a3eefc30a 100644 --- a/libc/intrin/directmap.internal.h +++ b/libc/intrin/directmap.internal.h @@ -15,8 +15,8 @@ struct DirectMap { struct DirectMap sys_mmap(void *, size_t, int, int, int, int64_t); struct DirectMap sys_mmap_nt(void *, size_t, int, int, int, int64_t); struct DirectMap sys_mmap_metal(void *, size_t, int, int, int, int64_t); -int sys_munmap_metal(void *, size_t); -int __prot2nt(int, int); +int sys_munmap_metal(void *, size_t) libcesque; +int __prot2nt(int, int) libcesque; COSMOPOLITAN_C_END_ #endif /* COSMOPOLITAN_LIBC_INTRIN_DIRECTMAP_H_ */ diff --git a/libc/intrin/extend.internal.h b/libc/intrin/extend.internal.h index 224e37fd1..a32440c59 100644 --- a/libc/intrin/extend.internal.h +++ b/libc/intrin/extend.internal.h @@ -2,7 +2,7 @@ #define COSMOPOLITAN_LIBC_CALLS_EXTEND_INTERNAL_H_ COSMOPOLITAN_C_START_ -void *_extend(void *, size_t, void *, int, intptr_t); +void *_extend(void *, size_t, void *, int, intptr_t) libcesque; COSMOPOLITAN_C_END_ #endif /* COSMOPOLITAN_LIBC_CALLS_EXTEND_INTERNAL_H_ */ diff --git a/libc/intrin/getauxval.internal.h b/libc/intrin/getauxval.internal.h index ad2ac1cd7..cb4a0ec47 100644 --- a/libc/intrin/getauxval.internal.h +++ b/libc/intrin/getauxval.internal.h @@ -7,7 +7,7 @@ struct AuxiliaryValue { bool isfound; }; -struct AuxiliaryValue __getauxval(unsigned long); +struct AuxiliaryValue __getauxval(unsigned long) libcesque; COSMOPOLITAN_C_END_ #endif /* COSMOPOLITAN_LIBC_INTRIN_GETAUXVAL_H_ */ diff --git a/libc/intrin/getenv.internal.h b/libc/intrin/getenv.internal.h index 9bc1d4d74..bc98d9a09 100644 --- a/libc/intrin/getenv.internal.h +++ b/libc/intrin/getenv.internal.h @@ -7,7 +7,7 @@ struct Env { int i; }; -struct Env __getenv(char **, const char *); +struct Env __getenv(char **, const char *) libcesque; COSMOPOLITAN_C_END_ #endif /* COSMOPOLITAN_LIBC_INTRIN_GETENV_H_ */ diff --git a/libc/intrin/hilbert.h b/libc/intrin/hilbert.h index 5528cb6bb..6a8232191 100644 --- a/libc/intrin/hilbert.h +++ b/libc/intrin/hilbert.h @@ -5,8 +5,8 @@ COSMOPOLITAN_C_START_ #define hilbert __hilbert #define unhilbert __unhilbert -long hilbert(long, long, long) pureconst; -axdx_t unhilbert(long, long) pureconst; +libcesque long hilbert(long, long, long) pureconst; +libcesque axdx_t unhilbert(long, long) pureconst; COSMOPOLITAN_C_END_ #endif /* _COSMO_SOURCE */ diff --git a/libc/intrin/kprintf.h b/libc/intrin/kprintf.h index 3d6aa0851..d11508a68 100644 --- a/libc/intrin/kprintf.h +++ b/libc/intrin/kprintf.h @@ -16,19 +16,19 @@ COSMOPOLITAN_C_START_ -void kprintf(const char *, ...); -size_t ksnprintf(char *, size_t, const char *, ...); -void kvprintf(const char *, va_list); -size_t kvsnprintf(char *, size_t, const char *, va_list); +void kprintf(const char *, ...) libcesque; +size_t ksnprintf(char *, size_t, const char *, ...) libcesque; +void kvprintf(const char *, va_list) libcesque; +size_t kvsnprintf(char *, size_t, const char *, va_list) libcesque; -bool32 kisdangerous(const void *); +bool32 kisdangerous(const void *) libcesque; -void klog(const char *, size_t); -void _klog_serial(const char *, size_t); -long kloghandle(void); +void klog(const char *, size_t) libcesque; +void _klog_serial(const char *, size_t) libcesque; +long kloghandle(void) libcesque; -void uprintf(const char *, ...); -void uvprintf(const char *, va_list); +void uprintf(const char *, ...) libcesque; +void uvprintf(const char *, va_list) libcesque; #ifndef TINY #define KINFOF(FMT, ...) \ diff --git a/libc/intrin/popcnt.h b/libc/intrin/popcnt.h index 6456bbbe9..bbf87b70a 100644 --- a/libc/intrin/popcnt.h +++ b/libc/intrin/popcnt.h @@ -3,8 +3,8 @@ #include "libc/nexgen32e/x86feature.h" COSMOPOLITAN_C_START_ -size_t _countbits(const void *, size_t); -unsigned long popcnt(unsigned long) pureconst; +libcesque size_t _countbits(const void *, size_t); +libcesque unsigned long popcnt(unsigned long) pureconst; #if defined(__GNUC__) && !defined(__STRICT_ANSI__) && defined(__x86_64__) #define popcnt(X) \ diff --git a/libc/intrin/psraw.h b/libc/intrin/psraw.h index 81be8f1c6..4814b073c 100644 --- a/libc/intrin/psraw.h +++ b/libc/intrin/psraw.h @@ -3,8 +3,8 @@ #include "libc/intrin/macros.h" COSMOPOLITAN_C_START_ -void psraw(int16_t[8], const int16_t[8], unsigned char); -void psrawv(int16_t[8], const int16_t[8], const uint64_t[2]); +void psraw(int16_t[8], const int16_t[8], unsigned char) libcesque; +void psrawv(int16_t[8], const int16_t[8], const uint64_t[2]) libcesque; #define psraw(A, B, I) INTRIN_SSEVEX_X_I_(psraw, SSE2, "psraw", A, B, I) #define psrawv(A, B, C) \ diff --git a/libc/intrin/ulock.h b/libc/intrin/ulock.h index d0eb1eeb5..a7afcabcf 100644 --- a/libc/intrin/ulock.h +++ b/libc/intrin/ulock.h @@ -18,8 +18,8 @@ COSMOPOLITAN_C_START_ #define ULF_WAIT_CANCEL_POINT 0x00020000 /* raises eintr */ #define ULF_WAIT_ADAPTIVE_SPIN 0x00040000 -int ulock_wake(uint32_t, void *, uint64_t); -int ulock_wait(uint32_t, void *, uint64_t, uint32_t); +int ulock_wake(uint32_t, void *, uint64_t) libcesque; +int ulock_wait(uint32_t, void *, uint64_t, uint32_t) libcesque; COSMOPOLITAN_C_END_ #endif /* COSMOPOLITAN_ULOCK_H_ */ diff --git a/libc/math.h b/libc/math.h index dd1f7df68..0dd9fe063 100644 --- a/libc/math.h +++ b/libc/math.h @@ -103,226 +103,226 @@ typedef double double_t; extern int signgam; -double acos(double); -double acosh(double); -double asin(double); -double asinh(double); -double atan(double); -double atan2(double, double); -double atanh(double); -double cbrt(double); -double ceil(double); -double copysign(double, double); -double cos(double); -double cosh(double); -double drem(double, double); -double erf(double); -double erfc(double); -double exp(double); -double exp10(double); -double exp2(double); -double expm1(double); -double fabs(double); -double fdim(double, double); -double floor(double); -double fma(double, double, double); -double fmax(double, double); -double fmin(double, double); -double fmod(double, double); -double hypot(double, double); -double ldexp(double, int); -double log(double); -double log10(double); -double log1p(double); -double log2(double); -double logb(double); -double nearbyint(double); -double nextafter(double, double); -double nexttoward(double, long double); -double pow(double, double); -double pow10(double); -double powi(double, int); -double remainder(double, double); -double rint(double); -double round(double); -double scalb(double, double); -double scalbln(double, long int); -double scalbn(double, int); -double significand(double); -double sin(double); -double sinh(double); -double sqrt(double); -double tan(double); -double tanh(double); -double trunc(double); -double tgamma(double); -double lgamma(double); -double lgamma_r(double, int *); -int finite(double); +double acos(double) libcesque; +double acosh(double) libcesque; +double asin(double) libcesque; +double asinh(double) libcesque; +double atan(double) libcesque; +double atan2(double, double) libcesque; +double atanh(double) libcesque; +double cbrt(double) libcesque; +double ceil(double) libcesque; +double copysign(double, double) libcesque; +double cos(double) libcesque; +double cosh(double) libcesque; +double drem(double, double) libcesque; +double erf(double) libcesque; +double erfc(double) libcesque; +double exp(double) libcesque; +double exp10(double) libcesque; +double exp2(double) libcesque; +double expm1(double) libcesque; +double fabs(double) libcesque; +double fdim(double, double) libcesque; +double floor(double) libcesque; +double fma(double, double, double) libcesque; +double fmax(double, double) libcesque; +double fmin(double, double) libcesque; +double fmod(double, double) libcesque; +double hypot(double, double) libcesque; +double ldexp(double, int) libcesque; +double log(double) libcesque; +double log10(double) libcesque; +double log1p(double) libcesque; +double log2(double) libcesque; +double logb(double) libcesque; +double nearbyint(double) libcesque; +double nextafter(double, double) libcesque; +double nexttoward(double, long double) libcesque; +double pow(double, double) libcesque; +double pow10(double) libcesque; +double powi(double, int) libcesque; +double remainder(double, double) libcesque; +double rint(double) libcesque; +double round(double) libcesque; +double scalb(double, double) libcesque; +double scalbln(double, long int) libcesque; +double scalbn(double, int) libcesque; +double significand(double) libcesque; +double sin(double) libcesque; +double sinh(double) libcesque; +double sqrt(double) libcesque; +double tan(double) libcesque; +double tanh(double) libcesque; +double trunc(double) libcesque; +double tgamma(double) libcesque; +double lgamma(double) libcesque; +double lgamma_r(double, int *) libcesque; +int finite(double) libcesque; -float acosf(float); -float acoshf(float); -float asinf(float); -float asinhf(float); -float atan2f(float, float); -float atanf(float); -float atanhf(float); -float cbrtf(float); -float ceilf(float); -float copysignf(float, float); -float cosf(float); -float coshf(float); -float dremf(float, float); -float erfcf(float); -float erff(float); -float exp10f(float); -float exp2f(float); -float expf(float); -float expm1f(float); -float fabsf(float); -float fdimf(float, float); -float floorf(float); -float fmaf(float, float, float); -float fmaxf(float, float); -float fminf(float, float); -float fmodf(float, float); -float hypotf(float, float); -float ldexpf(float, int); -float lgammaf(float); -float lgammaf_r(float, int *); -float log10f(float); -float log1pf(float); -float log2f(float); -float logbf(float); -float logf(float); -float nearbyintf(float); -float nextafterf(float, float); -float nexttowardf(float, long double); -float pow10f(float); -float powf(float, float); -float powif(float, int); -float remainderf(float, float); -float rintf(float); -float roundf(float); -float scalbf(float, float); -float scalblnf(float, long int); -float scalbnf(float, int); -float significandf(float); -float sinf(float); -float sinhf(float); -float sqrtf(float); -float tanf(float); -float tanhf(float); -float tgammaf(float); -float truncf(float); -int finitef(float); +float acosf(float) libcesque; +float acoshf(float) libcesque; +float asinf(float) libcesque; +float asinhf(float) libcesque; +float atan2f(float, float) libcesque; +float atanf(float) libcesque; +float atanhf(float) libcesque; +float cbrtf(float) libcesque; +float ceilf(float) libcesque; +float copysignf(float, float) libcesque; +float cosf(float) libcesque; +float coshf(float) libcesque; +float dremf(float, float) libcesque; +float erfcf(float) libcesque; +float erff(float) libcesque; +float exp10f(float) libcesque; +float exp2f(float) libcesque; +float expf(float) libcesque; +float expm1f(float) libcesque; +float fabsf(float) libcesque; +float fdimf(float, float) libcesque; +float floorf(float) libcesque; +float fmaf(float, float, float) libcesque; +float fmaxf(float, float) libcesque; +float fminf(float, float) libcesque; +float fmodf(float, float) libcesque; +float hypotf(float, float) libcesque; +float ldexpf(float, int) libcesque; +float lgammaf(float) libcesque; +float lgammaf_r(float, int *) libcesque; +float log10f(float) libcesque; +float log1pf(float) libcesque; +float log2f(float) libcesque; +float logbf(float) libcesque; +float logf(float) libcesque; +float nearbyintf(float) libcesque; +float nextafterf(float, float) libcesque; +float nexttowardf(float, long double) libcesque; +float pow10f(float) libcesque; +float powf(float, float) libcesque; +float powif(float, int) libcesque; +float remainderf(float, float) libcesque; +float rintf(float) libcesque; +float roundf(float) libcesque; +float scalbf(float, float) libcesque; +float scalblnf(float, long int) libcesque; +float scalbnf(float, int) libcesque; +float significandf(float) libcesque; +float sinf(float) libcesque; +float sinhf(float) libcesque; +float sqrtf(float) libcesque; +float tanf(float) libcesque; +float tanhf(float) libcesque; +float tgammaf(float) libcesque; +float truncf(float) libcesque; +int finitef(float) libcesque; -int finitel(long double); -long double acoshl(long double); -long double acosl(long double); -long double asinhl(long double); -long double asinl(long double); -long double atan2l(long double, long double); -long double atanhl(long double); -long double atanl(long double); -long double cbrtl(long double); -long double ceill(long double); -long double copysignl(long double, long double); -long double coshl(long double); -long double cosl(long double); -long double dreml(long double, long double); -long double erfcl(long double); -long double erfl(long double); -long double exp10l(long double); -long double exp2l(long double); -long double expl(long double); -long double expm1l(long double); -long double fabsl(long double); -long double fdiml(long double, long double); -long double floorl(long double); -long double fmal(long double, long double, long double); -long double fmaxl(long double, long double); -long double fminl(long double, long double); -long double fmodl(long double, long double); -long double hypotl(long double, long double); -long double ldexpl(long double, int); -long double lgammal(long double); -long double lgammal_r(long double, int *); -long double log10l(long double); -long double log1pl(long double); -long double log2l(long double); -long double logbl(long double); -long double logl(long double); -long double nearbyintl(long double); -long double nextafterl(long double, long double); -long double nexttowardl(long double, long double); -long double pow10l(long double); -long double powl(long double, long double); -long double remainderl(long double, long double); -long double rintl(long double); -long double roundl(long double); -long double scalbl(long double, long double); -long double scalblnl(long double, long int); -long double scalbnl(long double, int); -long double significandl(long double); -long double sinhl(long double); -long double sinl(long double); -long double sqrtl(long double); -long double tanhl(long double); -long double tanl(long double); -long double tgammal(long double); -long double truncl(long double); +int finitel(long double) libcesque; +long double acoshl(long double) libcesque; +long double acosl(long double) libcesque; +long double asinhl(long double) libcesque; +long double asinl(long double) libcesque; +long double atan2l(long double, long double) libcesque; +long double atanhl(long double) libcesque; +long double atanl(long double) libcesque; +long double cbrtl(long double) libcesque; +long double ceill(long double) libcesque; +long double copysignl(long double, long double) libcesque; +long double coshl(long double) libcesque; +long double cosl(long double) libcesque; +long double dreml(long double, long double) libcesque; +long double erfcl(long double) libcesque; +long double erfl(long double) libcesque; +long double exp10l(long double) libcesque; +long double exp2l(long double) libcesque; +long double expl(long double) libcesque; +long double expm1l(long double) libcesque; +long double fabsl(long double) libcesque; +long double fdiml(long double, long double) libcesque; +long double floorl(long double) libcesque; +long double fmal(long double, long double, long double) libcesque; +long double fmaxl(long double, long double) libcesque; +long double fminl(long double, long double) libcesque; +long double fmodl(long double, long double) libcesque; +long double hypotl(long double, long double) libcesque; +long double ldexpl(long double, int) libcesque; +long double lgammal(long double) libcesque; +long double lgammal_r(long double, int *) libcesque; +long double log10l(long double) libcesque; +long double log1pl(long double) libcesque; +long double log2l(long double) libcesque; +long double logbl(long double) libcesque; +long double logl(long double) libcesque; +long double nearbyintl(long double) libcesque; +long double nextafterl(long double, long double) libcesque; +long double nexttowardl(long double, long double) libcesque; +long double pow10l(long double) libcesque; +long double powl(long double, long double) libcesque; +long double remainderl(long double, long double) libcesque; +long double rintl(long double) libcesque; +long double roundl(long double) libcesque; +long double scalbl(long double, long double) libcesque; +long double scalblnl(long double, long int) libcesque; +long double scalbnl(long double, int) libcesque; +long double significandl(long double) libcesque; +long double sinhl(long double) libcesque; +long double sinl(long double) libcesque; +long double sqrtl(long double) libcesque; +long double tanhl(long double) libcesque; +long double tanl(long double) libcesque; +long double tgammal(long double) libcesque; +long double truncl(long double) libcesque; -long lrint(double); -long lrintf(float); -long lrintl(long double); -long lround(double); -long lroundf(float); -long lroundl(long double); +long lrint(double) libcesque; +long lrintf(float) libcesque; +long lrintl(long double) libcesque; +long lround(double) libcesque; +long lroundf(float) libcesque; +long lroundl(long double) libcesque; -int ilogbf(float); -int ilogb(double); -int ilogbl(long double); +int ilogbf(float) libcesque; +int ilogb(double) libcesque; +int ilogbl(long double) libcesque; -long long llrint(double); -long long llrintf(float); -long long llrintl(long double); -long long llround(double); -long long llroundf(float); -long long llroundl(long double); +long long llrint(double) libcesque; +long long llrintf(float) libcesque; +long long llrintl(long double) libcesque; +long long llround(double) libcesque; +long long llroundf(float) libcesque; +long long llroundl(long double) libcesque; -double frexp(double, int *); -double modf(double, double *); -double nan(const char *); -double remquo(double, double, int *); -float frexpf(float, int *); -float modff(float, float *); -float nanf(const char *); -float remquof(float, float, int *); -long double frexpl(long double, int *); -long double modfl(long double, long double *); -long double nanl(const char *); -long double remquol(long double, long double, int *); -void sincos(double, double *, double *); -void sincosf(float, float *, float *); -void sincosl(long double, long double *, long double *); +double frexp(double, int *) libcesque; +double modf(double, double *) libcesque; +double nan(const char *) libcesque; +double remquo(double, double, int *) libcesque; +float frexpf(float, int *) libcesque; +float modff(float, float *) libcesque; +float nanf(const char *) libcesque; +float remquof(float, float, int *) libcesque; +long double frexpl(long double, int *) libcesque; +long double modfl(long double, long double *) libcesque; +long double nanl(const char *) libcesque; +long double remquol(long double, long double, int *) libcesque; +void sincos(double, double *, double *) libcesque; +void sincosf(float, float *, float *) libcesque; +void sincosl(long double, long double *, long double *) libcesque; -double fsumf(const float *, size_t); -double fsum(const double *, size_t); +double fsumf(const float *, size_t) libcesque; +double fsum(const double *, size_t) libcesque; -double j0(double); -double j1(double); -double jn(int, double); -float j0f(float); -float j1f(float); -float jnf(int, float); +double j0(double) libcesque; +double j1(double) libcesque; +double jn(int, double) libcesque; +float j0f(float) libcesque; +float j1f(float) libcesque; +float jnf(int, float) libcesque; -double y0(double); -double y1(double); -double yn(int, double); -float y0f(float); -float y1f(float); -float ynf(int, float); +double y0(double) libcesque; +double y1(double) libcesque; +double yn(int, double) libcesque; +float y0f(float) libcesque; +float y1f(float) libcesque; +float ynf(int, float) libcesque; COSMOPOLITAN_C_END_ #endif /* COSMOPOLITAN_LIBC_MATH_H_ */ diff --git a/libc/mem/alg.h b/libc/mem/alg.h index 59d627c73..4cec11a6f 100644 --- a/libc/mem/alg.h +++ b/libc/mem/alg.h @@ -3,12 +3,11 @@ COSMOPOLITAN_C_START_ void *bsearch(const void *, const void *, size_t, size_t, - int (*)(const void *, const void *)) - paramsnonnull() dontthrow nosideeffect; + int (*)(const void *, const void *)) paramsnonnull() nosideeffect; void *bsearch_r(const void *, const void *, size_t, size_t, int (*)(const void *, const void *, void *), void *) - paramsnonnull((1, 2, 5)) dontthrow nosideeffect; -void djbsort(int32_t *, size_t); + paramsnonnull((1, 2, 5)) nosideeffect; +void djbsort(int32_t *, size_t) libcesque; void qsort3(void *, size_t, size_t, int (*)(const void *, const void *)) paramsnonnull(); void qsort(void *, size_t, size_t, int (*)(const void *, const void *)) @@ -26,10 +25,8 @@ int mergesort(void *, size_t, size_t, int (*)(const void *, const void *)); int mergesort_r(void *, size_t, size_t, int (*)(const void *, const void *, void *), void *); -#define __algalloc returnspointerwithnoaliases dontthrow nocallback __wur - -int radix_sort_int32(int32_t *, size_t); -int radix_sort_int64(int64_t *, size_t); +int radix_sort_int32(int32_t *, size_t) libcesque; +int radix_sort_int64(int64_t *, size_t) libcesque; COSMOPOLITAN_C_END_ #endif /* COSMOPOLITAN_LIBC_ALG_ALG_H_ */ diff --git a/libc/mem/critbit0.h b/libc/mem/critbit0.h index 5e41c1c7e..149e02379 100644 --- a/libc/mem/critbit0.h +++ b/libc/mem/critbit0.h @@ -11,15 +11,15 @@ struct critbit0 { size_t count; }; -bool critbit0_contains(struct critbit0 *, const char *) dontthrow nosideeffect +bool critbit0_contains(struct critbit0 *, const char *) libcesque nosideeffect paramsnonnull(); int critbit0_insert(struct critbit0 *, const char *) paramsnonnull(); -bool critbit0_delete(struct critbit0 *, const char *) dontthrow paramsnonnull(); -void critbit0_clear(struct critbit0 *) dontthrow paramsnonnull(); +bool critbit0_delete(struct critbit0 *, const char *) libcesque paramsnonnull(); +void critbit0_clear(struct critbit0 *) libcesque paramsnonnull(); char *critbit0_get(struct critbit0 *, const char *); intptr_t critbit0_allprefixed(struct critbit0 *, const char *, intptr_t (*)(const char *, void *), void *) - paramsnonnull((1, 2, 3)) dontthrow; + paramsnonnull((1, 2, 3)) libcesque; int critbit0_emplace(struct critbit0 *, const void *, size_t) paramsnonnull(); COSMOPOLITAN_C_END_ diff --git a/libc/mem/gc.h b/libc/mem/gc.h index ae2f2ca46..3ff3b17d9 100644 --- a/libc/mem/gc.h +++ b/libc/mem/gc.h @@ -3,9 +3,9 @@ #ifdef _COSMO_SOURCE COSMOPOLITAN_C_START_ -void _gc_free(void *) libcesque; -void __defer(void *, void *, void *) libcesque; -void gclongjmp(void *, int) libcesque wontreturn; +libcesque void _gc_free(void *); +libcesque void __defer(void *, void *, void *); +libcesque void gclongjmp(void *, int) wontreturn; #define gc(THING) defer((void *)_gc_free, (void *)(THING)) #define _gc(THING) defer((void *)_gc_free, (void *)(THING)) #define defer(FN, ARG) \ diff --git a/libc/mem/internal.h b/libc/mem/internal.h index 4ad1ef3ff..73902e360 100644 --- a/libc/mem/internal.h +++ b/libc/mem/internal.h @@ -8,7 +8,7 @@ struct CritbitNode { unsigned otherbits; }; -int __putenv(char *, bool); +int __putenv(char *, bool) libcesque; bool __grow(void *, size_t *, size_t, size_t) paramsnonnull((1, 2)) libcesque; COSMOPOLITAN_C_END_ diff --git a/libc/mem/mem.h b/libc/mem/mem.h index 2c7115ab2..fa55a069b 100644 --- a/libc/mem/mem.h +++ b/libc/mem/mem.h @@ -24,14 +24,14 @@ char *strdup(const char *) paramsnonnull() mallocesque; char *strndup(const char *, size_t) paramsnonnull() mallocesque; void *aligned_alloc(size_t, size_t) attributeallocalign((1)) attributeallocsize((2)) returnspointerwithnoaliases libcesque __wur; -int posix_memalign(void **, size_t, size_t); +int posix_memalign(void **, size_t, size_t) libcesque; -int mallopt(int, int); -int malloc_trim(size_t); -size_t bulk_free(void **, size_t); -size_t malloc_usable_size(void *); -void **independent_calloc(size_t, size_t, void **); -void **independent_comalloc(size_t, size_t *, void **); +int mallopt(int, int) libcesque; +int malloc_trim(size_t) libcesque; +size_t bulk_free(void **, size_t) libcesque; +size_t malloc_usable_size(void *) libcesque; +void **independent_calloc(size_t, size_t, void **) libcesque; +void **independent_comalloc(size_t, size_t *, void **) libcesque; wchar_t *wcsdup(const wchar_t *) strlenesque __wur; @@ -48,12 +48,12 @@ struct mallinfo { size_t keepcost; /* releasable (via malloc_trim) space */ }; -struct mallinfo mallinfo(void); +struct mallinfo mallinfo(void) libcesque; -size_t malloc_footprint(void); -size_t malloc_max_footprint(void); -size_t malloc_footprint_limit(void); -size_t malloc_set_footprint_limit(size_t); +size_t malloc_footprint(void) libcesque; +size_t malloc_max_footprint(void) libcesque; +size_t malloc_footprint_limit(void) libcesque; +size_t malloc_set_footprint_limit(size_t) libcesque; void malloc_inspect_all(void (*)(void *, void *, size_t, void *), void *); COSMOPOLITAN_C_END_ diff --git a/libc/mem/sortedints.internal.h b/libc/mem/sortedints.internal.h index f295b6132..1575c8d74 100644 --- a/libc/mem/sortedints.internal.h +++ b/libc/mem/sortedints.internal.h @@ -8,10 +8,10 @@ struct SortedInts { int *p; }; -bool ContainsInt(const struct SortedInts *, int); -bool InsertInt(struct SortedInts *, int, bool); -int CountInt(const struct SortedInts *, int); -int LeftmostInt(const struct SortedInts *, int); +bool ContainsInt(const struct SortedInts *, int) libcesque; +bool InsertInt(struct SortedInts *, int, bool) libcesque; +int CountInt(const struct SortedInts *, int) libcesque; +int LeftmostInt(const struct SortedInts *, int) libcesque; COSMOPOLITAN_C_END_ #endif /* COSMOPOLITAN_LIBC_MEM_SORTEDINTS_INTERNAL_H_ */ diff --git a/libc/proc/describefds.internal.h b/libc/proc/describefds.internal.h index 0bd1d7033..437fabdf7 100644 --- a/libc/proc/describefds.internal.h +++ b/libc/proc/describefds.internal.h @@ -4,10 +4,10 @@ #include "libc/nt/struct/startupinfo.h" COSMOPOLITAN_C_START_ -bool __is_cloexec(const struct Fd *); -void __undescribe_fds(int64_t, int64_t *, uint32_t); +bool __is_cloexec(const struct Fd *) libcesque; +void __undescribe_fds(int64_t, int64_t *, uint32_t) libcesque; char *__describe_fds(const struct Fd *, size_t, struct NtStartupInfo *, int64_t, - int64_t **, uint32_t *); + int64_t **, uint32_t *) libcesque; COSMOPOLITAN_C_END_ #endif /* COSMOPOLITAN_LIBC_PROC_DESCRIBEFDS_INTERNAL_H_ */ diff --git a/libc/proc/execve.internal.h b/libc/proc/execve.internal.h index f9213ff5c..af8746fa6 100644 --- a/libc/proc/execve.internal.h +++ b/libc/proc/execve.internal.h @@ -2,7 +2,7 @@ #define COSMOPOLITAN_LIBC_CALLS_EXECVE_SYSV_H_ COSMOPOLITAN_C_START_ -bool IsApeLoadable(char[8]); +bool IsApeLoadable(char[8]) libcesque; COSMOPOLITAN_C_END_ #endif /* COSMOPOLITAN_LIBC_CALLS_EXECVE_SYSV_H_ */ diff --git a/libc/proc/posix_spawn.h b/libc/proc/posix_spawn.h index 1e8f1a485..9da96f721 100644 --- a/libc/proc/posix_spawn.h +++ b/libc/proc/posix_spawn.h @@ -24,34 +24,41 @@ int posix_spawn(int *, const char *, const posix_spawn_file_actions_t *, int posix_spawnp(int *, const char *, const posix_spawn_file_actions_t *, const posix_spawnattr_t *, char *const[], char *const[]); -int posix_spawn_file_actions_init(posix_spawn_file_actions_t *); -int posix_spawn_file_actions_destroy(posix_spawn_file_actions_t *); -int posix_spawn_file_actions_addclose(posix_spawn_file_actions_t *, int); -int posix_spawn_file_actions_adddup2(posix_spawn_file_actions_t *, int, int); +int posix_spawn_file_actions_init(posix_spawn_file_actions_t *) libcesque; +int posix_spawn_file_actions_destroy(posix_spawn_file_actions_t *) libcesque; +int posix_spawn_file_actions_addclose(posix_spawn_file_actions_t *, + int) libcesque; +int posix_spawn_file_actions_adddup2(posix_spawn_file_actions_t *, int, + int) libcesque; int posix_spawn_file_actions_addopen(posix_spawn_file_actions_t *, int, - const char *, int, unsigned); + const char *, int, unsigned) libcesque; int posix_spawn_file_actions_addchdir_np(posix_spawn_file_actions_t *, - const char *); -int posix_spawn_file_actions_addfchdir_np(posix_spawn_file_actions_t *, int); + const char *) libcesque; +int posix_spawn_file_actions_addfchdir_np(posix_spawn_file_actions_t *, + int) libcesque; -int posix_spawnattr_init(posix_spawnattr_t *); -int posix_spawnattr_destroy(posix_spawnattr_t *); -int posix_spawnattr_getflags(const posix_spawnattr_t *, short *); -int posix_spawnattr_setflags(posix_spawnattr_t *, short); -int posix_spawnattr_getpgroup(const posix_spawnattr_t *, int *); -int posix_spawnattr_setpgroup(posix_spawnattr_t *, int); -int posix_spawnattr_getschedpolicy(const posix_spawnattr_t *, int *); -int posix_spawnattr_setschedpolicy(posix_spawnattr_t *, int); +int posix_spawnattr_init(posix_spawnattr_t *) libcesque; +int posix_spawnattr_destroy(posix_spawnattr_t *) libcesque; +int posix_spawnattr_getflags(const posix_spawnattr_t *, short *) libcesque; +int posix_spawnattr_setflags(posix_spawnattr_t *, short) libcesque; +int posix_spawnattr_getpgroup(const posix_spawnattr_t *, int *) libcesque; +int posix_spawnattr_setpgroup(posix_spawnattr_t *, int) libcesque; +int posix_spawnattr_getschedpolicy(const posix_spawnattr_t *, int *) libcesque; +int posix_spawnattr_setschedpolicy(posix_spawnattr_t *, int) libcesque; int posix_spawnattr_getschedparam(const posix_spawnattr_t *, - struct sched_param *); + struct sched_param *) libcesque; int posix_spawnattr_setschedparam(posix_spawnattr_t *, - const struct sched_param *); -int posix_spawnattr_getsigmask(const posix_spawnattr_t *, sigset_t *); -int posix_spawnattr_setsigmask(posix_spawnattr_t *, const sigset_t *); -int posix_spawnattr_getsigdefault(const posix_spawnattr_t *, sigset_t *); -int posix_spawnattr_setsigdefault(posix_spawnattr_t *, const sigset_t *); -int posix_spawnattr_getrlimit(const posix_spawnattr_t *, int, struct rlimit *); -int posix_spawnattr_setrlimit(posix_spawnattr_t *, int, const struct rlimit *); + const struct sched_param *) libcesque; +int posix_spawnattr_getsigmask(const posix_spawnattr_t *, sigset_t *) libcesque; +int posix_spawnattr_setsigmask(posix_spawnattr_t *, const sigset_t *) libcesque; +int posix_spawnattr_getsigdefault(const posix_spawnattr_t *, + sigset_t *) libcesque; +int posix_spawnattr_setsigdefault(posix_spawnattr_t *, + const sigset_t *) libcesque; +int posix_spawnattr_getrlimit(const posix_spawnattr_t *, int, + struct rlimit *) libcesque; +int posix_spawnattr_setrlimit(posix_spawnattr_t *, int, + const struct rlimit *) libcesque; COSMOPOLITAN_C_END_ #endif /* COSMOPOLITAN_LIBC_STDIO_SPAWN_H_ */ diff --git a/libc/proc/proc.internal.h b/libc/proc/proc.internal.h index d2971d470..fc36c1c60 100644 --- a/libc/proc/proc.internal.h +++ b/libc/proc/proc.internal.h @@ -43,16 +43,16 @@ struct Procs { extern struct Procs __proc; -void __proc_wipe(void); -void __proc_lock(void); -void __proc_unlock(void); -int64_t __proc_handle(int); -int64_t __proc_search(int); -struct Proc *__proc_new(void); -void __proc_add(struct Proc *); -void __proc_free(struct Proc *); -int __proc_harvest(struct Proc *, bool); -int sys_wait4_nt(int, int *, int, struct rusage *); +void __proc_wipe(void) libcesque; +void __proc_lock(void) libcesque; +void __proc_unlock(void) libcesque; +int64_t __proc_handle(int) libcesque; +int64_t __proc_search(int) libcesque; +struct Proc *__proc_new(void) libcesque; +void __proc_add(struct Proc *) libcesque; +void __proc_free(struct Proc *) libcesque; +int __proc_harvest(struct Proc *, bool) libcesque; +int sys_wait4_nt(int, int *, int, struct rusage *) libcesque; COSMOPOLITAN_C_END_ #endif /* COSMOPOLITAN_LIBC_PROC_H_ */ diff --git a/libc/sock/epoll.h b/libc/sock/epoll.h index 6f0023dda..ff858f09d 100644 --- a/libc/sock/epoll.h +++ b/libc/sock/epoll.h @@ -15,10 +15,10 @@ struct thatispacked epoll_event { epoll_data_t data; }; -int epoll_create(int); -int epoll_create1(int); -int epoll_ctl(int, int, int, struct epoll_event *); -int epoll_wait(int, struct epoll_event *, int, int); +int epoll_create(int) libcesque; +int epoll_create1(int) libcesque; +int epoll_ctl(int, int, int, struct epoll_event *) libcesque; +int epoll_wait(int, struct epoll_event *, int, int) libcesque; int epoll_pwait(int, struct epoll_event *, int, int, const sigset_t *); COSMOPOLITAN_C_END_ diff --git a/libc/sock/goodsocket.internal.h b/libc/sock/goodsocket.internal.h index fd89109d4..5ed0327ad 100644 --- a/libc/sock/goodsocket.internal.h +++ b/libc/sock/goodsocket.internal.h @@ -3,7 +3,7 @@ #include "libc/calls/struct/timeval.h" COSMOPOLITAN_C_START_ -int GoodSocket(int, int, int, bool, const struct timeval *); +int GoodSocket(int, int, int, bool, const struct timeval *) libcesque; COSMOPOLITAN_C_END_ #endif /* COSMOPOLITAN_LIBC_SOCK_GOODSOCKET_H_ */ diff --git a/libc/sock/ifaddrs.h b/libc/sock/ifaddrs.h index 50da11bcb..9ac2356c5 100644 --- a/libc/sock/ifaddrs.h +++ b/libc/sock/ifaddrs.h @@ -16,8 +16,8 @@ struct ifaddrs { void *ifa_data; }; -void freeifaddrs(struct ifaddrs *); -int getifaddrs(struct ifaddrs **); +void freeifaddrs(struct ifaddrs *) libcesque; +int getifaddrs(struct ifaddrs **) libcesque; COSMOPOLITAN_C_END_ #endif /* COSMOPOLITAN_LIBC_SOCK_IFADDRS_H_ */ diff --git a/libc/sock/select.h b/libc/sock/select.h index b6f0e0cbd..acd56c187 100644 --- a/libc/sock/select.h +++ b/libc/sock/select.h @@ -19,9 +19,9 @@ typedef struct fd_set { #define FD_ZERO(SET) bzero((SET)->fds_bits, sizeof((SET)->fds_bits)) #define FD_SIZE(bits) (((bits) + (sizeof(long) * 8) - 1) / sizeof(long)) -int select(int, fd_set *, fd_set *, fd_set *, struct timeval *); +int select(int, fd_set *, fd_set *, fd_set *, struct timeval *) libcesque; int pselect(int, fd_set *, fd_set *, fd_set *, const struct timespec *, - const sigset_t *); + const sigset_t *) libcesque; COSMOPOLITAN_C_END_ #endif /* COSMOPOLITAN_LIBC_SOCK_SELECT_H_ */ diff --git a/libc/sock/select.internal.h b/libc/sock/select.internal.h index ecf5606ac..d565635a6 100644 --- a/libc/sock/select.internal.h +++ b/libc/sock/select.internal.h @@ -4,7 +4,7 @@ #include "libc/sock/select.h" COSMOPOLITAN_C_START_ -const char *DescribeFdSet(char[100], ssize_t, int, fd_set *); +const char *DescribeFdSet(char[100], ssize_t, int, fd_set *) libcesque; #define DescribeFdSet(x, y, z) DescribeFdSet(alloca(100), x, y, z) COSMOPOLITAN_C_END_ diff --git a/libc/sock/sock.h b/libc/sock/sock.h index a1d2a7384..43bcf8fb2 100644 --- a/libc/sock/sock.h +++ b/libc/sock/sock.h @@ -5,10 +5,10 @@ COSMOPOLITAN_C_START_ #define INET_ADDRSTRLEN 22 #define IFHWADDRLEN 6 -uint16_t htons(uint16_t) pureconst; -uint16_t ntohs(uint16_t) pureconst; -uint32_t htonl(uint32_t) pureconst; -uint32_t ntohl(uint32_t) pureconst; +libcesque uint16_t htons(uint16_t) pureconst; +libcesque uint16_t ntohs(uint16_t) pureconst; +libcesque uint32_t htonl(uint32_t) pureconst; +libcesque uint32_t ntohl(uint32_t) pureconst; #if defined(__GNUC__) && !defined(__STRICT_ANSI__) #define htons(x) __builtin_bswap16(x) @@ -17,21 +17,21 @@ uint32_t ntohl(uint32_t) pureconst; #define ntohl(x) __builtin_bswap32(x) #endif -const char *inet_ntop(int, const void *, char *, uint32_t); -int inet_pton(int, const char *, void *); -uint32_t inet_addr(const char *); -uint32_t *GetHostIps(void); +const char *inet_ntop(int, const void *, char *, uint32_t) libcesque; +int inet_pton(int, const char *, void *) libcesque; +uint32_t inet_addr(const char *) libcesque; +libcesque uint32_t *GetHostIps(void) __wur; -int socket(int, int, int); -int listen(int, int); -int shutdown(int, int); -ssize_t send(int, const void *, size_t, int); -ssize_t recv(int, void *, size_t, int); -ssize_t sendfile(int, int, int64_t *, size_t); -int getsockopt(int, int, int, void *, uint32_t *); -int setsockopt(int, int, int, const void *, uint32_t); -int socketpair(int, int, int, int[2]); -int sockatmark(int); +int socket(int, int, int) libcesque; +int listen(int, int) libcesque; +int shutdown(int, int) libcesque; +ssize_t send(int, const void *, size_t, int) libcesque; +ssize_t recv(int, void *, size_t, int) libcesque; +ssize_t sendfile(int, int, int64_t *, size_t) libcesque; +int getsockopt(int, int, int, void *, uint32_t *) libcesque; +int setsockopt(int, int, int, const void *, uint32_t) libcesque; +int socketpair(int, int, int, int[2]) libcesque; +int sockatmark(int) libcesque; COSMOPOLITAN_C_END_ #endif /* COSMOPOLITAN_LIBC_SOCK_SOCK_H_ */ diff --git a/libc/sock/syslog.h b/libc/sock/syslog.h index e26a57298..73d8273ac 100644 --- a/libc/sock/syslog.h +++ b/libc/sock/syslog.h @@ -2,11 +2,11 @@ #define COSMOPOLITAN_LIBC_SOCK_SYSLOG_H_ COSMOPOLITAN_C_START_ -int setlogmask(int); -void openlog(const char *, int, int); -void syslog(int, const char *, ...); -void closelog(void); -void vsyslog(int, const char *, va_list); +int setlogmask(int) libcesque; +void openlog(const char *, int, int) libcesque; +void syslog(int, const char *, ...) libcesque; +void closelog(void) libcesque; +void vsyslog(int, const char *, va_list) libcesque; COSMOPOLITAN_C_END_ #endif /* COSMOPOLITAN_LIBC_SOCK_SYSLOG_H_ */ diff --git a/libc/stdio/append.h b/libc/stdio/append.h index 662653281..fd248705d 100644 --- a/libc/stdio/append.h +++ b/libc/stdio/append.h @@ -21,15 +21,15 @@ struct appendz { size_t n; }; -struct appendz appendz(char *); -ssize_t appendr(char **, size_t); -ssize_t appendd(char **, const void *, size_t); -ssize_t appendw(char **, uint64_t); -ssize_t appends(char **, const char *); -ssize_t appendf(char **, const char *, ...); -ssize_t vappendf(char **, const char *, va_list); -ssize_t kappendf(char **, const char *, ...); -ssize_t kvappendf(char **, const char *, va_list); +struct appendz appendz(char *) libcesque; +ssize_t appendr(char **, size_t) libcesque; +ssize_t appendd(char **, const void *, size_t) libcesque; +ssize_t appendw(char **, uint64_t) libcesque; +ssize_t appends(char **, const char *) libcesque; +ssize_t appendf(char **, const char *, ...) libcesque; +ssize_t vappendf(char **, const char *, va_list) libcesque; +ssize_t kappendf(char **, const char *, ...) libcesque; +ssize_t kvappendf(char **, const char *, va_list) libcesque; COSMOPOLITAN_C_END_ #endif /* _COSMO_SOURCE */ diff --git a/libc/stdio/dprintf.h b/libc/stdio/dprintf.h index c310c098e..f44666373 100644 --- a/libc/stdio/dprintf.h +++ b/libc/stdio/dprintf.h @@ -2,8 +2,8 @@ #define COSMOPOLITAN_LIBC_CALLS_DPRINTF_H_ COSMOPOLITAN_C_START_ -int dprintf(int, const char *, ...) paramsnonnull((2)); -int vdprintf(int, const char *, va_list) paramsnonnull(); +libcesque int dprintf(int, const char *, ...) paramsnonnull((2)); +libcesque int vdprintf(int, const char *, va_list) paramsnonnull(); COSMOPOLITAN_C_END_ #endif /* COSMOPOLITAN_LIBC_CALLS_DPRINTF_H_ */ diff --git a/libc/stdio/ftw.h b/libc/stdio/ftw.h index 627ae6dcd..3bf7bea17 100644 --- a/libc/stdio/ftw.h +++ b/libc/stdio/ftw.h @@ -79,10 +79,12 @@ struct FTW { int level; }; -int ftw(const char *, int (*)(const char *, const struct stat *, int), int); +int ftw(const char *, int (*)(const char *, const struct stat *, int), + int) dontthrow; + int nftw(const char *, int (*)(const char *, const struct stat *, int, struct FTW *), int, - int); + int) dontthrow; COSMOPOLITAN_C_END_ #endif /* COSMOPOLITAN_THIRD_PARTY_MUSL_FTW_H_ */ diff --git a/libc/stdio/rand.h b/libc/stdio/rand.h index 49174e359..dc496b775 100644 --- a/libc/stdio/rand.h +++ b/libc/stdio/rand.h @@ -6,15 +6,15 @@ COSMOPOLITAN_C_START_ │ cosmopolitan § random ─╬─│┼ ╚────────────────────────────────────────────────────────────────────────────│*/ -int rand(void); -void srand(unsigned); -char *strfry(char *); -int getentropy(void *, size_t); -ssize_t getrandom(void *, size_t, unsigned); -char *initstate(unsigned, char *, size_t); -char *setstate(char *); -long random(void); -void srandom(unsigned); +int rand(void) libcesque; +void srand(unsigned) libcesque; +char *strfry(char *) libcesque; +int getentropy(void *, size_t) libcesque; +ssize_t getrandom(void *, size_t, unsigned) libcesque; +char *initstate(unsigned, char *, size_t) libcesque; +char *setstate(char *) libcesque; +long random(void) libcesque; +void srandom(unsigned) libcesque; #ifdef _COSMO_SOURCE #define vigna __vigna @@ -22,26 +22,26 @@ void srandom(unsigned); #define rngset __rngset #define rdrand __rdrand #define rdseed __rdseed -double poz(double); -double pochisq(double, int); -uint64_t lemur64(void); -uint64_t _rand64(void); -uint64_t vigna(void); -uint64_t vigna_r(uint64_t[hasatleast 1]); -void svigna(uint64_t); -uint64_t rdrand(void); -uint64_t rdseed(void); -void _smt19937(uint64_t); -void _Smt19937(uint64_t[], size_t); -uint64_t _mt19937(void); -double _real1(uint64_t); -double _real2(uint64_t); -double _real3(uint64_t); -double MeasureEntropy(const char *, size_t); -void *rngset(void *, size_t, uint64_t (*)(void), size_t); -void rt_init(int); -void rt_add(void *, int); -void rt_end(double *, double *, double *, double *, double *); +double poz(double) libcesque; +double pochisq(double, int) libcesque; +uint64_t lemur64(void) libcesque; +uint64_t _rand64(void) libcesque; +uint64_t vigna(void) libcesque; +uint64_t vigna_r(uint64_t[hasatleast 1]) libcesque; +void svigna(uint64_t) libcesque; +uint64_t rdrand(void) libcesque; +uint64_t rdseed(void) libcesque; +void _smt19937(uint64_t) libcesque; +void _Smt19937(uint64_t[], size_t) libcesque; +uint64_t _mt19937(void) libcesque; +double _real1(uint64_t) libcesque; +double _real2(uint64_t) libcesque; +double _real3(uint64_t) libcesque; +double MeasureEntropy(const char *, size_t) libcesque; +void *rngset(void *, size_t, uint64_t (*)(void), size_t) libcesque; +void rt_init(int) libcesque; +void rt_add(void *, int) libcesque; +void rt_end(double *, double *, double *, double *, double *) libcesque; #endif /* _COSMO_SOURCE */ COSMOPOLITAN_C_END_ diff --git a/libc/stdio/stdio.h b/libc/stdio/stdio.h index a7341130f..e8ec9473e 100644 --- a/libc/stdio/stdio.h +++ b/libc/stdio/stdio.h @@ -29,110 +29,105 @@ extern FILE *stdin; extern FILE *stdout; extern FILE *stderr; -errno_t ferror(FILE *) paramsnonnull(); -void clearerr(FILE *) paramsnonnull(); -int feof(FILE *) paramsnonnull(); -int getc(FILE *) paramsnonnull(); -int putc(int, FILE *) paramsnonnull(); -int fflush(FILE *); -int fpurge(FILE *); -int fgetc(FILE *) paramsnonnull(); -char *fgetln(FILE *, size_t *) paramsnonnull((1)); -int ungetc(int, FILE *) paramsnonnull(); -int fileno(FILE *) paramsnonnull() nosideeffect; -int fputc(int, FILE *) paramsnonnull(); -int fputs(const char *, FILE *) paramsnonnull(); -int fputws(const wchar_t *, FILE *) paramsnonnull(); -void flockfile(FILE *) paramsnonnull(); -void funlockfile(FILE *) paramsnonnull(); -int ftrylockfile(FILE *) paramsnonnull(); -char *fgets(char *, int, FILE *) paramsnonnull(); -wchar_t *fgetws(wchar_t *, int, FILE *) paramsnonnull(); -wint_t putwc(wchar_t, FILE *) paramsnonnull(); -wint_t fputwc(wchar_t, FILE *) paramsnonnull(); -wint_t putwchar(wchar_t); -wint_t getwchar(void); -wint_t getwc(FILE *) paramsnonnull(); -wint_t fgetwc(FILE *) paramsnonnull(); -wint_t ungetwc(wint_t, FILE *) paramsnonnull(); -int getchar(void); -int putchar(int); -int puts(const char *); -ssize_t getline(char **, size_t *, FILE *) paramsnonnull(); -ssize_t getdelim(char **, size_t *, int, FILE *) paramsnonnull(); -FILE *fopen(const char *, const char *) paramsnonnull((2)) __wur; -FILE *fdopen(int, const char *) paramsnonnull() __wur; -FILE *fmemopen(void *, size_t, const char *) paramsnonnull((3)) __wur; +errno_t ferror(FILE *) libcesque paramsnonnull(); +void clearerr(FILE *) libcesque paramsnonnull(); +int feof(FILE *) libcesque paramsnonnull(); +int getc(FILE *) libcesque paramsnonnull(); +int putc(int, FILE *) libcesque paramsnonnull(); +int fflush(FILE *) libcesque; +int fpurge(FILE *) libcesque; +int fgetc(FILE *) libcesque paramsnonnull(); +char *fgetln(FILE *, size_t *) libcesque paramsnonnull((1)); +int ungetc(int, FILE *) libcesque paramsnonnull(); +int fileno(FILE *) libcesque paramsnonnull() nosideeffect; +int fputc(int, FILE *) libcesque paramsnonnull(); +int fputs(const char *, FILE *) libcesque paramsnonnull(); +int fputws(const wchar_t *, FILE *) libcesque paramsnonnull(); +void flockfile(FILE *) libcesque paramsnonnull(); +void funlockfile(FILE *) libcesque paramsnonnull(); +int ftrylockfile(FILE *) libcesque paramsnonnull(); +char *fgets(char *, int, FILE *) libcesque paramsnonnull(); +wchar_t *fgetws(wchar_t *, int, FILE *) libcesque paramsnonnull(); +wint_t putwc(wchar_t, FILE *) libcesque paramsnonnull(); +wint_t fputwc(wchar_t, FILE *) libcesque paramsnonnull(); +wint_t putwchar(wchar_t) libcesque; +wint_t getwchar(void) libcesque; +wint_t getwc(FILE *) libcesque paramsnonnull(); +wint_t fgetwc(FILE *) libcesque paramsnonnull(); +wint_t ungetwc(wint_t, FILE *) libcesque paramsnonnull(); +int getchar(void) libcesque; +int putchar(int) libcesque; +int puts(const char *) libcesque; +ssize_t getline(char **, size_t *, FILE *) libcesque paramsnonnull(); +ssize_t getdelim(char **, size_t *, int, FILE *) libcesque paramsnonnull(); +FILE *fopen(const char *, const char *) libcesque paramsnonnull((2)) __wur; +FILE *fdopen(int, const char *) libcesque paramsnonnull() __wur; +FILE *fmemopen(void *, size_t, const char *) libcesque paramsnonnull((3)) __wur; FILE *freopen(const char *, const char *, FILE *) paramsnonnull((2, 3)); -size_t fread(void *, size_t, size_t, FILE *) paramsnonnull((4)); +size_t fread(void *, size_t, size_t, FILE *) libcesque paramsnonnull((4)); size_t fwrite(const void *, size_t, size_t, FILE *) paramsnonnull((4)); -int fclose(FILE *); -int fseek(FILE *, long, int) paramsnonnull(); -long ftell(FILE *) paramsnonnull(); -int fseeko(FILE *, int64_t, int) paramsnonnull(); -int64_t ftello(FILE *) paramsnonnull(); -void rewind(FILE *) paramsnonnull(); -int fopenflags(const char *) paramsnonnull(); -void setlinebuf(FILE *); -void setbuf(FILE *, char *); -void setbuffer(FILE *, char *, size_t); -int setvbuf(FILE *, char *, int, size_t); -int pclose(FILE *); -char *ctermid(char *); -void perror(const char *) relegated; -size_t confstr(int, char *, size_t); +int fclose(FILE *) libcesque; +int fseek(FILE *, long, int) libcesque paramsnonnull(); +long ftell(FILE *) libcesque paramsnonnull(); +int fseeko(FILE *, int64_t, int) libcesque paramsnonnull(); +int64_t ftello(FILE *) libcesque paramsnonnull(); +void rewind(FILE *) libcesque paramsnonnull(); +int fopenflags(const char *) libcesque paramsnonnull(); +void setlinebuf(FILE *) libcesque; +void setbuf(FILE *, char *) libcesque; +void setbuffer(FILE *, char *, size_t) libcesque; +int setvbuf(FILE *, char *, int, size_t) libcesque; +int pclose(FILE *) libcesque; +char *ctermid(char *) libcesque; +void perror(const char *) libcesque relegated; +size_t confstr(int, char *, size_t) libcesque; typedef uint64_t fpos_t; -char *gets(char *) paramsnonnull(); -int fgetpos(FILE *, fpos_t *) paramsnonnull(); -int fsetpos(FILE *, const fpos_t *) paramsnonnull(); +char *gets(char *) libcesque paramsnonnull(); +int fgetpos(FILE *, fpos_t *) libcesque paramsnonnull(); +int fsetpos(FILE *, const fpos_t *) libcesque paramsnonnull(); -FILE *tmpfile(void) __wur; -char *tmpnam(char *) __wur; -char *tmpnam_r(char *) __wur; -int system(const char *); -FILE *popen(const char *, const char *); +FILE *tmpfile(void) libcesque __wur; +char *tmpnam(char *) libcesque __wur; +char *tmpnam_r(char *) libcesque __wur; +int system(const char *) libcesque; +FILE *popen(const char *, const char *) libcesque; /*───────────────────────────────────────────────────────────────────────────│─╗ │ cosmopolitan § standard i/o » formatting ─╬─│┼ ╚────────────────────────────────────────────────────────────────────────────│*/ -int printf(const char *, ...) printfesque(1) - paramsnonnull((1)) dontthrow nocallback; -int vprintf(const char *, va_list) paramsnonnull() dontthrow nocallback; +int printf(const char *, ...) printfesque(1) paramsnonnull((1)) libcesque; +int vprintf(const char *, va_list) paramsnonnull() libcesque; int fprintf(FILE *, const char *, ...) printfesque(2) - paramsnonnull((1, 2)) dontthrow nocallback; -int vfprintf(FILE *, const char *, va_list) - paramsnonnull() dontthrow nocallback; -int scanf(const char *, ...) scanfesque(1); -int vscanf(const char *, va_list); -int fscanf(FILE *, const char *, ...) scanfesque(2); -int vfscanf(FILE *, const char *, va_list); + paramsnonnull((1, 2)) libcesque; +int vfprintf(FILE *, const char *, va_list) paramsnonnull() libcesque; +int scanf(const char *, ...) libcesque scanfesque(1); +int vscanf(const char *, va_list) libcesque; +int fscanf(FILE *, const char *, ...) libcesque scanfesque(2); +int vfscanf(FILE *, const char *, va_list) libcesque; -int snprintf(char *, size_t, const char *, ...) - printfesque(3) dontthrow nocallback; -int vsnprintf(char *, size_t, const char *, va_list) -dontthrow nocallback; -int sprintf(char *, const char *, ...) dontthrow nocallback; -int vsprintf(char *, const char *, va_list) -dontthrow nocallback; +int snprintf(char *, size_t, const char *, ...) printfesque(3) libcesque; +int vsnprintf(char *, size_t, const char *, va_list) libcesque; +int sprintf(char *, const char *, ...) libcesque; +int vsprintf(char *, const char *, va_list) libcesque; -int fwprintf(FILE *, const wchar_t *, ...); -int fwscanf(FILE *, const wchar_t *, ...); -int swprintf(wchar_t *, size_t, const wchar_t *, ...); -int swscanf(const wchar_t *, const wchar_t *, ...); -int vfwprintf(FILE *, const wchar_t *, va_list); -int vfwscanf(FILE *, const wchar_t *, va_list); -int vswprintf(wchar_t *, size_t, const wchar_t *, va_list); -int vswscanf(const wchar_t *, const wchar_t *, va_list); -int vwprintf(const wchar_t *, va_list); -int vwscanf(const wchar_t *, va_list); -int wprintf(const wchar_t *, ...); -int wscanf(const wchar_t *, ...); -int fwide(FILE *, int); +int fwprintf(FILE *, const wchar_t *, ...) libcesque; +int fwscanf(FILE *, const wchar_t *, ...) libcesque; +int swprintf(wchar_t *, size_t, const wchar_t *, ...) libcesque; +int swscanf(const wchar_t *, const wchar_t *, ...) libcesque; +int vfwprintf(FILE *, const wchar_t *, va_list) libcesque; +int vfwscanf(FILE *, const wchar_t *, va_list) libcesque; +int vswprintf(wchar_t *, size_t, const wchar_t *, va_list) libcesque; +int vswscanf(const wchar_t *, const wchar_t *, va_list) libcesque; +int vwprintf(const wchar_t *, va_list) libcesque; +int vwscanf(const wchar_t *, va_list) libcesque; +int wprintf(const wchar_t *, ...) libcesque; +int wscanf(const wchar_t *, ...) libcesque; +int fwide(FILE *, int) libcesque; -int sscanf(const char *, const char *, ...) scanfesque(2); -int vsscanf(const char *, const char *, va_list); +int sscanf(const char *, const char *, ...) libcesque scanfesque(2); +int vsscanf(const char *, const char *, va_list) libcesque; /*───────────────────────────────────────────────────────────────────────────│─╗ │ cosmopolitan § standard i/o » allocating ─╬─│┼ @@ -146,38 +141,36 @@ int vasprintf(char **, const char *, va_list) paramsnonnull() libcesque; │ cosmopolitan § standard i/o » without mutexes ─╬─│┼ ╚────────────────────────────────────────────────────────────────────────────│*/ -int getc_unlocked(FILE *) paramsnonnull(); -int puts_unlocked(const char *); -int getchar_unlocked(void); -int putc_unlocked(int, FILE *) paramsnonnull(); -int putchar_unlocked(int); -void clearerr_unlocked(FILE *); -int feof_unlocked(FILE *); -int ferror_unlocked(FILE *); -int fileno_unlocked(FILE *); -int fflush_unlocked(FILE *); -int fgetc_unlocked(FILE *); -int fputc_unlocked(int, FILE *); -size_t fread_unlocked(void *, size_t, size_t, FILE *); -size_t fwrite_unlocked(const void *, size_t, size_t, FILE *); -char *fgets_unlocked(char *, int, FILE *); -int fputs_unlocked(const char *, FILE *); -wint_t getwc_unlocked(FILE *); -wint_t getwchar_unlocked(void); -wint_t fgetwc_unlocked(FILE *); -wint_t fputwc_unlocked(wchar_t, FILE *); -wint_t putwc_unlocked(wchar_t, FILE *); -wint_t putwchar_unlocked(wchar_t); -wchar_t *fgetws_unlocked(wchar_t *, int, FILE *); -int fputws_unlocked(const wchar_t *, FILE *); -wint_t ungetwc_unlocked(wint_t, FILE *) paramsnonnull(); -int ungetc_unlocked(int, FILE *) paramsnonnull(); -int fseek_unlocked(FILE *, int64_t, int) paramsnonnull(); +int getc_unlocked(FILE *) libcesque paramsnonnull(); +int puts_unlocked(const char *) libcesque; +int getchar_unlocked(void) libcesque; +int putc_unlocked(int, FILE *) libcesque paramsnonnull(); +int putchar_unlocked(int) libcesque; +void clearerr_unlocked(FILE *) libcesque; +int feof_unlocked(FILE *) libcesque; +int ferror_unlocked(FILE *) libcesque; +int fileno_unlocked(FILE *) libcesque; +int fflush_unlocked(FILE *) libcesque; +int fgetc_unlocked(FILE *) libcesque; +int fputc_unlocked(int, FILE *) libcesque; +size_t fread_unlocked(void *, size_t, size_t, FILE *) libcesque; +size_t fwrite_unlocked(const void *, size_t, size_t, FILE *) libcesque; +char *fgets_unlocked(char *, int, FILE *) libcesque; +int fputs_unlocked(const char *, FILE *) libcesque; +wint_t getwc_unlocked(FILE *) libcesque; +wint_t getwchar_unlocked(void) libcesque; +wint_t fgetwc_unlocked(FILE *) libcesque; +wint_t fputwc_unlocked(wchar_t, FILE *) libcesque; +wint_t putwc_unlocked(wchar_t, FILE *) libcesque; +wint_t putwchar_unlocked(wchar_t) libcesque; +wchar_t *fgetws_unlocked(wchar_t *, int, FILE *) libcesque; +int fputws_unlocked(const wchar_t *, FILE *) libcesque; +wint_t ungetwc_unlocked(wint_t, FILE *) libcesque paramsnonnull(); +int ungetc_unlocked(int, FILE *) libcesque paramsnonnull(); +int fseek_unlocked(FILE *, int64_t, int) libcesque paramsnonnull(); ssize_t getdelim_unlocked(char **, size_t *, int, FILE *) paramsnonnull(); -int fprintf_unlocked(FILE *, const char *, ...) printfesque(2) - paramsnonnull((1, 2)) dontthrow nocallback; -int vfprintf_unlocked(FILE *, const char *, va_list) - paramsnonnull() dontthrow nocallback; +int fprintf_unlocked(FILE *, const char *, ...) printfesque(2) libcesque; +int vfprintf_unlocked(FILE *, const char *, va_list) paramsnonnull() libcesque; COSMOPOLITAN_C_END_ #endif /* COSMOPOLITAN_LIBC_STDIO_H_ */ diff --git a/libc/stdio/stdio_ext.h b/libc/stdio/stdio_ext.h index 8ddfb9739..4438bfc8c 100644 --- a/libc/stdio/stdio_ext.h +++ b/libc/stdio/stdio_ext.h @@ -8,20 +8,20 @@ COSMOPOLITAN_C_START_ -size_t __fbufsize(FILE *); -size_t __fpending(FILE *); -int __flbf(FILE *); -int __freadable(FILE *); -int __fwritable(FILE *); -int __freading(FILE *); -int __fwriting(FILE *); -int __fsetlocking(FILE *, int); -void _flushlbf(void); -void __fpurge(FILE *); -void __fseterr(FILE *); -const char *__freadptr(FILE *, size_t *); -size_t __freadahead(FILE *); -void __freadptrinc(FILE *, size_t); +size_t __fbufsize(FILE *) libcesque; +size_t __fpending(FILE *) libcesque; +int __flbf(FILE *) libcesque; +int __freadable(FILE *) libcesque; +int __fwritable(FILE *) libcesque; +int __freading(FILE *) libcesque; +int __fwriting(FILE *) libcesque; +int __fsetlocking(FILE *, int) libcesque; +void _flushlbf(void) libcesque; +void __fpurge(FILE *) libcesque; +void __fseterr(FILE *) libcesque; +const char *__freadptr(FILE *, size_t *) libcesque; +size_t __freadahead(FILE *) libcesque; +void __freadptrinc(FILE *, size_t) libcesque; COSMOPOLITAN_C_END_ #endif /* COSMOPOLITAN_LIBC_STDIO_STDIO_EXT_H_ */ diff --git a/libc/stdio/syscall.c b/libc/stdio/syscall.c index 73d9a24df..66113d2e7 100644 --- a/libc/stdio/syscall.c +++ b/libc/stdio/syscall.c @@ -27,7 +27,7 @@ * - `SYS_gettid` * - `SYS_getrandom` * - * @return negative errno on error + * @return system call result, or -1 w/ errno */ long syscall(long number, ...) { switch (number) { diff --git a/libc/stdio/syscall.h b/libc/stdio/syscall.h index dfef5caa2..afd3d67ef 100644 --- a/libc/stdio/syscall.h +++ b/libc/stdio/syscall.h @@ -5,7 +5,7 @@ COSMOPOLITAN_C_START_ #define SYS_gettid 186 #define SYS_getrandom 318 -long syscall(long, ...); +long syscall(long, ...) libcesque; COSMOPOLITAN_C_END_ #endif /* COSMOPOLITAN_LIBC_STDIO_SYSCALL_H_ */ diff --git a/libc/stdlib.h b/libc/stdlib.h index 1c1fad34e..9c5bc3b1e 100644 --- a/libc/stdlib.h +++ b/libc/stdlib.h @@ -2,9 +2,9 @@ #define COSMOPOLITAN_LIBC_STDLIB_H_ COSMOPOLITAN_C_START_ -char *fcvt(double, int, int *, int *); -char *ecvt(double, int, int *, int *); -char *gcvt(double, int, char *); +char *fcvt(double, int, int *, int *) libcesque; +char *ecvt(double, int, int *, int *) libcesque; +char *gcvt(double, int, char *) libcesque; COSMOPOLITAN_C_END_ #endif /* COSMOPOLITAN_LIBC_STDLIB_H_ */ diff --git a/libc/str/highwayhash64.h b/libc/str/highwayhash64.h index c2ff2b2c2..e31b870b3 100644 --- a/libc/str/highwayhash64.h +++ b/libc/str/highwayhash64.h @@ -2,7 +2,7 @@ #define COSMOPOLITAN_LIBC_STR_HIGHWAYHASH64_H_ COSMOPOLITAN_C_START_ -uint64_t HighwayHash64(const void *, size_t, const uint64_t[4]); +uint64_t HighwayHash64(const void *, size_t, const uint64_t[4]) libcesque; COSMOPOLITAN_C_END_ #endif /* COSMOPOLITAN_LIBC_STR_HIGHWAYHASH64_H_ */ diff --git a/libc/str/locale.h b/libc/str/locale.h index 6a2a18e56..ed3ee6ad8 100644 --- a/libc/str/locale.h +++ b/libc/str/locale.h @@ -40,48 +40,48 @@ extern const struct __locale_map __c_dot_utf8; extern const struct __locale_struct __c_locale; extern const struct __locale_struct __c_dot_utf8_locale; -char *nl_langinfo_l(int, locale_t); -char *setlocale(int, const char *); -double strtod_l(const char *, char **, locale_t); -double wcstod_l(const wchar_t *, wchar_t **, locale_t); -float strtof_l(const char *, char **, locale_t); -float wcstof_l(const wchar_t *, wchar_t **, locale_t); -int isdigit_l(int, locale_t); -int islower_l(int, locale_t); -int isupper_l(int, locale_t); -int iswalpha_l(wint_t, locale_t); -int iswblank_l(wint_t, locale_t); -int iswcntrl_l(wint_t, locale_t); -int iswdigit_l(wint_t, locale_t); -int iswlower_l(wint_t, locale_t); -int iswprint_l(wint_t, locale_t); -int iswpunct_l(wint_t, locale_t); -int iswspace_l(wint_t, locale_t); -int iswupper_l(wint_t, locale_t); -int iswxdigit_l(wint_t, locale_t); -int isxdigit_l(int, locale_t); -int strcoll_l(const char *, const char *, locale_t); -int tolower_l(int, locale_t); -int toupper_l(int, locale_t); -int wcscoll_l(const wchar_t *, const wchar_t *, locale_t); -locale_t duplocale(locale_t); -locale_t newlocale(int, const char *, locale_t); -locale_t uselocale(locale_t); -long double strtold_l(const char *, char **, locale_t); -long double wcstold_l(const wchar_t *, wchar_t **, locale_t); -long long strtoll_l(const char *, char **, int, locale_t); -long long wcstoll_l(const wchar_t *, wchar_t **, int, locale_t); +char *nl_langinfo_l(int, locale_t) libcesque; +char *setlocale(int, const char *) libcesque; +double strtod_l(const char *, char **, locale_t) libcesque; +double wcstod_l(const wchar_t *, wchar_t **, locale_t) libcesque; +float strtof_l(const char *, char **, locale_t) libcesque; +float wcstof_l(const wchar_t *, wchar_t **, locale_t) libcesque; +int isdigit_l(int, locale_t) libcesque; +int islower_l(int, locale_t) libcesque; +int isupper_l(int, locale_t) libcesque; +int iswalpha_l(wint_t, locale_t) libcesque; +int iswblank_l(wint_t, locale_t) libcesque; +int iswcntrl_l(wint_t, locale_t) libcesque; +int iswdigit_l(wint_t, locale_t) libcesque; +int iswlower_l(wint_t, locale_t) libcesque; +int iswprint_l(wint_t, locale_t) libcesque; +int iswpunct_l(wint_t, locale_t) libcesque; +int iswspace_l(wint_t, locale_t) libcesque; +int iswupper_l(wint_t, locale_t) libcesque; +int iswxdigit_l(wint_t, locale_t) libcesque; +int isxdigit_l(int, locale_t) libcesque; +int strcoll_l(const char *, const char *, locale_t) libcesque; +int tolower_l(int, locale_t) libcesque; +int toupper_l(int, locale_t) libcesque; +int wcscoll_l(const wchar_t *, const wchar_t *, locale_t) libcesque; +locale_t duplocale(locale_t) libcesque; +locale_t newlocale(int, const char *, locale_t) libcesque; +locale_t uselocale(locale_t) libcesque; +long double strtold_l(const char *, char **, locale_t) libcesque; +long double wcstold_l(const wchar_t *, wchar_t **, locale_t) libcesque; +long long strtoll_l(const char *, char **, int, locale_t) libcesque; +long long wcstoll_l(const wchar_t *, wchar_t **, int, locale_t) libcesque; size_t strftime_l(char *, size_t, char const *, struct tm const *, locale_t); -size_t strxfrm_l(char *, const char *, size_t, locale_t); -size_t wcsxfrm_l(wchar_t *, const wchar_t *, size_t, locale_t); -unsigned long long strtoull_l(const char *, char **, int, locale_t); +size_t strxfrm_l(char *, const char *, size_t, locale_t) libcesque; +size_t wcsxfrm_l(wchar_t *, const wchar_t *, size_t, locale_t) libcesque; +unsigned long long strtoull_l(const char *, char **, int, locale_t) libcesque; unsigned long long wcstoull_l(const wchar_t *, wchar_t **, int, locale_t); -void freelocale(locale_t); -wint_t towlower_l(wint_t, locale_t); -wint_t towupper_l(wint_t, locale_t); -int strcasecmp_l(const char *, const char *, locale_t); -int strncasecmp_l(const char *, const char *, size_t, locale_t); -ssize_t strfmon_l(char *, size_t, locale_t, const char *, ...); +void freelocale(locale_t) libcesque; +wint_t towlower_l(wint_t, locale_t) libcesque; +wint_t towupper_l(wint_t, locale_t) libcesque; +int strcasecmp_l(const char *, const char *, locale_t) libcesque; +int strncasecmp_l(const char *, const char *, size_t, locale_t) libcesque; +ssize_t strfmon_l(char *, size_t, locale_t, const char *, ...) libcesque; COSMOPOLITAN_C_END_ #endif /* COSMOPOLITAN_LIBC_STR_LOCALE_H_ */ diff --git a/libc/str/nltypes.h b/libc/str/nltypes.h index 2b351603c..6e9366be1 100644 --- a/libc/str/nltypes.h +++ b/libc/str/nltypes.h @@ -9,9 +9,9 @@ COSMOPOLITAN_C_START_ typedef int nl_item; typedef void *nl_catd; -nl_catd catopen(const char *, int); -char *catgets(nl_catd, int, int, const char *); -int catclose(nl_catd); +nl_catd catopen(const char *, int) libcesque; +char *catgets(nl_catd, int, int, const char *) libcesque; +int catclose(nl_catd) libcesque; COSMOPOLITAN_C_END_ #endif /* COSMOPOLITAN_LIBC_STR_NLTYPES_H_ */ diff --git a/libc/str/slice.h b/libc/str/slice.h index beddaca2b..c87a7b5da 100644 --- a/libc/str/slice.h +++ b/libc/str/slice.h @@ -16,8 +16,8 @@ COSMOPOLITAN_C_START_ __n == (m) && !memcasecmp(a, b, __n); \ }) -int CompareSlices(const char *, size_t, const char *, size_t); -int CompareSlicesCase(const char *, size_t, const char *, size_t); +int CompareSlices(const char *, size_t, const char *, size_t) libcesque; +int CompareSlicesCase(const char *, size_t, const char *, size_t) libcesque; COSMOPOLITAN_C_END_ #endif /* COSMOPOLITAN_LIBC_STR_SLICE_H_ */ diff --git a/libc/str/str.h b/libc/str/str.h index 38f42fb4d..18a91bd20 100644 --- a/libc/str/str.h +++ b/libc/str/str.h @@ -23,38 +23,38 @@ #if !(__ASSEMBLER__ + __LINKER__ + 0) COSMOPOLITAN_C_START_ -int isascii(int); -int isspace(int); -int isalpha(int); -int isdigit(int); -int isalnum(int); -int isxdigit(int); -int isprint(int); -int islower(int); -int isupper(int); -int isblank(int); -int iscntrl(int); -int isgraph(int); -int tolower(int); -int ispunct(int); -int toupper(int); -int toascii(int); +int isascii(int) libcesque; +int isspace(int) libcesque; +int isalpha(int) libcesque; +int isdigit(int) libcesque; +int isalnum(int) libcesque; +int isxdigit(int) libcesque; +int isprint(int) libcesque; +int islower(int) libcesque; +int isupper(int) libcesque; +int isblank(int) libcesque; +int iscntrl(int) libcesque; +int isgraph(int) libcesque; +int tolower(int) libcesque; +int ispunct(int) libcesque; +int toupper(int) libcesque; +int toascii(int) libcesque; -int iswalnum(wint_t); -int iswalpha(wint_t); -int iswblank(wint_t); -int iswcntrl(wint_t); -int iswdigit(wint_t); -int iswgraph(wint_t); -int iswlower(wint_t); -int iswspace(wint_t); -int iswupper(wint_t); -int iswxdigit(wint_t); -int iswpunct(wint_t); -int iswprint(wint_t); -int iswseparator(wint_t); -wint_t towlower(wint_t); -wint_t towupper(wint_t); +int iswalnum(wint_t) libcesque; +int iswalpha(wint_t) libcesque; +int iswblank(wint_t) libcesque; +int iswcntrl(wint_t) libcesque; +int iswdigit(wint_t) libcesque; +int iswgraph(wint_t) libcesque; +int iswlower(wint_t) libcesque; +int iswspace(wint_t) libcesque; +int iswupper(wint_t) libcesque; +int iswxdigit(wint_t) libcesque; +int iswpunct(wint_t) libcesque; +int iswprint(wint_t) libcesque; +int iswseparator(wint_t) libcesque; +wint_t towlower(wint_t) libcesque; +wint_t towupper(wint_t) libcesque; void *memset(void *, int, size_t) memcpyesque; void *memmove(void *, const void *, size_t) memcpyesque; @@ -65,19 +65,19 @@ void *memccpy(void *restrict, const void *restrict, int, size_t) memcpyesque; void explicit_bzero(void *, size_t); int memcmp(const void *, const void *, size_t) strlenesque; -int timingsafe_bcmp(const void *, const void *, size_t); -int timingsafe_memcmp(const void *, const void *, size_t); +int timingsafe_bcmp(const void *, const void *, size_t) libcesque; +int timingsafe_memcmp(const void *, const void *, size_t) libcesque; size_t strlen(const char *) strlenesque; size_t strnlen(const char *, size_t) strlenesque; -size_t strnlen_s(const char *, size_t); +size_t strnlen_s(const char *, size_t) libcesque; char *strchr(const char *, int) strlenesque; void *memchr(const void *, int, size_t) strlenesque; char *strchrnul(const char *, int) strlenesque returnsnonnull; void *rawmemchr(const void *, int) strlenesque returnsnonnull; size_t wcslen(const wchar_t *) strlenesque; size_t wcsnlen(const wchar_t *, size_t) strlenesque; -size_t wcsnlen_s(const wchar_t *, size_t); +size_t wcsnlen_s(const wchar_t *, size_t) libcesque; wchar_t *wcschr(const wchar_t *, wchar_t) strlenesque; wchar_t *wmemchr(const wchar_t *, wchar_t, size_t) strlenesque; wchar_t *wcschrnul(const wchar_t *, wchar_t) @@ -107,14 +107,14 @@ size_t strcspn(const char *, const char *) strlenesque; size_t wcscspn(const wchar_t *, const wchar_t *) strlenesque; void *memfrob(void *, size_t) memcpyesque; int strcoll(const char *, const char *) strlenesque; -char *strsep(char **, const char *) paramsnonnull(); +char *strsep(char **, const char *) libcesque paramsnonnull(); char *stpcpy(char *, const char *) memcpyesque; char *stpncpy(char *, const char *, size_t) memcpyesque; char *strcat(char *, const char *) memcpyesque; wchar_t *wcscat(wchar_t *, const wchar_t *) memcpyesque; -size_t strlcpy(char *, const char *, size_t); -size_t strlcat(char *, const char *, size_t); -size_t strxfrm(char *, const char *, size_t); +size_t strlcpy(char *, const char *, size_t) libcesque; +size_t strlcat(char *, const char *, size_t) libcesque; +size_t strxfrm(char *, const char *, size_t) libcesque; char *strcpy(char *, const char *) memcpyesque; wchar_t *wcscpy(wchar_t *, const wchar_t *) memcpyesque; char *strncat(char *, const char *, size_t) memcpyesque; @@ -123,56 +123,56 @@ char *strncpy(char *, const char *, size_t) memcpyesque; char *strtok(char *, const char *) paramsnonnull((2)) libcesque; char *strtok_r(char *, const char *, char **) paramsnonnull((2, 3)); wchar_t *wcstok(wchar_t *, const wchar_t *, wchar_t **) paramsnonnull((2, 3)); -int strverscmp(const char *, const char *); +int strverscmp(const char *, const char *) libcesque; wchar_t *wmemset(wchar_t *, wchar_t, size_t) memcpyesque; wchar_t *wmemcpy(wchar_t *, const wchar_t *, size_t) memcpyesque; wchar_t *wmempcpy(wchar_t *, const wchar_t *, size_t) memcpyesque; wchar_t *wmemmove(wchar_t *, const wchar_t *, size_t) memcpyesque; void *memmem(const void *, size_t, const void *, size_t) libcesque nosideeffect; -ssize_t strfmon(char *, size_t, const char *, ...); -long a64l(const char *); -char *l64a(long); +ssize_t strfmon(char *, size_t, const char *, ...) libcesque; +long a64l(const char *) libcesque; +char *l64a(long) libcesque; typedef unsigned mbstate_t; -wchar_t *wcsncpy(wchar_t *, const wchar_t *, size_t); -int mbtowc(wchar_t *, const char *, size_t); -size_t mbrtowc(wchar_t *, const char *, size_t, mbstate_t *); -size_t mbsrtowcs(wchar_t *, const char **, size_t, mbstate_t *); -size_t mbstowcs(wchar_t *, const char *, size_t); -size_t wcrtomb(char *, wchar_t, mbstate_t *); -size_t c32rtomb(char *, char32_t, mbstate_t *); -size_t mbrtoc32(char32_t *, const char *, size_t, mbstate_t *); -size_t c16rtomb(char *, char16_t, mbstate_t *); -size_t mbrtoc16(char16_t *, const char *, size_t, mbstate_t *); -size_t mbrlen(const char *, size_t, mbstate_t *); +wchar_t *wcsncpy(wchar_t *, const wchar_t *, size_t) libcesque; +int mbtowc(wchar_t *, const char *, size_t) libcesque; +size_t mbrtowc(wchar_t *, const char *, size_t, mbstate_t *) libcesque; +size_t mbsrtowcs(wchar_t *, const char **, size_t, mbstate_t *) libcesque; +size_t mbstowcs(wchar_t *, const char *, size_t) libcesque; +size_t wcrtomb(char *, wchar_t, mbstate_t *) libcesque; +size_t c32rtomb(char *, char32_t, mbstate_t *) libcesque; +size_t mbrtoc32(char32_t *, const char *, size_t, mbstate_t *) libcesque; +size_t c16rtomb(char *, char16_t, mbstate_t *) libcesque; +size_t mbrtoc16(char16_t *, const char *, size_t, mbstate_t *) libcesque; +size_t mbrlen(const char *, size_t, mbstate_t *) libcesque; size_t mbsnrtowcs(wchar_t *, const char **, size_t, size_t, mbstate_t *); size_t wcsnrtombs(char *, const wchar_t **, size_t, size_t, mbstate_t *); -size_t wcsrtombs(char *, const wchar_t **, size_t, mbstate_t *); -size_t wcstombs(char *, const wchar_t *, size_t); -int mbsinit(const mbstate_t *); -int mblen(const char *, size_t); -int wctomb(char *, wchar_t); -int wctob(wint_t); -wint_t btowc(int); +size_t wcsrtombs(char *, const wchar_t **, size_t, mbstate_t *) libcesque; +size_t wcstombs(char *, const wchar_t *, size_t) libcesque; +int mbsinit(const mbstate_t *) libcesque; +int mblen(const char *, size_t) libcesque; +int wctomb(char *, wchar_t) libcesque; +int wctob(wint_t) libcesque; +wint_t btowc(int) libcesque; typedef unsigned wctype_t; wctype_t wctype(const char *) strlenesque; -int iswctype(wint_t, wctype_t) pureconst; +pureconst int iswctype(wint_t, wctype_t) libcesque; typedef const int *wctrans_t; -wctrans_t wctrans(const char *); -wint_t towctrans(wint_t, wctrans_t); +wctrans_t wctrans(const char *) libcesque; +wint_t towctrans(wint_t, wctrans_t) libcesque; -int getsubopt(char **, char *const *, char **) paramsnonnull(); +int getsubopt(char **, char *const *, char **) libcesque paramsnonnull(); char *strsignal(int) returnsnonnull libcesque; char *strerror(int) returnsnonnull dontthrow nocallback; errno_t strerror_r(int, char *, size_t) libcesque; char *__xpg_strerror_r(int, char *, size_t) libcesque; #ifdef _COSMO_SOURCE -uint64_t tpenc(uint32_t) pureconst; +pureconst uint64_t tpenc(uint32_t) libcesque; char *chomp(char *) libcesque; wchar_t *wchomp(wchar_t *) libcesque; uint64_t __fnv(const void *, size_t) strlenesque; @@ -205,11 +205,11 @@ char16_t *strncat16(char16_t *, const char16_t *, size_t) memcpyesque; char16_t *memset16(char16_t *, char16_t, size_t) memcpyesque; bool32 startswith16(const char16_t *, const char16_t *) strlenesque; bool32 endswith16(const char16_t *, const char16_t *) strlenesque; -axdx_t tprecode8to16(char16_t *, size_t, const char *); -axdx_t tprecode16to8(char *, size_t, const char16_t *); +axdx_t tprecode8to16(char16_t *, size_t, const char *) libcesque; +axdx_t tprecode16to8(char *, size_t, const char16_t *) libcesque; bool32 wcsstartswith(const wchar_t *, const wchar_t *) strlenesque; bool32 wcsendswith(const wchar_t *, const wchar_t *) strlenesque; -char *__join_paths(char *, size_t, const char *, const char *) __wur; +char *__join_paths(char *, size_t, const char *, const char *) libcesque __wur; int __mkntpathat(int, const char *, int, char16_t[hasatleast 1024]); #endif /* _COSMO_SOURCE */ diff --git a/libc/str/unicode.h b/libc/str/unicode.h index d6178df1b..33a6f9400 100644 --- a/libc/str/unicode.h +++ b/libc/str/unicode.h @@ -29,9 +29,9 @@ struct lconv { char int_n_sign_posn; }; -int wcwidth(wchar_t) pureconst; +pureconst int wcwidth(wchar_t) libcesque; int wcswidth(const wchar_t *, size_t) strlenesque; -struct lconv *localeconv(void); +struct lconv *localeconv(void) libcesque; #ifdef _COSMO_SOURCE int wcsnwidth(const wchar_t *, size_t, size_t) strlenesque; diff --git a/libc/sysv/errfuns.h b/libc/sysv/errfuns.h index 053da209b..4afc15d30 100644 --- a/libc/sysv/errfuns.h +++ b/libc/sysv/errfuns.h @@ -19,137 +19,137 @@ * @see libc/sysv/errfuns.inc (for implementation) */ -intptr_t einval(void) relegated; -intptr_t eperm(void) relegated; -intptr_t enoent(void) relegated; -intptr_t esrch(void) relegated; -intptr_t eintr(void) relegated; -intptr_t eio(void) relegated; -intptr_t enxio(void) relegated; -intptr_t e2big(void) relegated; -intptr_t enoexec(void) relegated; -intptr_t ebadf(void) relegated; -intptr_t echild(void) relegated; -intptr_t eagain(void) relegated; -intptr_t enomem(void) relegated; -intptr_t eacces(void) relegated; -intptr_t efault(void) relegated; -intptr_t enotblk(void) relegated; -intptr_t ebusy(void) relegated; -intptr_t eexist(void) relegated; -intptr_t exdev(void) relegated; -intptr_t enodev(void) relegated; -intptr_t enotdir(void) relegated; -intptr_t eisdir(void) relegated; -intptr_t enfile(void) relegated; -intptr_t emfile(void) relegated; -intptr_t enotty(void) relegated; -intptr_t enotsup(void) relegated; -intptr_t etxtbsy(void) relegated; -intptr_t efbig(void) relegated; -intptr_t enospc(void) relegated; -intptr_t espipe(void) relegated; -intptr_t erofs(void) relegated; -intptr_t emlink(void) relegated; -intptr_t epipe(void) relegated; -intptr_t edom(void) relegated; -intptr_t erange(void) relegated; -intptr_t edeadlk(void) relegated; -intptr_t enametoolong(void) relegated; -intptr_t enolck(void) relegated; -intptr_t enosys(void) relegated; -intptr_t enotempty(void) relegated; -intptr_t eloop(void) relegated; -intptr_t enomsg(void) relegated; -intptr_t eidrm(void) relegated; -intptr_t echrng(void) relegated; -intptr_t el2nsync(void) relegated; -intptr_t el3hlt(void) relegated; -intptr_t el3rst(void) relegated; -intptr_t elnrng(void) relegated; -intptr_t eunatch(void) relegated; -intptr_t enocsi(void) relegated; -intptr_t el2hlt(void) relegated; -intptr_t ebade(void) relegated; -intptr_t ebadr(void) relegated; -intptr_t exfull(void) relegated; -intptr_t enoano(void) relegated; -intptr_t ebadrqc(void) relegated; -intptr_t ebadslt(void) relegated; -intptr_t enostr(void) relegated; -intptr_t enodata(void) relegated; -intptr_t etime(void) relegated; -intptr_t enosr(void) relegated; -intptr_t enonet(void) relegated; -intptr_t enopkg(void) relegated; -intptr_t eremote(void) relegated; -intptr_t enolink(void) relegated; -intptr_t eadv(void) relegated; -intptr_t esrmnt(void) relegated; -intptr_t ecomm(void) relegated; -intptr_t eproto(void) relegated; -intptr_t emultihop(void) relegated; -intptr_t edotdot(void) relegated; -intptr_t ebadmsg(void) relegated; -intptr_t eoverflow(void) relegated; -intptr_t enotuniq(void) relegated; -intptr_t ebadfd(void) relegated; -intptr_t eremchg(void) relegated; -intptr_t elibacc(void) relegated; -intptr_t elibbad(void) relegated; -intptr_t elibscn(void) relegated; -intptr_t elibmax(void) relegated; -intptr_t elibexec(void) relegated; -intptr_t eilseq(void) relegated; -intptr_t erestart(void) relegated; -intptr_t estrpipe(void) relegated; -intptr_t eusers(void) relegated; -intptr_t enotsock(void) relegated; -intptr_t edestaddrreq(void) relegated; -intptr_t emsgsize(void) relegated; -intptr_t eprototype(void) relegated; -intptr_t enoprotoopt(void) relegated; -intptr_t eprotonosupport(void) relegated; -intptr_t esocktnosupport(void) relegated; -intptr_t eopnotsupp(void) relegated; -intptr_t epfnosupport(void) relegated; -intptr_t eafnosupport(void) relegated; -intptr_t eaddrinuse(void) relegated; -intptr_t eaddrnotavail(void) relegated; -intptr_t enetdown(void) relegated; -intptr_t enetunreach(void) relegated; -intptr_t enetreset(void) relegated; -intptr_t econnaborted(void) relegated; -intptr_t econnreset(void) relegated; -intptr_t enobufs(void) relegated; -intptr_t eisconn(void) relegated; -intptr_t enotconn(void) relegated; -intptr_t eshutdown(void) relegated; -intptr_t etoomanyrefs(void) relegated; -intptr_t etimedout(void) relegated; -intptr_t econnrefused(void) relegated; -intptr_t ehostdown(void) relegated; -intptr_t ehostunreach(void) relegated; -intptr_t ealready(void) relegated; -intptr_t einprogress(void) relegated; -intptr_t estale(void) relegated; -intptr_t euclean(void) relegated; -intptr_t enotnam(void) relegated; -intptr_t enavail(void) relegated; -intptr_t eisnam(void) relegated; -intptr_t eremoteio(void) relegated; -intptr_t edquot(void) relegated; -intptr_t enomedium(void) relegated; -intptr_t emediumtype(void) relegated; -intptr_t ecanceled(void) relegated; -intptr_t enokey(void) relegated; -intptr_t ekeyexpired(void) relegated; -intptr_t ekeyrevoked(void) relegated; -intptr_t ekeyrejected(void) relegated; -intptr_t eownerdead(void) relegated; -intptr_t enotrecoverable(void) relegated; -intptr_t erfkill(void) relegated; -intptr_t ehwpoison(void) relegated; +libcesque intptr_t einval(void) relegated; +libcesque intptr_t eperm(void) relegated; +libcesque intptr_t enoent(void) relegated; +libcesque intptr_t esrch(void) relegated; +libcesque intptr_t eintr(void) relegated; +libcesque intptr_t eio(void) relegated; +libcesque intptr_t enxio(void) relegated; +libcesque intptr_t e2big(void) relegated; +libcesque intptr_t enoexec(void) relegated; +libcesque intptr_t ebadf(void) relegated; +libcesque intptr_t echild(void) relegated; +libcesque intptr_t eagain(void) relegated; +libcesque intptr_t enomem(void) relegated; +libcesque intptr_t eacces(void) relegated; +libcesque intptr_t efault(void) relegated; +libcesque intptr_t enotblk(void) relegated; +libcesque intptr_t ebusy(void) relegated; +libcesque intptr_t eexist(void) relegated; +libcesque intptr_t exdev(void) relegated; +libcesque intptr_t enodev(void) relegated; +libcesque intptr_t enotdir(void) relegated; +libcesque intptr_t eisdir(void) relegated; +libcesque intptr_t enfile(void) relegated; +libcesque intptr_t emfile(void) relegated; +libcesque intptr_t enotty(void) relegated; +libcesque intptr_t enotsup(void) relegated; +libcesque intptr_t etxtbsy(void) relegated; +libcesque intptr_t efbig(void) relegated; +libcesque intptr_t enospc(void) relegated; +libcesque intptr_t espipe(void) relegated; +libcesque intptr_t erofs(void) relegated; +libcesque intptr_t emlink(void) relegated; +libcesque intptr_t epipe(void) relegated; +libcesque intptr_t edom(void) relegated; +libcesque intptr_t erange(void) relegated; +libcesque intptr_t edeadlk(void) relegated; +libcesque intptr_t enametoolong(void) relegated; +libcesque intptr_t enolck(void) relegated; +libcesque intptr_t enosys(void) relegated; +libcesque intptr_t enotempty(void) relegated; +libcesque intptr_t eloop(void) relegated; +libcesque intptr_t enomsg(void) relegated; +libcesque intptr_t eidrm(void) relegated; +libcesque intptr_t echrng(void) relegated; +libcesque intptr_t el2nsync(void) relegated; +libcesque intptr_t el3hlt(void) relegated; +libcesque intptr_t el3rst(void) relegated; +libcesque intptr_t elnrng(void) relegated; +libcesque intptr_t eunatch(void) relegated; +libcesque intptr_t enocsi(void) relegated; +libcesque intptr_t el2hlt(void) relegated; +libcesque intptr_t ebade(void) relegated; +libcesque intptr_t ebadr(void) relegated; +libcesque intptr_t exfull(void) relegated; +libcesque intptr_t enoano(void) relegated; +libcesque intptr_t ebadrqc(void) relegated; +libcesque intptr_t ebadslt(void) relegated; +libcesque intptr_t enostr(void) relegated; +libcesque intptr_t enodata(void) relegated; +libcesque intptr_t etime(void) relegated; +libcesque intptr_t enosr(void) relegated; +libcesque intptr_t enonet(void) relegated; +libcesque intptr_t enopkg(void) relegated; +libcesque intptr_t eremote(void) relegated; +libcesque intptr_t enolink(void) relegated; +libcesque intptr_t eadv(void) relegated; +libcesque intptr_t esrmnt(void) relegated; +libcesque intptr_t ecomm(void) relegated; +libcesque intptr_t eproto(void) relegated; +libcesque intptr_t emultihop(void) relegated; +libcesque intptr_t edotdot(void) relegated; +libcesque intptr_t ebadmsg(void) relegated; +libcesque intptr_t eoverflow(void) relegated; +libcesque intptr_t enotuniq(void) relegated; +libcesque intptr_t ebadfd(void) relegated; +libcesque intptr_t eremchg(void) relegated; +libcesque intptr_t elibacc(void) relegated; +libcesque intptr_t elibbad(void) relegated; +libcesque intptr_t elibscn(void) relegated; +libcesque intptr_t elibmax(void) relegated; +libcesque intptr_t elibexec(void) relegated; +libcesque intptr_t eilseq(void) relegated; +libcesque intptr_t erestart(void) relegated; +libcesque intptr_t estrpipe(void) relegated; +libcesque intptr_t eusers(void) relegated; +libcesque intptr_t enotsock(void) relegated; +libcesque intptr_t edestaddrreq(void) relegated; +libcesque intptr_t emsgsize(void) relegated; +libcesque intptr_t eprototype(void) relegated; +libcesque intptr_t enoprotoopt(void) relegated; +libcesque intptr_t eprotonosupport(void) relegated; +libcesque intptr_t esocktnosupport(void) relegated; +libcesque intptr_t eopnotsupp(void) relegated; +libcesque intptr_t epfnosupport(void) relegated; +libcesque intptr_t eafnosupport(void) relegated; +libcesque intptr_t eaddrinuse(void) relegated; +libcesque intptr_t eaddrnotavail(void) relegated; +libcesque intptr_t enetdown(void) relegated; +libcesque intptr_t enetunreach(void) relegated; +libcesque intptr_t enetreset(void) relegated; +libcesque intptr_t econnaborted(void) relegated; +libcesque intptr_t econnreset(void) relegated; +libcesque intptr_t enobufs(void) relegated; +libcesque intptr_t eisconn(void) relegated; +libcesque intptr_t enotconn(void) relegated; +libcesque intptr_t eshutdown(void) relegated; +libcesque intptr_t etoomanyrefs(void) relegated; +libcesque intptr_t etimedout(void) relegated; +libcesque intptr_t econnrefused(void) relegated; +libcesque intptr_t ehostdown(void) relegated; +libcesque intptr_t ehostunreach(void) relegated; +libcesque intptr_t ealready(void) relegated; +libcesque intptr_t einprogress(void) relegated; +libcesque intptr_t estale(void) relegated; +libcesque intptr_t euclean(void) relegated; +libcesque intptr_t enotnam(void) relegated; +libcesque intptr_t enavail(void) relegated; +libcesque intptr_t eisnam(void) relegated; +libcesque intptr_t eremoteio(void) relegated; +libcesque intptr_t edquot(void) relegated; +libcesque intptr_t enomedium(void) relegated; +libcesque intptr_t emediumtype(void) relegated; +libcesque intptr_t ecanceled(void) relegated; +libcesque intptr_t enokey(void) relegated; +libcesque intptr_t ekeyexpired(void) relegated; +libcesque intptr_t ekeyrevoked(void) relegated; +libcesque intptr_t ekeyrejected(void) relegated; +libcesque intptr_t eownerdead(void) relegated; +libcesque intptr_t enotrecoverable(void) relegated; +libcesque intptr_t erfkill(void) relegated; +libcesque intptr_t ehwpoison(void) relegated; #if defined(__MNO_RED_ZONE__) && defined(__GNUC__) && !defined(__STRICT_ANSI__) #define __ERRFUN(FUNC) \ diff --git a/libc/temp.h b/libc/temp.h index 73b7d4a6e..dea28e41c 100644 --- a/libc/temp.h +++ b/libc/temp.h @@ -2,18 +2,18 @@ #define COSMOPOLITAN_LIBC_TEMP_H_ COSMOPOLITAN_C_START_ -char *mktemp(char *) returnsnonnull paramsnonnull(); -char *mkdtemp(char *) paramsnonnull() __wur; -int mkstemp(char *) paramsnonnull() __wur; -int mkstemps(char *, int) paramsnonnull() __wur; +char *mktemp(char *) libcesque returnsnonnull paramsnonnull(); +char *mkdtemp(char *) libcesque paramsnonnull() __wur; +int mkstemp(char *) libcesque paramsnonnull() __wur; +int mkstemps(char *, int) libcesque paramsnonnull() __wur; #if defined(_GNU_SOURCE) || defined(_COSMO_SOURCE) -int mkostemp(char *, unsigned) paramsnonnull() __wur; -int mkostemps(char *, int, unsigned) paramsnonnull() __wur; +int mkostemp(char *, unsigned) libcesque paramsnonnull() __wur; +int mkostemps(char *, int, unsigned) libcesque paramsnonnull() __wur; #endif #ifdef _COSMO_SOURCE -int openatemp(int, char *, int, int, int) paramsnonnull() __wur; +int openatemp(int, char *, int, int, int) libcesque paramsnonnull() __wur; #endif COSMOPOLITAN_C_END_ diff --git a/libc/thread/posixthread.internal.h b/libc/thread/posixthread.internal.h index 866a288a9..cacd9e344 100644 --- a/libc/thread/posixthread.internal.h +++ b/libc/thread/posixthread.internal.h @@ -97,24 +97,24 @@ extern struct Dll *_pthread_list; extern struct PosixThread _pthread_static; extern _Atomic(pthread_key_dtor) _pthread_key_dtor[PTHREAD_KEYS_MAX]; -int _pthread_atfork(atfork_f, atfork_f, atfork_f); -int _pthread_reschedule(struct PosixThread *); +int _pthread_atfork(atfork_f, atfork_f, atfork_f) libcesque; +int _pthread_reschedule(struct PosixThread *) libcesque; int _pthread_setschedparam_freebsd(int, int, const struct sched_param *); -int _pthread_tid(struct PosixThread *); -intptr_t _pthread_syshand(struct PosixThread *); -long _pthread_cancel_ack(void); -void _pthread_decimate(void); -void _pthread_free(struct PosixThread *, bool); -void _pthread_lock(void); -void _pthread_onfork_child(void); -void _pthread_onfork_parent(void); -void _pthread_onfork_prepare(void); -void _pthread_ungarbage(void); -void _pthread_unkey(struct CosmoTib *); -void _pthread_unlock(void); -void _pthread_unref(struct PosixThread *); -void _pthread_unwind(struct PosixThread *); -void _pthread_zombify(struct PosixThread *); +int _pthread_tid(struct PosixThread *) libcesque; +intptr_t _pthread_syshand(struct PosixThread *) libcesque; +long _pthread_cancel_ack(void) libcesque; +void _pthread_decimate(void) libcesque; +void _pthread_free(struct PosixThread *, bool) libcesque; +void _pthread_lock(void) libcesque; +void _pthread_onfork_child(void) libcesque; +void _pthread_onfork_parent(void) libcesque; +void _pthread_onfork_prepare(void) libcesque; +void _pthread_ungarbage(void) libcesque; +void _pthread_unkey(struct CosmoTib *) libcesque; +void _pthread_unlock(void) libcesque; +void _pthread_unref(struct PosixThread *) libcesque; +void _pthread_unwind(struct PosixThread *) libcesque; +void _pthread_zombify(struct PosixThread *) libcesque; forceinline pureconst struct PosixThread *_pthread_self(void) { return (struct PosixThread *)__get_tls()->tib_pthread; diff --git a/libc/thread/semaphore.h b/libc/thread/semaphore.h index c1149a503..b5abf08ca 100644 --- a/libc/thread/semaphore.h +++ b/libc/thread/semaphore.h @@ -26,16 +26,16 @@ typedef struct { }; } sem_t; -int sem_init(sem_t *, int, unsigned); -int sem_destroy(sem_t *); -int sem_post(sem_t *); -int sem_wait(sem_t *); -int sem_trywait(sem_t *); -int sem_timedwait(sem_t *, const struct timespec *); -int sem_getvalue(sem_t *, int *); -sem_t *sem_open(const char *, int, ...); -int sem_close(sem_t *); -int sem_unlink(const char *); +int sem_init(sem_t *, int, unsigned) libcesque; +int sem_destroy(sem_t *) libcesque; +int sem_post(sem_t *) libcesque; +int sem_wait(sem_t *) libcesque; +int sem_trywait(sem_t *) libcesque; +int sem_timedwait(sem_t *, const struct timespec *) libcesque; +int sem_getvalue(sem_t *, int *) libcesque; +sem_t *sem_open(const char *, int, ...) libcesque; +int sem_close(sem_t *) libcesque; +int sem_unlink(const char *) libcesque; COSMOPOLITAN_C_END_ #endif /* COSMOPOLITAN_LIBC_CALLS_SEMAPHORE_H_ */ diff --git a/libc/thread/thread.h b/libc/thread/thread.h index 7aebd8e11..b496ce664 100644 --- a/libc/thread/thread.h +++ b/libc/thread/thread.h @@ -112,97 +112,97 @@ struct _pthread_cleanup_buffer { /* clang-format off */ -int pthread_atfork(void (*)(void), void (*)(void), void (*)(void)); -int pthread_attr_destroy(pthread_attr_t *) paramsnonnull(); -int pthread_attr_getdetachstate(const pthread_attr_t *, int *) paramsnonnull(); -int pthread_attr_getguardsize(const pthread_attr_t *, size_t *) paramsnonnull(); -int pthread_attr_getinheritsched(const pthread_attr_t *, int *) paramsnonnull(); -int pthread_attr_getschedpolicy(const pthread_attr_t *, int *) paramsnonnull(); -int pthread_attr_getscope(const pthread_attr_t *, int *) paramsnonnull(); -int pthread_attr_getstack(const pthread_attr_t *, void **, size_t *) paramsnonnull(); -int pthread_attr_getstacksize(const pthread_attr_t *, size_t *) paramsnonnull(); -int pthread_attr_init(pthread_attr_t *) paramsnonnull(); -int pthread_attr_setdetachstate(pthread_attr_t *, int) paramsnonnull(); -int pthread_attr_setguardsize(pthread_attr_t *, size_t) paramsnonnull(); -int pthread_attr_setinheritsched(pthread_attr_t *, int) paramsnonnull(); -int pthread_attr_setschedpolicy(pthread_attr_t *, int) paramsnonnull(); -int pthread_attr_setscope(pthread_attr_t *, int) paramsnonnull(); -int pthread_attr_setstack(pthread_attr_t *, void *, size_t) paramsnonnull((1)); -int pthread_attr_setstacksize(pthread_attr_t *, size_t) paramsnonnull(); -int pthread_barrier_destroy(pthread_barrier_t *) paramsnonnull(); -int pthread_barrier_init(pthread_barrier_t *, const pthread_barrierattr_t *, unsigned) paramsnonnull((1)); -int pthread_barrier_wait(pthread_barrier_t *) paramsnonnull(); -int pthread_barrierattr_destroy(pthread_barrierattr_t *) paramsnonnull(); -int pthread_barrierattr_getpshared(const pthread_barrierattr_t *, int *) paramsnonnull(); -int pthread_barrierattr_init(pthread_barrierattr_t *) paramsnonnull(); -int pthread_barrierattr_setpshared(pthread_barrierattr_t *, int) paramsnonnull(); -int pthread_cancel(pthread_t); -int pthread_cond_broadcast(pthread_cond_t *) paramsnonnull(); -int pthread_cond_destroy(pthread_cond_t *) paramsnonnull(); -int pthread_cond_init(pthread_cond_t *, const pthread_condattr_t *) paramsnonnull((1)); -int pthread_cond_signal(pthread_cond_t *) paramsnonnull(); -int pthread_cond_wait(pthread_cond_t *, pthread_mutex_t *) paramsnonnull(); -int pthread_condattr_destroy(pthread_condattr_t *) paramsnonnull(); -int pthread_condattr_getpshared(const pthread_condattr_t *, int *) paramsnonnull(); -int pthread_condattr_init(pthread_condattr_t *) paramsnonnull(); -int pthread_condattr_setpshared(pthread_condattr_t *, int) paramsnonnull(); -int pthread_create(pthread_t *, const pthread_attr_t *, void *(*)(void *), void *) paramsnonnull((1)); -int pthread_detach(pthread_t); -int pthread_equal(pthread_t, pthread_t); -int pthread_getattr_np(pthread_t, pthread_attr_t *) paramsnonnull(); -int pthread_getname_np(pthread_t, char *, size_t) paramsnonnull(); -int pthread_getunique_np(pthread_t, pthread_id_np_t *) paramsnonnull(); -int pthread_join(pthread_t, void **); -int pthread_key_create(pthread_key_t *, pthread_key_dtor) paramsnonnull((1)); -int pthread_key_delete(pthread_key_t); -int pthread_kill(pthread_t, int); -int pthread_mutex_consistent(pthread_mutex_t *) paramsnonnull(); -int pthread_mutex_destroy(pthread_mutex_t *) paramsnonnull(); -int pthread_mutex_init(pthread_mutex_t *, const pthread_mutexattr_t *) paramsnonnull((1)); -int pthread_mutex_lock(pthread_mutex_t *) paramsnonnull(); -int pthread_mutex_trylock(pthread_mutex_t *) paramsnonnull(); -int pthread_mutex_unlock(pthread_mutex_t *) paramsnonnull(); -int pthread_mutexattr_destroy(pthread_mutexattr_t *) paramsnonnull(); -int pthread_mutexattr_getpshared(const pthread_mutexattr_t *, int *) paramsnonnull(); -int pthread_mutexattr_gettype(const pthread_mutexattr_t *, int *) paramsnonnull(); -int pthread_mutexattr_init(pthread_mutexattr_t *) paramsnonnull(); -int pthread_mutexattr_setpshared(pthread_mutexattr_t *, int) paramsnonnull(); -int pthread_mutexattr_settype(pthread_mutexattr_t *, int) paramsnonnull(); +int pthread_atfork(void (*)(void), void (*)(void), void (*)(void)) dontthrow; +int pthread_attr_destroy(pthread_attr_t *) libcesque paramsnonnull(); +int pthread_attr_getdetachstate(const pthread_attr_t *, int *) libcesque paramsnonnull(); +int pthread_attr_getguardsize(const pthread_attr_t *, size_t *) libcesque paramsnonnull(); +int pthread_attr_getinheritsched(const pthread_attr_t *, int *) libcesque paramsnonnull(); +int pthread_attr_getschedpolicy(const pthread_attr_t *, int *) libcesque paramsnonnull(); +int pthread_attr_getscope(const pthread_attr_t *, int *) libcesque paramsnonnull(); +int pthread_attr_getstack(const pthread_attr_t *, void **, size_t *) libcesque paramsnonnull(); +int pthread_attr_getstacksize(const pthread_attr_t *, size_t *) libcesque paramsnonnull(); +int pthread_attr_init(pthread_attr_t *) libcesque paramsnonnull(); +int pthread_attr_setdetachstate(pthread_attr_t *, int) libcesque paramsnonnull(); +int pthread_attr_setguardsize(pthread_attr_t *, size_t) libcesque paramsnonnull(); +int pthread_attr_setinheritsched(pthread_attr_t *, int) libcesque paramsnonnull(); +int pthread_attr_setschedpolicy(pthread_attr_t *, int) libcesque paramsnonnull(); +int pthread_attr_setscope(pthread_attr_t *, int) libcesque paramsnonnull(); +int pthread_attr_setstack(pthread_attr_t *, void *, size_t) libcesque paramsnonnull((1)); +int pthread_attr_setstacksize(pthread_attr_t *, size_t) libcesque paramsnonnull(); +int pthread_barrier_destroy(pthread_barrier_t *) libcesque paramsnonnull(); +int pthread_barrier_init(pthread_barrier_t *, const pthread_barrierattr_t *, unsigned) libcesque paramsnonnull((1)); +int pthread_barrier_wait(pthread_barrier_t *) libcesque paramsnonnull(); +int pthread_barrierattr_destroy(pthread_barrierattr_t *) libcesque paramsnonnull(); +int pthread_barrierattr_getpshared(const pthread_barrierattr_t *, int *) libcesque paramsnonnull(); +int pthread_barrierattr_init(pthread_barrierattr_t *) libcesque paramsnonnull(); +int pthread_barrierattr_setpshared(pthread_barrierattr_t *, int) libcesque paramsnonnull(); +int pthread_cancel(pthread_t) libcesque; +int pthread_cond_broadcast(pthread_cond_t *) libcesque paramsnonnull(); +int pthread_cond_destroy(pthread_cond_t *) libcesque paramsnonnull(); +int pthread_cond_init(pthread_cond_t *, const pthread_condattr_t *) libcesque paramsnonnull((1)); +int pthread_cond_signal(pthread_cond_t *) libcesque paramsnonnull(); +int pthread_cond_wait(pthread_cond_t *, pthread_mutex_t *) libcesque paramsnonnull(); +int pthread_condattr_destroy(pthread_condattr_t *) libcesque paramsnonnull(); +int pthread_condattr_getpshared(const pthread_condattr_t *, int *) libcesque paramsnonnull(); +int pthread_condattr_init(pthread_condattr_t *) libcesque paramsnonnull(); +int pthread_condattr_setpshared(pthread_condattr_t *, int) libcesque paramsnonnull(); +int pthread_create(pthread_t *, const pthread_attr_t *, void *(*)(void *), void *) dontthrow paramsnonnull((1)); +int pthread_detach(pthread_t) libcesque; +int pthread_equal(pthread_t, pthread_t) libcesque; +int pthread_getattr_np(pthread_t, pthread_attr_t *) libcesque paramsnonnull(); +int pthread_getname_np(pthread_t, char *, size_t) libcesque paramsnonnull(); +int pthread_getunique_np(pthread_t, pthread_id_np_t *) libcesque paramsnonnull(); +int pthread_join(pthread_t, void **) libcesque; +int pthread_key_create(pthread_key_t *, pthread_key_dtor) libcesque paramsnonnull((1)); +int pthread_key_delete(pthread_key_t) libcesque; +int pthread_kill(pthread_t, int) libcesque; +int pthread_mutex_consistent(pthread_mutex_t *) libcesque paramsnonnull(); +int pthread_mutex_destroy(pthread_mutex_t *) libcesque paramsnonnull(); +int pthread_mutex_init(pthread_mutex_t *, const pthread_mutexattr_t *) libcesque paramsnonnull((1)); +int pthread_mutex_lock(pthread_mutex_t *) libcesque paramsnonnull(); +int pthread_mutex_trylock(pthread_mutex_t *) libcesque paramsnonnull(); +int pthread_mutex_unlock(pthread_mutex_t *) libcesque paramsnonnull(); +int pthread_mutexattr_destroy(pthread_mutexattr_t *) libcesque paramsnonnull(); +int pthread_mutexattr_getpshared(const pthread_mutexattr_t *, int *) libcesque paramsnonnull(); +int pthread_mutexattr_gettype(const pthread_mutexattr_t *, int *) libcesque paramsnonnull(); +int pthread_mutexattr_init(pthread_mutexattr_t *) libcesque paramsnonnull(); +int pthread_mutexattr_setpshared(pthread_mutexattr_t *, int) libcesque paramsnonnull(); +int pthread_mutexattr_settype(pthread_mutexattr_t *, int) libcesque paramsnonnull(); int pthread_once(pthread_once_t *, void (*)(void)) paramsnonnull(); -int pthread_orphan_np(void); -int pthread_rwlock_destroy(pthread_rwlock_t *) paramsnonnull(); -int pthread_rwlock_init(pthread_rwlock_t *, const pthread_rwlockattr_t *) paramsnonnull((1)); -int pthread_rwlock_rdlock(pthread_rwlock_t *) paramsnonnull(); -int pthread_rwlock_tryrdlock(pthread_rwlock_t *) paramsnonnull(); -int pthread_rwlock_trywrlock(pthread_rwlock_t *) paramsnonnull(); -int pthread_rwlock_unlock(pthread_rwlock_t *) paramsnonnull(); -int pthread_rwlock_wrlock(pthread_rwlock_t *) paramsnonnull(); -int pthread_rwlockattr_destroy(pthread_rwlockattr_t *) paramsnonnull(); -int pthread_rwlockattr_getpshared(const pthread_rwlockattr_t *, int *) paramsnonnull(); -int pthread_rwlockattr_init(pthread_rwlockattr_t *) paramsnonnull(); -int pthread_rwlockattr_setpshared(pthread_rwlockattr_t *, int) paramsnonnull(); -int pthread_setcancelstate(int, int *); -int pthread_setcanceltype(int, int *); -int pthread_setname_np(pthread_t, const char *) paramsnonnull(); -int pthread_setschedprio(pthread_t, int); -int pthread_setspecific(pthread_key_t, const void *); -int pthread_spin_destroy(pthread_spinlock_t *) paramsnonnull(); -int pthread_spin_init(pthread_spinlock_t *, int) paramsnonnull(); -int pthread_spin_lock(pthread_spinlock_t *) paramsnonnull(); -int pthread_spin_trylock(pthread_spinlock_t *) paramsnonnull(); -int pthread_spin_unlock(pthread_spinlock_t *) paramsnonnull(); -int pthread_testcancel_np(void); -int pthread_tryjoin_np(pthread_t, void **); -int pthread_yield_np(void); -int pthread_yield(void); -pthread_id_np_t pthread_getthreadid_np(void); -pthread_t pthread_self(void) pureconst; -void *pthread_getspecific(pthread_key_t); -void pthread_cleanup_pop(struct _pthread_cleanup_buffer *, int) paramsnonnull(); -void pthread_cleanup_push(struct _pthread_cleanup_buffer *, void (*)(void *), void *) paramsnonnull((1)); -void pthread_exit(void *) wontreturn; -void pthread_testcancel(void); -void pthread_pause_np(void); +int pthread_orphan_np(void) libcesque; +int pthread_rwlock_destroy(pthread_rwlock_t *) libcesque paramsnonnull(); +int pthread_rwlock_init(pthread_rwlock_t *, const pthread_rwlockattr_t *) libcesque paramsnonnull((1)); +int pthread_rwlock_rdlock(pthread_rwlock_t *) libcesque paramsnonnull(); +int pthread_rwlock_tryrdlock(pthread_rwlock_t *) libcesque paramsnonnull(); +int pthread_rwlock_trywrlock(pthread_rwlock_t *) libcesque paramsnonnull(); +int pthread_rwlock_unlock(pthread_rwlock_t *) libcesque paramsnonnull(); +int pthread_rwlock_wrlock(pthread_rwlock_t *) libcesque paramsnonnull(); +int pthread_rwlockattr_destroy(pthread_rwlockattr_t *) libcesque paramsnonnull(); +int pthread_rwlockattr_getpshared(const pthread_rwlockattr_t *, int *) libcesque paramsnonnull(); +int pthread_rwlockattr_init(pthread_rwlockattr_t *) libcesque paramsnonnull(); +int pthread_rwlockattr_setpshared(pthread_rwlockattr_t *, int) libcesque paramsnonnull(); +int pthread_setcancelstate(int, int *) libcesque; +int pthread_setcanceltype(int, int *) libcesque; +int pthread_setname_np(pthread_t, const char *) libcesque paramsnonnull(); +int pthread_setschedprio(pthread_t, int) libcesque; +int pthread_setspecific(pthread_key_t, const void *) libcesque; +int pthread_spin_destroy(pthread_spinlock_t *) libcesque paramsnonnull(); +int pthread_spin_init(pthread_spinlock_t *, int) libcesque paramsnonnull(); +int pthread_spin_lock(pthread_spinlock_t *) libcesque paramsnonnull(); +int pthread_spin_trylock(pthread_spinlock_t *) libcesque paramsnonnull(); +int pthread_spin_unlock(pthread_spinlock_t *) libcesque paramsnonnull(); +int pthread_testcancel_np(void) libcesque; +int pthread_tryjoin_np(pthread_t, void **) libcesque; +int pthread_yield_np(void) libcesque; +int pthread_yield(void) libcesque; +pthread_id_np_t pthread_getthreadid_np(void) libcesque; +pthread_t pthread_self(void) libcesque pureconst; +void *pthread_getspecific(pthread_key_t) libcesque; +void pthread_cleanup_pop(struct _pthread_cleanup_buffer *, int) libcesque paramsnonnull(); +void pthread_cleanup_push(struct _pthread_cleanup_buffer *, void (*)(void *), void *) libcesque paramsnonnull((1)); +void pthread_exit(void *) libcesque wontreturn; +void pthread_testcancel(void) libcesque; +void pthread_pause_np(void) libcesque; /* clang-format on */ diff --git a/libc/thread/thread2.h b/libc/thread/thread2.h index 0ddafbed7..db1d845ab 100644 --- a/libc/thread/thread2.h +++ b/libc/thread/thread2.h @@ -9,16 +9,16 @@ COSMOPOLITAN_C_START_ /* clang-format off */ -int pthread_attr_getschedparam(const pthread_attr_t *, struct sched_param *) paramsnonnull(); -int pthread_attr_getsigmask_np(const pthread_attr_t *, sigset_t *) paramsnonnull((1)); -int pthread_attr_setschedparam(pthread_attr_t *, const struct sched_param *) paramsnonnull(); -int pthread_attr_setsigmask_np(pthread_attr_t *, const sigset_t *) paramsnonnull((1)); -int pthread_cond_timedwait(pthread_cond_t *, pthread_mutex_t *, const struct timespec *) paramsnonnull((1, 2)); -int pthread_getaffinity_np(pthread_t, size_t, cpu_set_t *) paramsnonnull(); -int pthread_getschedparam(pthread_t, int *, struct sched_param *) paramsnonnull(); -int pthread_setaffinity_np(pthread_t, size_t, const cpu_set_t *) paramsnonnull(); -int pthread_setschedparam(pthread_t, int, const struct sched_param *) paramsnonnull(); -int pthread_timedjoin_np(pthread_t, void **, struct timespec *); +int pthread_attr_getschedparam(const pthread_attr_t *, struct sched_param *) libcesque paramsnonnull(); +int pthread_attr_getsigmask_np(const pthread_attr_t *, sigset_t *) libcesque paramsnonnull((1)); +int pthread_attr_setschedparam(pthread_attr_t *, const struct sched_param *) libcesque paramsnonnull(); +int pthread_attr_setsigmask_np(pthread_attr_t *, const sigset_t *) libcesque paramsnonnull((1)); +int pthread_cond_timedwait(pthread_cond_t *, pthread_mutex_t *, const struct timespec *) libcesque paramsnonnull((1, 2)); +int pthread_getaffinity_np(pthread_t, size_t, cpu_set_t *) libcesque paramsnonnull(); +int pthread_getschedparam(pthread_t, int *, struct sched_param *) libcesque paramsnonnull(); +int pthread_setaffinity_np(pthread_t, size_t, const cpu_set_t *) libcesque paramsnonnull(); +int pthread_setschedparam(pthread_t, int, const struct sched_param *) libcesque paramsnonnull(); +int pthread_timedjoin_np(pthread_t, void **, struct timespec *) libcesque; /* clang-format off */ COSMOPOLITAN_C_END_ diff --git a/libc/thread/tls.h b/libc/thread/tls.h index 485fcd9d5..a9b689a3f 100644 --- a/libc/thread/tls.h +++ b/libc/thread/tls.h @@ -45,8 +45,8 @@ extern int __threaded; extern char __tls_morphed; extern unsigned __tls_index; -char *_mktls(struct CosmoTib **); -void __bootstrap_tls(struct CosmoTib *, char *); +char *_mktls(struct CosmoTib **) libcesque; +void __bootstrap_tls(struct CosmoTib *, char *) libcesque; #ifdef __x86_64__ extern char __tls_enabled; @@ -58,7 +58,7 @@ extern char __tls_enabled; #error "unsupported architecture" #endif -void __set_tls(struct CosmoTib *); +void __set_tls(struct CosmoTib *) libcesque; /** * Returns location of thread information block. diff --git a/libc/time/struct/tm.h b/libc/time/struct/tm.h index 02824b87e..04f65cbe9 100644 --- a/libc/time/struct/tm.h +++ b/libc/time/struct/tm.h @@ -16,26 +16,27 @@ struct tm { const char *tm_zone; }; -char *asctime(const struct tm *); -char *asctime_r(const struct tm *, char[hasatleast 26]); -char *strptime(const char *, const char *, struct tm *); -int64_t mktime(struct tm *); -int64_t timegm(struct tm *); -int64_t timelocal(struct tm *); -int64_t timeoff(struct tm *, long); -size_t strftime(char *, size_t, const char *, const struct tm *) - strftimeesque(3); -size_t wcsftime(wchar_t *, size_t, const wchar_t *, const struct tm *); -struct tm *gmtime(const int64_t *); -struct tm *gmtime_r(const int64_t *, struct tm *); -struct tm *localtime(const int64_t *); -struct tm *localtime_r(const int64_t *, struct tm *); +char *asctime(const struct tm *) libcesque; +char *asctime_r(const struct tm *, char[hasatleast 26]) libcesque; +char *strptime(const char *, const char *, struct tm *) libcesque; +int64_t mktime(struct tm *) libcesque; +int64_t timegm(struct tm *) libcesque; +int64_t timelocal(struct tm *) libcesque; +int64_t timeoff(struct tm *, long) libcesque; +size_t strftime(char *, size_t, const char *, const struct tm *) libcesque + strftimeesque(3) libcesque; +size_t wcsftime(wchar_t *, size_t, const wchar_t *, + const struct tm *) libcesque; +struct tm *gmtime(const int64_t *) libcesque; +struct tm *gmtime_r(const int64_t *, struct tm *) libcesque; +struct tm *localtime(const int64_t *) libcesque; +struct tm *localtime_r(const int64_t *, struct tm *) libcesque; #ifdef _COSMO_SOURCE #define iso8601 __iso8601 #define iso8601us __iso8601us -char *iso8601(char[hasatleast 20], struct tm *); -char *iso8601us(char[hasatleast 27], struct tm *, long); +char *iso8601(char[hasatleast 20], struct tm *) libcesque; +char *iso8601us(char[hasatleast 27], struct tm *, long) libcesque; #endif /* _COSMO_SOURCE */ COSMOPOLITAN_C_END_ diff --git a/libc/time/time.h b/libc/time/time.h index a86811d93..b633a5dd5 100644 --- a/libc/time/time.h +++ b/libc/time/time.h @@ -9,13 +9,13 @@ extern char *tzname[2]; extern long timezone; extern int daylight; -char *ctime(const int64_t *); -char *ctime_r(const int64_t *, char[hasatleast 26]); -double difftime(int64_t, int64_t) pureconst; -int64_t posix2time(int64_t) pureconst; -int64_t time2posix(int64_t) pureconst; -int stime(const int64_t *); -void tzset(void); +libcesque char *ctime(const int64_t *); +libcesque char *ctime_r(const int64_t *, char[hasatleast 26]); +libcesque double difftime(int64_t, int64_t) pureconst; +libcesque int64_t posix2time(int64_t) pureconst; +libcesque int64_t time2posix(int64_t) pureconst; +libcesque int stime(const int64_t *); +libcesque void tzset(void); #ifdef _COSMO_SOURCE extern const char kWeekdayNameShort[7][4]; @@ -23,7 +23,6 @@ extern const char kWeekdayName[7][10]; extern const char kMonthNameShort[12][4]; extern const char kMonthName[12][10]; extern const unsigned short kMonthYearDay[2][12]; -void RefreshTime(void); #endif /* _COSMO_SOURCE */ COSMOPOLITAN_C_END_ diff --git a/libc/time/tz.internal.h b/libc/time/tz.internal.h index fc6194493..949819ecd 100644 --- a/libc/time/tz.internal.h +++ b/libc/time/tz.internal.h @@ -273,28 +273,26 @@ typedef time_tz tz_int64_t; # define altzone tz_altzone # endif -char *asctime(struct tm const *); -char *asctime_r(struct tm const *restrict, char *restrict); -char *ctime(int64_t const *); -char *ctime_r(int64_t const *, char *); -double difftime(int64_t, int64_t) pureconst; +char *asctime(struct tm const *) libcesque; +char *asctime_r(struct tm const *restrict, char *restrict) libcesque; +char *ctime(int64_t const *) libcesque; +char *ctime_r(int64_t const *, char *) libcesque; +double difftime(int64_t, int64_t) libcesque pureconst; size_t strftime(char *restrict, size_t, char const *restrict, - struct tm const *restrict); -# if HAVE_STRFTIME_L + struct tm const *restrict) libcesque; size_t strftime_l(char *restrict, size_t, char const *restrict, - struct tm const *restrict, locale_t); -# endif -struct tm *gmtime(int64_t const *); -struct tm *gmtime_r(int64_t const *restrict, struct tm *restrict); -struct tm *localtime(int64_t const *); -struct tm *localtime_r(int64_t const *restrict, struct tm *restrict); -int64_t mktime(struct tm *); -int64_t time(int64_t *); -void tzset(void); + struct tm const *restrict, locale_t) libcesque; +struct tm *gmtime(int64_t const *) libcesque; +struct tm *gmtime_r(int64_t const *restrict, struct tm *restrict) libcesque; +struct tm *localtime(int64_t const *) libcesque; +struct tm *localtime_r(int64_t const *restrict, struct tm *restrict) libcesque; +int64_t mktime(struct tm *) libcesque; +int64_t time(int64_t *) libcesque; +void tzset(void) libcesque; #endif #if !HAVE_DECL_ASCTIME_R && !defined asctime_r -extern char *asctime_r(struct tm const *restrict, char *restrict); +extern char *asctime_r(struct tm const *restrict, char *restrict) libcesque; #endif #ifndef HAVE_DECL_ENVIRON diff --git a/libc/zip.internal.h b/libc/zip.internal.h index 58ac2f6ae..47897a301 100644 --- a/libc/zip.internal.h +++ b/libc/zip.internal.h @@ -270,24 +270,24 @@ #define ZIP_EXTRA_CONTENT(P) ((P) + 4) #define ZIP_EXTRA_SIZE(P) (ZIP_EXTRA_CONTENTSIZE(P) + kZipExtraHdrSize) -void *GetZipEocd(const void *, size_t, int *); -int IsZipEocd32(const uint8_t *, size_t, size_t); -int IsZipEocd64(const uint8_t *, size_t, size_t); -int GetZipCfileMode(const uint8_t *); -uint64_t GetZipCdirOffset(const uint8_t *); -uint64_t GetZipCdirRecords(const uint8_t *); -const void *GetZipCdirComment(const uint8_t *); -uint64_t GetZipCdirSize(const uint8_t *); -uint64_t GetZipCdirCommentSize(const uint8_t *); -int64_t GetZipCfileCompressedSize(const uint8_t *); -int64_t GetZipCfileUncompressedSize(const uint8_t *); -int64_t GetZipCfileOffset(const uint8_t *); -int64_t GetZipLfileCompressedSize(const uint8_t *); -int64_t GetZipLfileUncompressedSize(const uint8_t *); +void *GetZipEocd(const void *, size_t, int *) libcesque; +int IsZipEocd32(const uint8_t *, size_t, size_t) libcesque; +int IsZipEocd64(const uint8_t *, size_t, size_t) libcesque; +int GetZipCfileMode(const uint8_t *) libcesque; +uint64_t GetZipCdirOffset(const uint8_t *) libcesque; +uint64_t GetZipCdirRecords(const uint8_t *) libcesque; +const void *GetZipCdirComment(const uint8_t *) libcesque; +uint64_t GetZipCdirSize(const uint8_t *) libcesque; +uint64_t GetZipCdirCommentSize(const uint8_t *) libcesque; +int64_t GetZipCfileCompressedSize(const uint8_t *) libcesque; +int64_t GetZipCfileUncompressedSize(const uint8_t *) libcesque; +int64_t GetZipCfileOffset(const uint8_t *) libcesque; +int64_t GetZipLfileCompressedSize(const uint8_t *) libcesque; +int64_t GetZipLfileUncompressedSize(const uint8_t *) libcesque; struct timespec; void GetZipCfileTimestamps(const uint8_t *, struct timespec *, - struct timespec *, struct timespec *, int); + struct timespec *, struct timespec *, int) libcesque; #endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ #endif /* COSMOPOLITAN_ZIP_H_ */