Commit f42f62ab authored by Ramon Nou's avatar Ramon Nou
Browse files

added clearerr and added IO_FILEBUF flag on FILE

parent f70205a8
Loading
Loading
Loading
Loading
+15 −1
Original line number Diff line number Diff line
@@ -395,6 +395,7 @@ DLSYM_WRAPPER(int, fseek, (FILE * stream, long int offset, int whence),
DLSYM_WRAPPER(long, ftell, (FILE * stream), (stream), "ftell")
DLSYM_WRAPPER(void, rewind, (FILE * stream), (stream), "rewind")
DLSYM_WRAPPER(int, feof, (FILE * stream), (stream), "feof")
DLSYM_WRAPPER(void, clearerr, (FILE * stream), (stream), "clearerr")
DLSYM_WRAPPER(int, fputs, (const char* str, FILE* stream), (str, stream),
              "fputs")
NOLOGDLSYM_WRAPPER(char*, fgets, (char* str, int n, FILE* stream),
@@ -1726,7 +1727,7 @@ fdopen(int fd, const char* mode) {
                return NULL;
            }
            ret->_mode = 0666;
            ret->_flags = 0;
            ret->_flags = 0x2000;
            if(strchr(mode, 'r') != NULL)
                ret->_flags |= O_RDONLY;
            if(strchr(mode, 'w'))
@@ -1853,10 +1854,23 @@ rewind(FILE* stream) {
    if(CTX->interception_enabled() && CTX->file_map()->exist(stream->_fileno)) {
        DEBUG_INFO("[GKFS] {}", stream->_fileno);
        gkfs::syscall::gkfs_lseek(stream->_fileno, 0, SEEK_SET);
        return;
    }
    GKFS_FALLBACK(rewind, stream)
}

// clearerr
void
clearerr(FILE* stream) {
    initializeGekko();
    if(CTX->interception_enabled() && CTX->file_map()->exist(stream->_fileno)) {
        DEBUG_INFO("[GKFS] {}", stream->_fileno);
        return;
    }
    GKFS_FALLBACK(clearerr, stream)
}


int
fclose(FILE* stream) {