On Wed, Jan 31, 2018 at 1:40 PM, Waldemar Kozaczuk <jwkozac...@gmail.com>
wrote:

> Fixed code style issues in ramfs source code mainly by replacing
> tabs with spaces.
>

I'm curious why you want to change that. Aren't these files consistent in
their code style, i.e. use only tabs - and not a mixture of tabs and spaces?

We copied these files from Prex (http://prex.sourceforge.net/) and
inherited their coding style.
If we change all the lines now, it makes it hard to understand where each
line comes from ("git blame fs/ramfs/ramfs.h"), and what's the benefit?

We have plenty of other files with code from other sources (e.g., BSD)
which also have tabs instead of spaces, and we just left them like that.


>
> Signed-off-by: Waldemar Kozaczuk <jwkozac...@gmail.com>
> ---
>  fs/ramfs/ramfs.h         |  21 +-
>  fs/ramfs/ramfs_vfsops.cc |  40 +--
>  fs/ramfs/ramfs_vnops.cc  | 706 +++++++++++++++++++++++-------
> -----------------
>  3 files changed, 385 insertions(+), 382 deletions(-)
>
> diff --git a/fs/ramfs/ramfs.h b/fs/ramfs/ramfs.h
> index 40ba085..94553ba 100644
> --- a/fs/ramfs/ramfs.h
> +++ b/fs/ramfs/ramfs.h
> @@ -37,26 +37,27 @@
>  #ifdef DEBUG_RAMFS
>  #define DPRINTF(a)     dprintf a
>  #else
> -#define DPRINTF(a)     do {} while (0)
> +#define DPRINTF(a)    do {} while (0)
>  #endif
>
> -#define ASSERT(e)      assert(e)
> +#define ASSERT(e)    assert(e)
>
>  /*
>   * File/directory node for RAMFS
>   */
>  struct ramfs_node {
> -       struct  ramfs_node *rn_next;   /* next node in the same directory
> */
> -       struct  ramfs_node *rn_child;  /* first child node */
> -       int      rn_type;       /* file or directory */
> -       char    *rn_name;       /* name (null-terminated) */
> -       size_t   rn_namelen;    /* length of name not including terminator
> */
> -       size_t   rn_size;       /* file size */
> -       char    *rn_buf;        /* buffer to the file data */
> -       size_t   rn_bufsize;    /* allocated buffer size */
> +    struct ramfs_node *rn_next;   /* next node in the same directory */
> +    struct ramfs_node *rn_child;  /* first child node */
> +    int rn_type;    /* file or directory */
> +    char *rn_name;    /* name (null-terminated) */
> +    size_t rn_namelen;    /* length of name not including terminator */
> +    size_t rn_size;    /* file size */
> +    char *rn_buf;    /* buffer to the file data */
> +    size_t rn_bufsize;    /* allocated buffer size */
>  };
>
>  struct ramfs_node *ramfs_allocate_node(const char *name, int type);
> +
>  void ramfs_free_node(struct ramfs_node *node);
>
>  #endif /* !_RAMFS_H */
> diff --git a/fs/ramfs/ramfs_vfsops.cc b/fs/ramfs/ramfs_vfsops.cc
> index 4f29c81..72fe7ed 100644
> --- a/fs/ramfs/ramfs_vfsops.cc
> +++ b/fs/ramfs/ramfs_vfsops.cc
> @@ -38,21 +38,23 @@
>  extern struct vnops ramfs_vnops;
>
>  static int ramfs_mount(struct mount *mp, const char *dev, int flags,
> const void *data);
> +
>  static int ramfs_unmount(struct mount *mp, int flags);
> -#define ramfs_sync     ((vfsop_sync_t)vfs_nullop)
> -#define ramfs_vget     ((vfsop_vget_t)vfs_nullop)
> -#define ramfs_statfs   ((vfsop_statfs_t)vfs_nullop)
> +
> +#define ramfs_sync    ((vfsop_sync_t)vfs_nullop)
> +#define ramfs_vget    ((vfsop_vget_t)vfs_nullop)
> +#define ramfs_statfs    ((vfsop_statfs_t)vfs_nullop)
>
>  /*
>   * File system operations
>   */
>  struct vfsops ramfs_vfsops = {
> -       ramfs_mount,            /* mount */
> -       ramfs_unmount,          /* unmount */
> -       ramfs_sync,             /* sync */
> -       ramfs_vget,             /* vget */
> -       ramfs_statfs,           /* statfs */
> -       &ramfs_vnops,           /* vnops */
> +        ramfs_mount,       /* mount */
> +        ramfs_unmount,     /* unmount */
> +        ramfs_sync,        /* sync */
> +        ramfs_vget,        /* vget */
> +        ramfs_statfs,      /* statfs */
> +        &ramfs_vnops,      /* vnops */
>  };
>
>  /*
> @@ -61,16 +63,16 @@ struct vfsops ramfs_vfsops = {
>  static int
>  ramfs_mount(struct mount *mp, const char *dev, int flags, const void
> *data)
>  {
> -       struct ramfs_node *np;
> +    struct ramfs_node *np;
>
> -       DPRINTF(("ramfs_mount: dev=%s\n", dev));
> +    DPRINTF(("ramfs_mount: dev=%s\n", dev));
>
> -       /* Create a root node */
> -       np = ramfs_allocate_node("/", VDIR);
> -       if (np == NULL)
> -               return ENOMEM;
> -       mp->m_root->d_vnode->v_data = np;
> -       return 0;
> +    /* Create a root node */
> +    np = ramfs_allocate_node("/", VDIR);
> +    if (np == NULL)
> +        return ENOMEM;
> +    mp->m_root->d_vnode->v_data = np;
> +    return 0;
>  }
>
>  /*
> @@ -83,6 +85,6 @@ ramfs_mount(struct mount *mp, const char *dev, int
> flags, const void *data)
>  static int
>  ramfs_unmount(struct mount *mp, int flags)
>  {
> -       release_mp_dentries(mp);
> -       return 0;
> +    release_mp_dentries(mp);
> +    return 0;
>  }
> diff --git a/fs/ramfs/ramfs_vnops.cc b/fs/ramfs/ramfs_vnops.cc
> index ced35eb..f3f3441 100644
> --- a/fs/ramfs/ramfs_vnops.cc
> +++ b/fs/ramfs/ramfs_vnops.cc
> @@ -53,262 +53,262 @@ static uint64_t inode_count = 1; /* inode 0 is
> reserved to root */
>  struct ramfs_node *
>  ramfs_allocate_node(const char *name, int type)
>  {
> -       struct ramfs_node *np;
> -
> -       np = (ramfs_node*)malloc(sizeof(struct ramfs_node));
> -       if (np == NULL)
> -               return NULL;
> -       memset(np, 0, sizeof(struct ramfs_node));
> -
> -       np->rn_namelen = strlen(name);
> -       np->rn_name = (char*)malloc(np->rn_namelen + 1);
> -       if (np->rn_name == NULL) {
> -               free(np);
> -               return NULL;
> -       }
> -       strlcpy(np->rn_name, name, np->rn_namelen + 1);
> -       np->rn_type = type;
> -       return np;
> +    struct ramfs_node *np;
> +
> +    np = (ramfs_node *) malloc(sizeof(struct ramfs_node));
> +    if (np == NULL)
> +        return NULL;
> +    memset(np, 0, sizeof(struct ramfs_node));
> +
> +    np->rn_namelen = strlen(name);
> +    np->rn_name = (char *) malloc(np->rn_namelen + 1);
> +    if (np->rn_name == NULL) {
> +        free(np);
> +        return NULL;
> +    }
> +    strlcpy(np->rn_name, name, np->rn_namelen + 1);
> +    np->rn_type = type;
> +    return np;
>  }
>
>  void
>  ramfs_free_node(struct ramfs_node *np)
>  {
> -       if (np->rn_buf != NULL)
> -               free(np->rn_buf);
> +    if (np->rn_buf != NULL)
> +        free(np->rn_buf);
>
> -       free(np->rn_name);
> -       free(np);
> +    free(np->rn_name);
> +    free(np);
>  }
>
>  static struct ramfs_node *
>  ramfs_add_node(struct ramfs_node *dnp, char *name, int type)
>  {
> -       struct ramfs_node *np, *prev;
> -
> -       np = ramfs_allocate_node(name, type);
> -       if (np == NULL)
> -               return NULL;
> -
> -       mutex_lock(&ramfs_lock);
> -
> -       /* Link to the directory list */
> -       if (dnp->rn_child == NULL) {
> -               dnp->rn_child = np;
> -       } else {
> -               prev = dnp->rn_child;
> -               while (prev->rn_next != NULL)
> -                       prev = prev->rn_next;
> -               prev->rn_next = np;
> -       }
> -       mutex_unlock(&ramfs_lock);
> -       return np;
> +    struct ramfs_node *np, *prev;
> +
> +    np = ramfs_allocate_node(name, type);
> +    if (np == NULL)
> +        return NULL;
> +
> +    mutex_lock(&ramfs_lock);
> +
> +    /* Link to the directory list */
> +    if (dnp->rn_child == NULL) {
> +        dnp->rn_child = np;
> +    } else {
> +        prev = dnp->rn_child;
> +        while (prev->rn_next != NULL)
> +            prev = prev->rn_next;
> +        prev->rn_next = np;
> +    }
> +    mutex_unlock(&ramfs_lock);
> +    return np;
>  }
>
>  static int
>  ramfs_remove_node(struct ramfs_node *dnp, struct ramfs_node *np)
>  {
> -       struct ramfs_node *prev;
> -
> -       if (dnp->rn_child == NULL)
> -               return EBUSY;
> -
> -       mutex_lock(&ramfs_lock);
> -
> -       /* Unlink from the directory list */
> -       if (dnp->rn_child == np) {
> -               dnp->rn_child = np->rn_next;
> -       } else {
> -               for (prev = dnp->rn_child; prev->rn_next != np;
> -                    prev = prev->rn_next) {
> -                       if (prev->rn_next == NULL) {
> -                               mutex_unlock(&ramfs_lock);
> -                               return ENOENT;
> -                       }
> -               }
> -               prev->rn_next = np->rn_next;
> -       }
> -       ramfs_free_node(np);
> -
> -       mutex_unlock(&ramfs_lock);
> -       return 0;
> +    struct ramfs_node *prev;
> +
> +    if (dnp->rn_child == NULL)
> +        return EBUSY;
> +
> +    mutex_lock(&ramfs_lock);
> +
> +    /* Unlink from the directory list */
> +    if (dnp->rn_child == np) {
> +        dnp->rn_child = np->rn_next;
> +    } else {
> +        for (prev = dnp->rn_child; prev->rn_next != np;
> +             prev = prev->rn_next) {
> +            if (prev->rn_next == NULL) {
> +                mutex_unlock(&ramfs_lock);
> +                return ENOENT;
> +            }
> +        }
> +        prev->rn_next = np->rn_next;
> +    }
> +    ramfs_free_node(np);
> +
> +    mutex_unlock(&ramfs_lock);
> +    return 0;
>  }
>
>  static int
>  ramfs_rename_node(struct ramfs_node *np, char *name)
>  {
> -       size_t len;
> -       char *tmp;
> -
> -       len = strlen(name);
> -       if (len <= np->rn_namelen) {
> -               /* Reuse current name buffer */
> -               strlcpy(np->rn_name, name, np->rn_namelen + 1);
> -       } else {
> -               /* Expand name buffer */
> -               tmp = (char*)malloc(len + 1);
> -               if (tmp == NULL)
> -                       return ENOMEM;
> -               strlcpy(tmp, name, len + 1);
> -               free(np->rn_name);
> -               np->rn_name = tmp;
> -       }
> -       np->rn_namelen = len;
> -       return 0;
> +    size_t len;
> +    char *tmp;
> +
> +    len = strlen(name);
> +    if (len <= np->rn_namelen) {
> +        /* Reuse current name buffer */
> +        strlcpy(np->rn_name, name, np->rn_namelen + 1);
> +    } else {
> +        /* Expand name buffer */
> +        tmp = (char *) malloc(len + 1);
> +        if (tmp == NULL)
> +            return ENOMEM;
> +        strlcpy(tmp, name, len + 1);
> +        free(np->rn_name);
> +        np->rn_name = tmp;
> +    }
> +    np->rn_namelen = len;
> +    return 0;
>  }
>
>  static int
>  ramfs_lookup(struct vnode *dvp, char *name, struct vnode **vpp)
>  {
> -       struct ramfs_node *np, *dnp;
> -       struct vnode *vp;
> -       size_t len;
> -       int found;
> -
> -       *vpp = NULL;
> -
> -       if (*name == '\0')
> -               return ENOENT;
> -
> -       mutex_lock(&ramfs_lock);
> -
> -       len = strlen(name);
> -       dnp = (ramfs_node*)dvp->v_data;
> -       found = 0;
> -       for (np = dnp->rn_child; np != NULL; np = np->rn_next) {
> -               if (np->rn_namelen == len &&
> -                   memcmp(name, np->rn_name, len) == 0) {
> -                       found = 1;
> -                       break;
> -               }
> -       }
> -       if (found == 0) {
> -               mutex_unlock(&ramfs_lock);
> -               return ENOENT;
> -       }
> -       if (vget(dvp->v_mount, inode_count++, &vp)) {
> -               /* found in cache */
> -               *vpp = vp;
> -               mutex_unlock(&ramfs_lock);
> -               return 0;
> -       }
> -       if (!vp) {
> -               mutex_unlock(&ramfs_lock);
> -               return ENOMEM;
> -       }
> -       vp->v_data = np;
> -       vp->v_mode = ALLPERMS;
> -       vp->v_type = np->rn_type;
> -       vp->v_size = np->rn_size;
> -
> -       mutex_unlock(&ramfs_lock);
> -
> -       *vpp = vp;
> -
> -       return 0;
> +    struct ramfs_node *np, *dnp;
> +    struct vnode *vp;
> +    size_t len;
> +    int found;
> +
> +    *vpp = NULL;
> +
> +    if (*name == '\0')
> +        return ENOENT;
> +
> +    mutex_lock(&ramfs_lock);
> +
> +    len = strlen(name);
> +    dnp = (ramfs_node *) dvp->v_data;
> +    found = 0;
> +    for (np = dnp->rn_child; np != NULL; np = np->rn_next) {
> +        if (np->rn_namelen == len &&
> +            memcmp(name, np->rn_name, len) == 0) {
> +            found = 1;
> +            break;
> +        }
> +    }
> +    if (found == 0) {
> +        mutex_unlock(&ramfs_lock);
> +        return ENOENT;
> +    }
> +    if (vget(dvp->v_mount, inode_count++, &vp)) {
> +        /* found in cache */
> +        *vpp = vp;
> +        mutex_unlock(&ramfs_lock);
> +        return 0;
> +    }
> +    if (!vp) {
> +        mutex_unlock(&ramfs_lock);
> +        return ENOMEM;
> +    }
> +    vp->v_data = np;
> +    vp->v_mode = ALLPERMS;
> +    vp->v_type = np->rn_type;
> +    vp->v_size = np->rn_size;
> +
> +    mutex_unlock(&ramfs_lock);
> +
> +    *vpp = vp;
> +
> +    return 0;
>  }
>
>  static int
>  ramfs_mkdir(struct vnode *dvp, char *name, mode_t mode)
>  {
> -       struct ramfs_node *np;
> +    struct ramfs_node *np;
>
> -       DPRINTF(("mkdir %s\n", name));
> -       if (!S_ISDIR(mode))
> -               return EINVAL;
> +    DPRINTF(("mkdir %s\n", name));
> +    if (!S_ISDIR(mode))
> +        return EINVAL;
>
> -       np = (ramfs_node*)ramfs_add_node((ramfs_node*)dvp->v_data, name,
> VDIR);
> -       if (np == NULL)
> -               return ENOMEM;
> -       np->rn_size = 0;
> -       return 0;
> +    np = (ramfs_node *) ramfs_add_node((ramfs_node *) dvp->v_data, name,
> VDIR);
> +    if (np == NULL)
> +        return ENOMEM;
> +    np->rn_size = 0;
> +    return 0;
>  }
>
>  static int
>  ramfs_symlink(struct vnode *dvp, char *name, char *link)
>  {
> -       auto np = ramfs_add_node((ramfs_node*)dvp->v_data, name, VLNK);
> -       if (np == NULL)
> -               return ENOMEM;
> -       // Save the link target without the final null, as readlink()
> wants it.
> -       size_t len = strlen(link);
> -       np->rn_buf = strndup(link, len);
> -       np->rn_bufsize = np->rn_size = len;
> -       return 0;
> +    auto np = ramfs_add_node((ramfs_node *) dvp->v_data, name, VLNK);
> +    if (np == NULL)
> +        return ENOMEM;
> +    // Save the link target without the final null, as readlink() wants
> it.
> +    size_t len = strlen(link);
> +    np->rn_buf = strndup(link, len);
> +    np->rn_bufsize = np->rn_size = len;
> +    return 0;
>  }
>
>  static int
> -ramfs_readlink(struct vnode *vp, struct uio *uio) {
> -       struct ramfs_node *np = (ramfs_node*)vp->v_data;
> -       size_t len;
> -
> -       if (vp->v_type != VLNK) {
> -               return EINVAL;
> -       }
> -       if (uio->uio_offset < 0) {
> -               return EINVAL;
> -       }
> -       if (uio->uio_resid == 0) {
> -               return 0;
> -       }
> -       if (uio->uio_offset >= (off_t)vp->v_size)
> -               return 0;
> -       if (vp->v_size - uio->uio_offset < uio->uio_resid)
> -               len = vp->v_size - uio->uio_offset;
> -       else
> -               len = uio->uio_resid;
> -       return uiomove(np->rn_buf + uio->uio_offset, len, uio);
> +ramfs_readlink(struct vnode *vp, struct uio *uio)
> +{
> +    struct ramfs_node *np = (ramfs_node *) vp->v_data;
> +    size_t len;
> +
> +    if (vp->v_type != VLNK) {
> +        return EINVAL;
> +    }
> +    if (uio->uio_offset < 0) {
> +        return EINVAL;
> +    }
> +    if (uio->uio_resid == 0) {
> +        return 0;
> +    }
> +    if (uio->uio_offset >= (off_t) vp->v_size)
> +        return 0;
> +    if (vp->v_size - uio->uio_offset < uio->uio_resid)
> +        len = vp->v_size - uio->uio_offset;
> +    else
> +        len = uio->uio_resid;
> +    return uiomove(np->rn_buf + uio->uio_offset, len, uio);
>  }
>
>  /* Remove a directory */
>  static int
>  ramfs_rmdir(struct vnode *dvp, struct vnode *vp, char *name)
>  {
> -
> -       return ramfs_remove_node((ramfs_node*)dvp->v_data,
> (ramfs_node*)vp->v_data);
> +    return ramfs_remove_node((ramfs_node *) dvp->v_data, (ramfs_node *)
> vp->v_data);
>  }
>
>  /* Remove a file */
>  static int
>  ramfs_remove(struct vnode *dvp, struct vnode *vp, char *name)
>  {
> -       DPRINTF(("remove %s in %s\n", name, dvp->v_path));
> -       return ramfs_remove_node((ramfs_node*)dvp->v_data,
> (ramfs_node*)vp->v_data);
> +    DPRINTF(("remove %s in %s\n", name, dvp->v_path));
> +    return ramfs_remove_node((ramfs_node *) dvp->v_data, (ramfs_node *)
> vp->v_data);
>  }
>
>  /* Truncate file */
>  static int
>  ramfs_truncate(struct vnode *vp, off_t length)
>  {
> -       struct ramfs_node *np;
> -       void *new_buf;
> -       size_t new_size;
> -
> -       DPRINTF(("truncate %s length=%d\n", vp->v_path, length));
> -       np = (ramfs_node*)vp->v_data;
> -
> -       if (length == 0) {
> -               if (np->rn_buf != NULL) {
> -                       free(np->rn_buf);
> -                       np->rn_buf = NULL;
> -                       np->rn_bufsize = 0;
> -               }
> -       } else if (size_t(length) > np->rn_bufsize) {
> -               // XXX: this could use a page level allocator
> -               new_size = round_page(length);
> -               new_buf = malloc(new_size);
> -               if (!new_buf)
> -                       return EIO;
> -               if (np->rn_size != 0) {
> -                       memcpy(new_buf, np->rn_buf, vp->v_size);
> -                       free(np->rn_buf);
> -               }
> -               np->rn_buf = (char*)new_buf;
> -               np->rn_bufsize = new_size;
> -       }
> -       np->rn_size = length;
> -       vp->v_size = length;
> -       return 0;
> +    struct ramfs_node *np;
> +    void *new_buf;
> +    size_t new_size;
> +
> +    DPRINTF(("truncate %s length=%d\n", vp->v_path, length));
> +    np = (ramfs_node *) vp->v_data;
> +
> +    if (length == 0) {
> +        if (np->rn_buf != NULL) {
> +            free(np->rn_buf);
> +            np->rn_buf = NULL;
> +            np->rn_bufsize = 0;
> +        }
> +    } else if (size_t(length) > np->rn_bufsize) {
> +        // XXX: this could use a page level allocator
> +        new_size = round_page(length);
> +        new_buf = malloc(new_size);
> +        if (!new_buf)
> +            return EIO;
> +        if (np->rn_size != 0) {
> +            memcpy(new_buf, np->rn_buf, vp->v_size);
> +            free(np->rn_buf);
> +        }
> +        np->rn_buf = (char *) new_buf;
> +        np->rn_bufsize = new_size;
> +    }
> +    np->rn_size = length;
> +    vp->v_size = length;
> +    return 0;
>  }
>
>  /*
> @@ -317,23 +317,23 @@ ramfs_truncate(struct vnode *vp, off_t length)
>  static int
>  ramfs_create(struct vnode *dvp, char *name, mode_t mode)
>  {
> -       struct ramfs_node *np;
> +    struct ramfs_node *np;
>
> -       DPRINTF(("create %s in %s\n", name, dvp->v_path));
> -       if (!S_ISREG(mode))
> -               return EINVAL;
> +    DPRINTF(("create %s in %s\n", name, dvp->v_path));
> +    if (!S_ISREG(mode))
> +        return EINVAL;
>
> -       np = ramfs_add_node((ramfs_node*)dvp->v_data, name, VREG);
> -       if (np == NULL)
> -               return ENOMEM;
> -       return 0;
> +    np = ramfs_add_node((ramfs_node *) dvp->v_data, name, VREG);
> +    if (np == NULL)
> +        return ENOMEM;
> +    return 0;
>  }
>
>  static int
>  ramfs_read(struct vnode *vp, struct file *fp, struct uio *uio, int ioflag)
>  {
> -       struct ramfs_node *np = (ramfs_node*)vp->v_data;
> -       size_t len;
> +    struct ramfs_node *np = (ramfs_node *) vp->v_data;
> +    size_t len;
>
>      if (vp->v_type == VDIR) {
>          return EISDIR;
> @@ -344,25 +344,25 @@ ramfs_read(struct vnode *vp, struct file *fp, struct
> uio *uio, int ioflag)
>      if (uio->uio_offset < 0) {
>          return EINVAL;
>      }
> -       if (uio->uio_resid == 0) {
> -               return 0;
> -       }
> +    if (uio->uio_resid == 0) {
> +        return 0;
> +    }
>
> -       if (uio->uio_offset >= (off_t)vp->v_size)
> -               return 0;
> +    if (uio->uio_offset >= (off_t) vp->v_size)
> +        return 0;
>
> -       if (vp->v_size - uio->uio_offset < uio->uio_resid)
> -               len = vp->v_size - uio->uio_offset;
> -       else
> -               len = uio->uio_resid;
> +    if (vp->v_size - uio->uio_offset < uio->uio_resid)
> +        len = vp->v_size - uio->uio_offset;
> +    else
> +        len = uio->uio_resid;
>
> -       return uiomove(np->rn_buf + uio->uio_offset, len, uio);
> +    return uiomove(np->rn_buf + uio->uio_offset, len, uio);
>  }
>
>  static int
>  ramfs_write(struct vnode *vp, struct uio *uio, int ioflag)
>  {
> -       struct ramfs_node *np = (ramfs_node*)vp->v_data;
> +    struct ramfs_node *np = (ramfs_node *) vp->v_data;
>
>      if (vp->v_type == VDIR) {
>          return EISDIR;
> @@ -373,72 +373,72 @@ ramfs_write(struct vnode *vp, struct uio *uio, int
> ioflag)
>      if (uio->uio_offset < 0) {
>          return EINVAL;
>      }
> -       if (uio->uio_resid == 0) {
> -               return 0;
> -       }
> -
> -       if (ioflag & IO_APPEND)
> -               uio->uio_offset = np->rn_size;
> -
> -       if (size_t(uio->uio_offset + uio->uio_resid) > (size_t)vp->v_size)
> {
> -               /* Expand the file size before writing to it */
> -               off_t end_pos = uio->uio_offset + uio->uio_resid;
> -               if (end_pos > (off_t)np->rn_bufsize) {
> -                       // XXX: this could use a page level allocator
> -                       size_t new_size = round_page(end_pos);
> -                       void *new_buf = malloc(new_size);
> -                       if (!new_buf)
> -                               return EIO;
> -                       if (np->rn_size != 0) {
> -                               memcpy(new_buf, np->rn_buf, vp->v_size);
> -                               free(np->rn_buf);
> -                       }
> -                       np->rn_buf = (char*)new_buf;
> -                       np->rn_bufsize = new_size;
> -               }
> -               np->rn_size = end_pos;
> -               vp->v_size = end_pos;
> -       }
> -       return uiomove(np->rn_buf + uio->uio_offset, uio->uio_resid, uio);
> +    if (uio->uio_resid == 0) {
> +        return 0;
> +    }
> +
> +    if (ioflag & IO_APPEND)
> +        uio->uio_offset = np->rn_size;
> +
> +    if (size_t(uio->uio_offset + uio->uio_resid) > (size_t) vp->v_size) {
> +        /* Expand the file size before writing to it */
> +        off_t end_pos = uio->uio_offset + uio->uio_resid;
> +        if (end_pos > (off_t) np->rn_bufsize) {
> +            // XXX: this could use a page level allocator
> +            size_t new_size = round_page(end_pos);
> +            void *new_buf = malloc(new_size);
> +            if (!new_buf)
> +                return EIO;
> +            if (np->rn_size != 0) {
> +                memcpy(new_buf, np->rn_buf, vp->v_size);
> +                free(np->rn_buf);
> +            }
> +            np->rn_buf = (char *) new_buf;
> +            np->rn_bufsize = new_size;
> +        }
> +        np->rn_size = end_pos;
> +        vp->v_size = end_pos;
> +    }
> +    return uiomove(np->rn_buf + uio->uio_offset, uio->uio_resid, uio);
>  }
>
>  static int
>  ramfs_rename(struct vnode *dvp1, struct vnode *vp1, char *name1,
> -            struct vnode *dvp2, struct vnode *vp2, char *name2)
> +             struct vnode *dvp2, struct vnode *vp2, char *name2)
>  {
> -       struct ramfs_node *np, *old_np;
> -       int error;
> -
> -       if (vp2) {
> -               /* Remove destination file, first */
> -               error = ramfs_remove_node((ramfs_node*)dvp2->v_data,
> (ramfs_node*)vp2->v_data);
> -               if (error)
> -                       return error;
> -       }
> -       /* Same directory ? */
> -       if (dvp1 == dvp2) {
> -               /* Change the name of existing file */
> -               error = ramfs_rename_node((ramfs_node*)vp1->v_data,
> name2);
> -               if (error)
> -                       return error;
> -       } else {
> -               /* Create new file or directory */
> -               old_np = (ramfs_node*)vp1->v_data;
> -               np = ramfs_add_node((ramfs_node*)dvp2->v_data, name2,
> old_np->rn_type);
> -               if (np == NULL)
> -                       return ENOMEM;
> -
> -               if (old_np->rn_buf) {
> -                       /* Copy file data */
> -                       np->rn_buf = old_np->rn_buf;
> -                       np->rn_size = old_np->rn_size;
> -                       np->rn_bufsize = old_np->rn_bufsize;
> -                       old_np->rn_buf = NULL;
> -               }
> -               /* Remove source file */
> -               ramfs_remove_node((ramfs_node*)dvp1->v_data,
> (ramfs_node*)vp1->v_data);
> -       }
> -       return 0;
> +    struct ramfs_node *np, *old_np;
> +    int error;
> +
> +    if (vp2) {
> +        /* Remove destination file, first */
> +        error = ramfs_remove_node((ramfs_node *) dvp2->v_data,
> (ramfs_node *) vp2->v_data);
> +        if (error)
> +            return error;
> +    }
> +    /* Same directory ? */
> +    if (dvp1 == dvp2) {
> +        /* Change the name of existing file */
> +        error = ramfs_rename_node((ramfs_node *) vp1->v_data, name2);
> +        if (error)
> +            return error;
> +    } else {
> +        /* Create new file or directory */
> +        old_np = (ramfs_node *) vp1->v_data;
> +        np = ramfs_add_node((ramfs_node *) dvp2->v_data, name2,
> old_np->rn_type);
> +        if (np == NULL)
> +            return ENOMEM;
> +
> +        if (old_np->rn_buf) {
> +            /* Copy file data */
> +            np->rn_buf = old_np->rn_buf;
> +            np->rn_size = old_np->rn_size;
> +            np->rn_bufsize = old_np->rn_bufsize;
> +            old_np->rn_buf = NULL;
> +        }
> +        /* Remove source file */
> +        ramfs_remove_node((ramfs_node *) dvp1->v_data, (ramfs_node *)
> vp1->v_data);
> +    }
> +    return 0;
>  }
>
>  /*
> @@ -447,100 +447,100 @@ ramfs_rename(struct vnode *dvp1, struct vnode
> *vp1, char *name1,
>  static int
>  ramfs_readdir(struct vnode *vp, struct file *fp, struct dirent *dir)
>  {
> -       struct ramfs_node *np, *dnp;
> -       int i;
> -
> -       mutex_lock(&ramfs_lock);
> -
> -       if (fp->f_offset == 0) {
> -               dir->d_type = DT_DIR;
> -               strlcpy((char *)&dir->d_name, ".", sizeof(dir->d_name));
> -       } else if (fp->f_offset == 1) {
> -               dir->d_type = DT_DIR;
> -               strlcpy((char *)&dir->d_name, "..", sizeof(dir->d_name));
> -       } else {
> -               dnp = (ramfs_node*)vp->v_data;
> -               np = dnp->rn_child;
> -               if (np == NULL) {
> -                       mutex_unlock(&ramfs_lock);
> -                       return ENOENT;
> -               }
> -
> -               for (i = 0; i != (fp->f_offset - 2); i++) {
> -                       np = np->rn_next;
> -                       if (np == NULL) {
> -                               mutex_unlock(&ramfs_lock);
> -                               return ENOENT;
> -                       }
> -               }
> -               if (np->rn_type == VDIR)
> -                       dir->d_type = DT_DIR;
> -               else if (np->rn_type == VLNK)
> -                       dir->d_type = DT_LNK;
> -               else
> -                       dir->d_type = DT_REG;
> -               strlcpy((char *)&dir->d_name, np->rn_name,
> -                       sizeof(dir->d_name));
> -       }
> -       dir->d_fileno = fp->f_offset;
> +    struct ramfs_node *np, *dnp;
> +    int i;
> +
> +    mutex_lock(&ramfs_lock);
> +
> +    if (fp->f_offset == 0) {
> +        dir->d_type = DT_DIR;
> +        strlcpy((char *) &dir->d_name, ".", sizeof(dir->d_name));
> +    } else if (fp->f_offset == 1) {
> +        dir->d_type = DT_DIR;
> +        strlcpy((char *) &dir->d_name, "..", sizeof(dir->d_name));
> +    } else {
> +        dnp = (ramfs_node *) vp->v_data;
> +        np = dnp->rn_child;
> +        if (np == NULL) {
> +            mutex_unlock(&ramfs_lock);
> +            return ENOENT;
> +        }
> +
> +        for (i = 0; i != (fp->f_offset - 2); i++) {
> +            np = np->rn_next;
> +            if (np == NULL) {
> +                mutex_unlock(&ramfs_lock);
> +                return ENOENT;
> +            }
> +        }
> +        if (np->rn_type == VDIR)
> +            dir->d_type = DT_DIR;
> +        else if (np->rn_type == VLNK)
> +            dir->d_type = DT_LNK;
> +        else
> +            dir->d_type = DT_REG;
> +        strlcpy((char *) &dir->d_name, np->rn_name,
> +                sizeof(dir->d_name));
> +    }
> +    dir->d_fileno = fp->f_offset;
>  //     dir->d_namelen = strlen(dir->d_name);
>
> -       fp->f_offset++;
> +    fp->f_offset++;
>
> -       mutex_unlock(&ramfs_lock);
> -       return 0;
> +    mutex_unlock(&ramfs_lock);
> +    return 0;
>  }
>
>  int
>  ramfs_init(void)
>  {
> -       return 0;
> +    return 0;
>  }
>
>  static int
>  ramfs_getattr(struct vnode *vnode, struct vattr *attr)
>  {
> -       attr->va_nodeid = vnode->v_ino;
> -       attr->va_size = vnode->v_size;
> -       return 0;
> +    attr->va_nodeid = vnode->v_ino;
> +    attr->va_size = vnode->v_size;
> +    return 0;
>  }
>
> -#define ramfs_open     ((vnop_open_t)vop_nullop)
> -#define ramfs_close    ((vnop_close_t)vop_nullop)
> -#define ramfs_seek     ((vnop_seek_t)vop_nullop)
> -#define ramfs_ioctl    ((vnop_ioctl_t)vop_einval)
> -#define ramfs_fsync    ((vnop_fsync_t)vop_nullop)
> -#define ramfs_setattr  ((vnop_setattr_t)vop_eperm)
> -#define ramfs_inactive ((vnop_inactive_t)vop_nullop)
> -#define ramfs_link     ((vnop_link_t)vop_eperm)
> +#define ramfs_open      ((vnop_open_t)vop_nullop)
> +#define ramfs_close     ((vnop_close_t)vop_nullop)
> +#define ramfs_seek      ((vnop_seek_t)vop_nullop)
> +#define ramfs_ioctl     ((vnop_ioctl_t)vop_einval)
> +#define ramfs_fsync     ((vnop_fsync_t)vop_nullop)
> +#define ramfs_setattr   ((vnop_setattr_t)vop_eperm)
> +#define ramfs_inactive  ((vnop_inactive_t)vop_nullop)
> +#define ramfs_link      ((vnop_link_t)vop_eperm)
>  #define ramfs_fallocate ((vnop_fallocate_t)vop_nullop)
>
>  /*
>   * vnode operations
>   */
>  struct vnops ramfs_vnops = {
> -       ramfs_open,             /* open */
> -       ramfs_close,            /* close */
> -       ramfs_read,             /* read */
> -       ramfs_write,            /* write */
> -       ramfs_seek,             /* seek */
> -       ramfs_ioctl,            /* ioctl */
> -       ramfs_fsync,            /* fsync */
> -       ramfs_readdir,          /* readdir */
> -       ramfs_lookup,           /* lookup */
> -       ramfs_create,           /* create */
> -       ramfs_remove,           /* remove */
> -       ramfs_rename,           /* remame */
> -       ramfs_mkdir,            /* mkdir */
> -       ramfs_rmdir,            /* rmdir */
> -       ramfs_getattr,          /* getattr */
> -       ramfs_setattr,          /* setattr */
> -       ramfs_inactive,         /* inactive */
> -       ramfs_truncate,         /* truncate */
> -       ramfs_link,             /* link */
> -       (vnop_cache_t) nullptr, /* arc */
> -       ramfs_fallocate,        /* fallocate */
> -       ramfs_readlink,         /* read link */
> -       ramfs_symlink,          /* symbolic link */
> +        ramfs_open,             /* open */
> +        ramfs_close,            /* close */
> +        ramfs_read,             /* read */
> +        ramfs_write,            /* write */
> +        ramfs_seek,             /* seek */
> +        ramfs_ioctl,            /* ioctl */
> +        ramfs_fsync,            /* fsync */
> +        ramfs_readdir,          /* readdir */
> +        ramfs_lookup,           /* lookup */
> +        ramfs_create,           /* create */
> +        ramfs_remove,           /* remove */
> +        ramfs_rename,           /* remame */
> +        ramfs_mkdir,            /* mkdir */
> +        ramfs_rmdir,            /* rmdir */
> +        ramfs_getattr,          /* getattr */
> +        ramfs_setattr,          /* setattr */
> +        ramfs_inactive,         /* inactive */
> +        ramfs_truncate,         /* truncate */
> +        ramfs_link,             /* link */
> +        (vnop_cache_t) nullptr, /* arc */
> +        ramfs_fallocate,        /* fallocate */
> +        ramfs_readlink,         /* read link */
> +        ramfs_symlink,          /* symbolic link */
>  };
>
> --
> 2.7.4
>
> --
> You received this message because you are subscribed to the Google Groups
> "OSv Development" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to osv-dev+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups "OSv 
Development" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to osv-dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to