Commit 803e9a90 authored by Ramon Nou's avatar Ramon Nou
Browse files

refactor libc

parent 552f1d9b
Loading
Loading
Loading
Loading
+1 −173
Original line number Diff line number Diff line
@@ -58,182 +58,10 @@ struct __dirstream {
    size_t offset;     // Current offset into the block.
    off_t filepos;     // Position of next entry to read.
    // Directory block.
    char data[0] __attribute__((aligned(__alignof__(void*))));

    char* path;
    char data[0] __attribute__((aligned(__alignof__(void*))));
};


// File API
int
dlsym_open(char* path, int flags);
int
dlsym_open2(char* path, int flags, mode_t mode);
int
dlsym_open64(char* path, int flags, mode_t mode);
int
dlsym_openat(int fd, const char* pathname, int flags, mode_t mode);
int
dlsym___open_2(char* path, int flags);
int
dlsym_close(int fd);
int
dlsym_close_range(unsigned int low, unsigned int high, int flags);
int
dlsym_creat(const char* path, mode_t mode);
int
dlsym_ftruncate(int fd, off_t length);
int
dlsym_mkstemp(char* templates);

ssize_t
dlsym_read(int fd, void* buf, size_t nbyte);
ssize_t
dlsym_write(int fd, void* buf, size_t nbyte);
ssize_t
dlsym_pread(int fd, void* buf, size_t count, off_t offset);
ssize_t
dlsym_pwrite(int fd, const void* buf, size_t count, off_t offset);
ssize_t
dlsym_pread64(int fd, void* buf, size_t count, off_t offset);
ssize_t
dlsym_pwrite64(int fd, const void* buf, size_t count, off_t offset);

off_t
dlsym_lseek(int fd, off_t offset, int whence);
off64_t
dlsym_lseek64(int fd, off64_t offset, int whence);

int
dlsym_fstat(int ver, int fd, struct stat* buf);

int
dlsym_fxstat64(int ver, int fd, struct stat64* buf);
int
dlsym_stat(int ver, const char* path, struct stat* buf);
int
dlsym_lstat(int ver, const char* path, struct stat* buf);
int
dlsym_lxstat64(int ver, const char* path, struct stat64* buf);
int
dlsym_xstat64(int ver, const char* path, struct stat64* buf);
int
dlsym_fstatat(int dfd, const char* path, struct stat* buf, int flags);
int
dlsym_fxstatat(int ver, int dfd, const char* path, struct stat* buf, int flags);
int
dlsym_fstatat64(int dfd, const char* path, struct stat64* buf, int flags);

int
dlsym_statx(int dirfd, const char* path, int flags, unsigned int mask,
            struct statx* buf);
int
dlsym_rename(const char* old_path, const char* new_path);
int
dlsym_unlink(char* path);
int
dlsym_remove(char* path);


// File API (stdio)
FILE*
dlsym_fopen(const char* filename, const char* mode);
FILE*
dlsym_fdopen(int fd, const char* mode);
int
dlsym_fclose(FILE* stream);

size_t
dlsym_fread(void* ptr, size_t size, size_t nmemb, FILE* stream);
size_t
dlsym_fwrite(const void* ptr, size_t size, size_t nmemb, FILE* stream);

int
dlsym_fseek(FILE* stream, long int offset, int whence);
long
dlsym_ftell(FILE* stream);
void
dlsym_rewind(FILE* stream);
int
dlsym_feof(FILE* stream);
//
// fgets and fputs
char*
dlsym_fgets(char* str, int size, FILE* stream);
int
dlsym_fputs(const char* str, FILE* stream);


// Directory API
DIR*
dlsym_opendir(char* dirname);
DIR*
dlsym_opendir64(char* dirname);
int
dlsym_closedir(DIR* dirp);

long
dlsym_telldir(DIR* dirp);
void
dlsym_seekdir(DIR* dirp, long loc);

struct dirent*
dlsym_readdir(DIR* dirp);
struct dirent64*
dlsym_readdir64(DIR* dirp);

int
dlsym_mkdir(char* path, mode_t mode);
int
dlsym_rmdir(char* path);


// Proccess API
int
dlsym_fork(void);

int
dlsym_pipe(int pipefd[2]);

int
dlsym_dup(int fd);
int
dlsym_dup2(int fd, int fd2);

void
dlsym_exit(int status);


// Manager API
int
dlsym_chdir(char* path);
int
dlsym_chmod(char* path, mode_t mode);
int
dlsym_fchmod(int fd, mode_t mode);
int
dlsym_chown(char* path, uid_t owner, gid_t group);
int
dlsym_fcntl(int fd, int cmd, long arg);
int
dlsym_access(const char* path, int mode);
int
dlsym_fsync(int fd);
int
dlsym_flock(int fd, int operation);
int
dlsym_fflush(FILE* stream);
// Manager API

char*
dlsym_realpath(const char* path, char* resolved_path);


// Memory API
void*
dlsym_mmap(void* addr, size_t length, int prot, int flags, int fd,
           off_t offset);

int
open64(const char* path, int flags, ...);
int
+757 −2182

File changed.

Preview size limit exceeded, changes collapsed.

+7 −0
Original line number Diff line number Diff line
@@ -578,6 +578,13 @@ PreloadContext::unregister_internal_fd(int fd) {

    const auto pos = fd - MIN_INTERNAL_FD;

    std::lock_guard<std::mutex> lock(internal_fds_mutex_);
    internal_fds_.set(pos);
}

bool
PreloadContext::is_internal_fd(int fd) const {

    if(fd < MIN_INTERNAL_FD) {
        return false;
    }
+1 −1

File changed.

Contains only whitespace changes.

+1 −1

File changed.

Contains only whitespace changes.