Commit 0da31484 authored by Marc Vef's avatar Marc Vef
Browse files

Fixing some of the type issues in client with gsl

parent 904d4f7c
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -180,6 +180,13 @@ set_target_properties(spdlog
    PROPERTIES
    INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_SOURCE_DIR}/external"
)
# Guideline Support Library: https://github.com/microsoft/GSL
add_library(gsl INTERFACE)
# we cannot use target_include_directories with CMake < 3.11
set_target_properties(gsl
    PROPERTIES
    INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_SOURCE_DIR}/external"
    )

add_subdirectory(external/fmt)
set_property(TARGET fmt PROPERTY POSITION_INDEPENDENT_CODE ON)
+4 −4
Original line number Diff line number Diff line
@@ -76,9 +76,9 @@ ssize_t gkfs_pwrite_ws(int fd, const void* buf, size_t count, off64_t offset);

ssize_t gkfs_write(int fd, const void* buf, size_t count);

ssize_t gkfs_pwritev(int fd, const struct iovec* iov, int iovcnt, off_t offset);
ssize_t gkfs_pwritev(int fd, const struct iovec* iov, unsigned long iovcnt, off_t offset);

ssize_t gkfs_writev(int fd, const struct iovec* iov, int iovcnt);
ssize_t gkfs_writev(int fd, const struct iovec* iov, unsigned long iovcnt);

ssize_t gkfs_pread(std::shared_ptr<gkfs::filemap::OpenFile> file, char* buf, size_t count, off64_t offset);

@@ -86,9 +86,9 @@ ssize_t gkfs_pread_ws(int fd, void* buf, size_t count, off64_t offset);

ssize_t gkfs_read(int fd, void* buf, size_t count);

ssize_t gkfs_readv(int fd, const struct iovec* iov, int iovcnt);
ssize_t gkfs_readv(int fd, const struct iovec* iov, unsigned long iovcnt);

ssize_t gkfs_preadv(int fd, const struct iovec* iov, int iovcnt, off_t offset);
ssize_t gkfs_preadv(int fd, const struct iovec* iov, unsigned long iovcnt, off_t offset);

int gkfs_opendir(const std::string& path);

+2 −1
Original line number Diff line number Diff line
@@ -20,9 +20,10 @@
#include <memory>
#include <vector>
#include <string>

#include <bitset>

#include <gsl/gsl>

/* Forward declarations */
namespace gkfs {
namespace filemap {
+1 −0
Original line number Diff line number Diff line
@@ -62,6 +62,7 @@ target_link_libraries(gkfs_intercept
    mercury
    hermes
    fmt::fmt
    gsl
    Boost::boost # needed for tokenizer header
    Threads::Threads
    Date::TZ
+9 −9
Original line number Diff line number Diff line
@@ -465,13 +465,13 @@ ssize_t gkfs_write(int fd, const void* buf, size_t count) {
    return ret;
}

ssize_t gkfs_pwritev(int fd, const struct iovec* iov, int iovcnt, off_t offset) {
ssize_t gkfs_pwritev(int fd, const struct iovec* iov, unsigned long iovcnt, off_t offset) {

    auto file = CTX->file_map()->get(fd);
    auto pos = offset; // keep truck of current position
    ssize_t written = 0;
    ssize_t ret;
    for (int i = 0; i < iovcnt; ++i) {
    for (unsigned long i = 0; i < iovcnt; ++i) {
        auto count = (iov + i)->iov_len;
        if (count == 0) {
            continue;
@@ -495,7 +495,7 @@ ssize_t gkfs_pwritev(int fd, const struct iovec* iov, int iovcnt, off_t offset)
    return written;
}

ssize_t gkfs_writev(int fd, const struct iovec* iov, int iovcnt) {
ssize_t gkfs_writev(int fd, const struct iovec* iov, unsigned long iovcnt) {

    auto gkfs_fd = CTX->file_map()->get(fd);
    auto pos = gkfs_fd->pos(); // retrieve the current offset
@@ -539,13 +539,13 @@ ssize_t gkfs_read(int fd, void* buf, size_t count) {
    return ret;
}

ssize_t gkfs_preadv(int fd, const struct iovec* iov, int iovcnt, off_t offset) {
ssize_t gkfs_preadv(int fd, const struct iovec* iov, unsigned long iovcnt, off_t offset) {

    auto file = CTX->file_map()->get(fd);
    auto pos = offset; // keep truck of current position
    ssize_t read = 0;
    ssize_t ret;
    for (int i = 0; i < iovcnt; ++i) {
    for (unsigned long i = 0; i < iovcnt; ++i) {
        auto count = (iov + i)->iov_len;
        if (count == 0) {
            continue;
@@ -569,7 +569,7 @@ ssize_t gkfs_preadv(int fd, const struct iovec* iov, int iovcnt, off_t offset) {
    return read;
}

ssize_t gkfs_readv(int fd, const struct iovec* iov, int iovcnt) {
ssize_t gkfs_readv(int fd, const struct iovec* iov, unsigned long iovcnt) {

    auto gkfs_fd = CTX->file_map()->get(fd);
    auto pos = gkfs_fd->pos(); // retrieve the current offset
@@ -685,7 +685,7 @@ int gkfs_getdents(unsigned int fd,
    }
    // set directory position for next getdents() call
    open_dir->pos(pos);
    return written;
    return gsl::narrow_cast<int>(written);
}


@@ -743,7 +743,7 @@ int gkfs_getdents64(unsigned int fd,
        return -1;
    }
    open_dir->pos(pos);
    return written;
    return gsl::narrow_cast<int>(written);
}


@@ -793,7 +793,7 @@ int gkfs_readlink(const std::string& path, char* buf, int bufsize) {
        errno = EINVAL;
        return -1;
    }
    int path_size = md->target_path().size() + CTX->mountdir().size();
    auto path_size = gsl::narrow_cast<int>(md->target_path().size() + CTX->mountdir().size());
    if (path_size >= bufsize) {
        LOG(WARNING, "Destination buffer size is too short: {} < {}, {} ", bufsize, path_size, md->target_path());
        errno = ENAMETOOLONG;
Loading