introduce fgetattr operation

This commit is contained in:
Peter Hatina 2012-10-02 18:59:37 +02:00
parent 88e3a2e2b4
commit e0b536590c
2 changed files with 14 additions and 0 deletions

View File

@ -172,6 +172,11 @@ int wrap_ftruncate(const char *path, off_t offset, struct fuse_file_info *file_i
return SMTPFileSystem::instance()->ftruncate(path, offset, file_info);
}
int wrap_fgetattr(const char *path, struct stat *buf, struct fuse_file_info *file_info)
{
return SMTPFileSystem::instance()->fgetattr(path, buf, file_info);
}
// -----------------------------------------------------------------------------
std::unique_ptr<SMTPFileSystem> SMTPFileSystem::s_instance;
@ -223,6 +228,7 @@ SMTPFileSystem::SMTPFileSystem():
m_fuse_operations.access = nullptr;
m_fuse_operations.create = wrap_create;
m_fuse_operations.ftruncate = wrap_ftruncate;
m_fuse_operations.fgetattr = wrap_fgetattr;
}
SMTPFileSystem::~SMTPFileSystem()
@ -634,6 +640,13 @@ int SMTPFileSystem::ftruncate(const char *path, off_t offset,
return 0;
}
int SMTPFileSystem::fgetattr(const char *path, struct stat *buf, fuse_file_info *file_info)
{
if (::fstat(file_info->fh, buf) != 0)
return -errno;
return 0;
}
char *SMTPFileSystem::expandTmpDir(char *tmp)
{
if (!tmp) {

View File

@ -102,6 +102,7 @@ public:
int releasedir(const char *path, struct fuse_file_info *file_info);
int fsyncdir(const char *path, int datasync, struct fuse_file_info *file_info);
int ftruncate(const char *path, off_t offset, struct fuse_file_info *file_info);
int fgetattr(const char *path, struct stat *buf, struct fuse_file_info *file_info);
void* init(struct fuse_conn_info *conn);
int create(const char *path, mode_t mode, fuse_file_info *file_info);