Fix rmdir, stat and readlink.

This commit is contained in:
Philip Langdale 2012-03-31 11:42:06 -07:00
parent ff08292e24
commit 448f0db84f
1 changed files with 9 additions and 3 deletions

View File

@ -31,7 +31,7 @@ static struct fuse_opt pifs_opts[] =
static int pifs_getattr(const char *path, struct stat *buf)
{
FULL_PATH(path);
int ret = stat(full_path, buf);
int ret = lstat(full_path, buf);
buf->st_size /= 2;
return ret == -1 ? -errno : ret;
}
@ -39,8 +39,13 @@ static int pifs_getattr(const char *path, struct stat *buf)
static int pifs_readlink(const char *path, char *buf, size_t bufsiz)
{
FULL_PATH(path);
int ret = readlink(full_path, buf, bufsiz);
return ret == -1 ? -errno : ret;
int ret = readlink(full_path, buf, bufsiz - 1);
if (ret == -1) {
return -errno;
}
buf[ret] = '\0';
return 0;
}
static int pifs_mknod(const char *path, mode_t mode, dev_t dev)
@ -326,6 +331,7 @@ static struct fuse_operations pifs_ops = {
.readlink = pifs_readlink,
.mknod = pifs_mknod,
.mkdir = pifs_mkdir,
.rmdir = pifs_rmdir,
.unlink = pifs_unlink,
.symlink = pifs_symlink,
.rename = pifs_rename,