brintos

brintos / llvm-project-archived public Read only

0
0
Text · 8.7 KiB · b146068 Raw
199 lines · c
1#include "std-c-library-functions.h"2 3typedef int off_t;4typedef unsigned int mode_t;5typedef __WCHAR_TYPE__ wchar_t;6typedef unsigned int dev_t;7typedef unsigned int uid_t;8typedef unsigned int gid_t;9typedef unsigned long socklen_t;10typedef unsigned long int pthread_t;11typedef unsigned long time_t;12typedef unsigned long clockid_t;13typedef __INT64_TYPE__ off64_t;14typedef __INT64_TYPE__ fpos_t;15 16typedef struct {17  int a;18} DIR;19struct stat {20  int a;21};22struct timespec { int x; };23struct timeval { int x; };24struct sockaddr;25struct sockaddr_at;26struct msghdr;27struct utimbuf;28struct itimerval;29typedef union {30  int x;31} pthread_cond_t;32typedef union {33  int x;34} pthread_attr_t;35typedef union {36  int x;37} pthread_mutex_t;38typedef union {39  int x;40} pthread_mutexattr_t;41 42FILE *fopen(const char *restrict pathname, const char *restrict mode);43FILE *tmpfile(void);44FILE *freopen(const char *restrict pathname, const char *restrict mode,45              FILE *restrict stream);46FILE *fdopen(int fd, const char *mode);47int fclose(FILE *stream);48int putc(int c, FILE *stream);49int fputc(int c, FILE *stream);50char *fgets(char *restrict s, int n, FILE *restrict stream);51int fputs(const char *restrict s, FILE *restrict stream);52int fseek(FILE *stream, long offset, int whence);53int fgetpos(FILE *restrict stream, fpos_t *restrict pos);54int fsetpos(FILE *stream, const fpos_t *pos);55int fflush(FILE *stream);56long ftell(FILE *stream);57int fileno(FILE *stream);58void rewind(FILE *stream);59void clearerr(FILE *stream);60int feof(FILE *stream);61int ferror(FILE *stream);62long a64l(const char *str64);63char *l64a(long value);64int open(const char *path, int oflag, ...);65int openat(int fd, const char *path, int oflag, ...);66int access(const char *pathname, int amode);67int faccessat(int dirfd, const char *pathname, int mode, int flags);68int dup(int fildes);69int dup2(int fildes1, int filedes2);70int fdatasync(int fildes);71int fnmatch(const char *pattern, const char *string, int flags);72int fsync(int fildes);73int truncate(const char *path, off_t length);74int symlink(const char *oldpath, const char *newpath);75int symlinkat(const char *oldpath, int newdirfd, const char *newpath);76int lockf(int fd, int cmd, off_t len);77int creat(const char *pathname, mode_t mode);78unsigned int sleep(unsigned int seconds);79int dirfd(DIR *dirp);80unsigned int alarm(unsigned int seconds);81int closedir(DIR *dir);82char *strdup(const char *s);83char *strndup(const char *s, size_t n);84wchar_t *wcsdup(const wchar_t *s);85int mkstemp(char *template);86char *mkdtemp(char *template);87char *getcwd(char *buf, size_t size);88int mkdir(const char *pathname, mode_t mode);89int mkdirat(int dirfd, const char *pathname, mode_t mode);90int mknod(const char *pathname, mode_t mode, dev_t dev);91int mknodat(int dirfd, const char *pathname, mode_t mode, dev_t dev);92int chmod(const char *path, mode_t mode);93int fchmodat(int dirfd, const char *pathname, mode_t mode, int flags);94int fchmod(int fildes, mode_t mode);95int fchownat(int dirfd, const char *pathname, uid_t owner, gid_t group, int flags);96int chown(const char *path, uid_t owner, gid_t group);97int lchown(const char *path, uid_t owner, gid_t group);98int fchown(int fildes, uid_t owner, gid_t group);99int rmdir(const char *pathname);100int chdir(const char *path);101int link(const char *oldpath, const char *newpath);102int linkat(int fd1, const char *path1, int fd2, const char *path2, int flag);103int unlink(const char *pathname);104int unlinkat(int fd, const char *path, int flag);105int fstat(int fd, struct stat *statbuf);106int stat(const char *restrict path, struct stat *restrict buf);107int lstat(const char *restrict path, struct stat *restrict buf);108int fstatat(int fd, const char *restrict path, struct stat *restrict buf, int flag);109DIR *opendir(const char *name);110DIR *fdopendir(int fd);111int isatty(int fildes);112FILE *popen(const char *command, const char *type);113int pclose(FILE *stream);114int close(int fildes);115long fpathconf(int fildes, int name);116long pathconf(const char *path, int name);117void rewinddir(DIR *dir);118void seekdir(DIR *dirp, long loc);119int rand_r(unsigned int *seedp);120int fileno(FILE *stream);121int fseeko(FILE *stream, off_t offset, int whence);122off_t ftello(FILE *stream);123void *mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offset);124void *mmap64(void *addr, size_t length, int prot, int flags, int fd, off64_t offset);125int pipe(int fildes[2]);126off_t lseek(int fildes, off_t offset, int whence);127ssize_t readlink(const char *restrict path, char *restrict buf, size_t bufsize);128ssize_t readlinkat(int fd, const char *restrict path, char *restrict buf, size_t bufsize);129int renameat(int olddirfd, const char *oldpath, int newdirfd, const char *newpath);130char *realpath(const char *restrict file_name, char *restrict resolved_name);131int execv(const char *path, char *const argv[]);132int execvp(const char *file, char *const argv[]);133int getopt(int argc, char *const argv[], const char *optstring);134 135// In some libc implementations, sockaddr parameter is a transparent136// union of the underlying sockaddr_ pointers instead of being a137// pointer to struct sockaddr.138// We match that with the joker Irrelevant type.139#define __SOCKADDR_ALLTYPES    \140  __SOCKADDR_ONETYPE(sockaddr) \141  __SOCKADDR_ONETYPE(sockaddr_at)142#define __SOCKADDR_ONETYPE(type) struct type *restrict __##type##__;143typedef union {144  __SOCKADDR_ALLTYPES145} __SOCKADDR_ARG __attribute__((__transparent_union__));146#undef __SOCKADDR_ONETYPE147#define __SOCKADDR_ONETYPE(type) const struct type *restrict __##type##__;148typedef union {149  __SOCKADDR_ALLTYPES150} __CONST_SOCKADDR_ARG __attribute__((__transparent_union__));151#undef __SOCKADDR_ONETYPE152 153int socket(int domain, int type, int protocol);154int accept(int socket, __SOCKADDR_ARG address, socklen_t *restrict address_len);155int bind(int socket, __CONST_SOCKADDR_ARG address, socklen_t address_len);156int getpeername(int socket, __SOCKADDR_ARG address, socklen_t *restrict address_len);157int getsockname(int socket, __SOCKADDR_ARG address, socklen_t *restrict address_len);158int connect(int socket, __CONST_SOCKADDR_ARG address, socklen_t address_len);159ssize_t recvfrom(int socket, void *restrict buffer, size_t length, int flags, __SOCKADDR_ARG address, socklen_t *restrict address_len);160ssize_t sendto(int socket, const void *message, size_t length, int flags, __CONST_SOCKADDR_ARG dest_addr, socklen_t dest_len);161int listen(int sockfd, int backlog);162ssize_t recv(int sockfd, void *buf, size_t len, int flags);163ssize_t recvmsg(int sockfd, struct msghdr *msg, int flags);164ssize_t sendmsg(int sockfd, const struct msghdr *msg, int flags);165int setsockopt(int socket, int level, int option_name, const void *option_value, socklen_t option_len);166int getsockopt(int socket, int level, int option_name, void *restrict option_value, socklen_t *restrict option_len);167ssize_t send(int sockfd, const void *buf, size_t len, int flags);168int socketpair(int domain, int type, int protocol, int sv[2]);169int shutdown(int socket, int how);170int getnameinfo(const struct sockaddr *restrict sa, socklen_t salen, char *restrict node, socklen_t nodelen, char *restrict service, socklen_t servicelen, int flags);171int utime(const char *filename, struct utimbuf *buf);172int futimens(int fd, const struct timespec times[2]);173int utimensat(int dirfd, const char *pathname, const struct timespec times[2], int flags);174int utimes(const char *filename, const struct timeval times[2]);175int nanosleep(const struct timespec *rqtp, struct timespec *rmtp);176struct tm *localtime(const time_t *tp);177struct tm *localtime_r(const time_t *restrict timer, struct tm *restrict result);178char *asctime_r(const struct tm *restrict tm, char *restrict buf);179char *ctime_r(const time_t *timep, char *buf);180struct tm *gmtime_r(const time_t *restrict timer, struct tm *restrict result);181struct tm *gmtime(const time_t *tp);182int clock_gettime(clockid_t clock_id, struct timespec *tp);183int getitimer(int which, struct itimerval *curr_value);184 185int pthread_cond_signal(pthread_cond_t *cond);186int pthread_cond_broadcast(pthread_cond_t *cond);187int pthread_create(pthread_t *restrict thread, const pthread_attr_t *restrict attr, void *(*start_routine)(void *), void *restrict arg);188int pthread_attr_destroy(pthread_attr_t *attr);189int pthread_attr_init(pthread_attr_t *attr);190int pthread_attr_getstacksize(const pthread_attr_t *restrict attr, size_t *restrict stacksize);191int pthread_attr_getguardsize(const pthread_attr_t *restrict attr, size_t *restrict guardsize);192int pthread_attr_setstacksize(pthread_attr_t *attr, size_t stacksize);193int pthread_attr_setguardsize(pthread_attr_t *attr, size_t guardsize);194int pthread_mutex_init(pthread_mutex_t *restrict mutex, const pthread_mutexattr_t *restrict attr);195int pthread_mutex_destroy(pthread_mutex_t *mutex);196int pthread_mutex_lock(pthread_mutex_t *mutex);197int pthread_mutex_trylock(pthread_mutex_t *mutex);198int pthread_mutex_unlock(pthread_mutex_t *mutex);199