Commit 05f752f1 authored by Ramon Nou's avatar Ramon Nou
Browse files

cover interception

parent 8492adc4
Loading
Loading
Loading
Loading
+31 −27
Original line number Diff line number Diff line
@@ -1015,34 +1015,7 @@ dlsym_fgets(char* str, int n, FILE* stream) {

}

int
fputs(const char* str, FILE* stream) {
    initializeGekko();
    if(CTX->file_map()->exist(fileno(stream))) {
        // write str of size n with gkfs_write
        int size = strlen(str);
        return gkfs::syscall::gkfs_write(fileno(stream), str, size);
       }

    int ret = dlsym_fputs(str, stream);

    return ret;
}

char *
fgets(char* str, int n, FILE* stream) {
    initializeGekko();
    if(CTX->file_map()->exist(fileno(stream))) {
        // read str n chars
        size_t n = gkfs::syscall::gkfs_read(fileno(stream), str, n);
        if(n == 0) {
            return NULL;
        }    
        return str;
    }

    return dlsym_fgets(str, n, stream);
}

/**
 * stat management
@@ -2796,3 +2769,34 @@ feof(FILE* stream) {
    return ret;
}

int
fputs(const char* str, FILE* stream) {
    initializeGekko();
     if(CTX->interception_enabled()) {
    if(CTX->file_map()->exist(stream->_fileno)) {
        // write str of size n with gkfs_write
        int size = strlen(str);
        return gkfs::syscall::gkfs_write(fileno(stream), str, size);
       }
     }
    int ret = dlsym_fputs(str, stream);

    return ret;
}

char *
fgets(char* str, int n, FILE* stream) {
    initializeGekko();
     if(CTX->interception_enabled()) {
    if(CTX->file_map()->exist(stream->_fileno)) {
        // read str n chars
        size_t n = gkfs::syscall::gkfs_read(fileno(stream), str, n);
        if(n == 0) {
            return NULL;
        }    
        return str;
    }
     }

    return dlsym_fgets(str, n, stream);
}
 No newline at end of file