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