From ff90d3d8d369b70d2d24278692353ae062d8e7ee Mon Sep 17 00:00:00 2001 From: ksherlock Date: Mon, 14 Dec 2009 00:48:01 +0000 Subject: [PATCH] git-svn-id: https://profuse.googlecode.com/svn/branches/v2@168 aa027e90-d47c-11dd-86d7-074df07e0730 --- pascal/Makefile | 10 ++++++++-- pascal/profuse_pascal_ops.cpp | 32 ++++++++++++++++++++++++++++---- 2 files changed, 36 insertions(+), 6 deletions(-) diff --git a/pascal/Makefile b/pascal/Makefile index 008c490..78694b3 100644 --- a/pascal/Makefile +++ b/pascal/Makefile @@ -1,6 +1,12 @@ CC = g++ -CPPFLAGS += -Wall -O2 -g -fexceptions -LDFLAGS += -L/usr/local/lib -lfuse +CPPFLAGS += -Wall -O2 -g -fexceptions \ + -D__FreeBSD__=10 \ + -D_FILE_OFFSET_BITS=64 \ + -D__DARWIN_64_BIT_INO_T=1 \ + -DHAVE_STAT_BIRTHTIME + +LDFLAGS += -L/usr/local/lib -lfuse_ino64 + newfs_pascal: \ newfs_pascal.o \ diff --git a/pascal/profuse_pascal_ops.cpp b/pascal/profuse_pascal_ops.cpp index 36e83a0..59f4dca 100644 --- a/pascal/profuse_pascal_ops.cpp +++ b/pascal/profuse_pascal_ops.cpp @@ -3,6 +3,7 @@ #include #include #include +#include #include #include @@ -60,11 +61,13 @@ static FileEntry *findChild(VolumeEntry *volume, unsigned inode) static void pascal_init(void *userdata, struct fuse_conn_info *conn) { + std::printf("pascal_init\n"); // nop } static void pascal_destroy(void *userdata) { + std::printf("pascal_destroy\n"); // nop } @@ -75,6 +78,8 @@ static void pascal_destroy(void *userdata) static void pascal_listxattr(fuse_req_t req, fuse_ino_t ino, size_t size) { + std::printf("pascal_listxattr\n"); + VolumeEntry *volume = (VolumeEntry *)fuse_req_userdata(req); FileEntry *file; std::string attr; @@ -116,6 +121,9 @@ static void pascal_listxattr(fuse_req_t req, fuse_ino_t ino, size_t size) static void pascal_getxattr(fuse_req_t req, fuse_ino_t ino, const char *name, size_t size) { + std::printf("pascal_getxattr\n"); + + VolumeEntry *volume = (VolumeEntry *)fuse_req_userdata(req); FileEntry *file; std::string attr(name); @@ -168,6 +176,8 @@ static void pascal_getxattr(fuse_req_t req, fuse_ino_t ino, const char *name, si static void pascal_opendir(fuse_req_t req, fuse_ino_t ino, struct fuse_file_info *fi) { + std::printf("pascal_opendir\n"); + ERROR(ino != 1, ENOTDIR) @@ -178,13 +188,17 @@ static void pascal_opendir(fuse_req_t req, fuse_ino_t ino, struct fuse_file_info static void pascal_releasedir(fuse_req_t req, fuse_ino_t ino, struct fuse_file_info *fi) { + std::printf("pascal_releasedir\n"); + // nop. } static void pascal_readdir(fuse_req_t req, fuse_ino_t ino, size_t size, off_t off, struct fuse_file_info *fi) { + std::printf("pascal_readdir %u, %u, %u\n", (unsigned)ino, (unsigned)size, (unsigned)off); + VolumeEntry *volume = (VolumeEntry *)fuse_req_userdata(req); - auto_array buffer(new char[size]); + auto_array buffer(new uint8_t[size]); unsigned count = volume->fileCount(); struct stat st; @@ -208,11 +222,11 @@ static void pascal_readdir(fuse_req_t req, fuse_ino_t ino, size_t size, off_t of if (tmp + currentSize > size) break; - fuse_add_direntry(req, buffer.get() + currentSize, size, file->name(), &st, i + 1); + fuse_add_direntry(req, (char *)buffer.get() + currentSize, size, file->name(), &st, i + 1); currentSize += tmp; } - fuse_reply_buf(req,buffer.get(), currentSize); + fuse_reply_buf(req, currentSize ? (char *)buffer.get() : NULL, currentSize); } @@ -246,7 +260,7 @@ static void stat(VolumeEntry *volume, struct stat *st) time_t t = volume->lastBoot(); - st->st_ino = volume->inode(); + st->st_ino = volume->inode(); st->st_nlink = 1 + volume->fileCount(); st->st_mode = S_IFDIR | 0555; st->st_size = volume->blocks() * 512; @@ -261,6 +275,8 @@ static void stat(VolumeEntry *volume, struct stat *st) static void pascal_lookup(fuse_req_t req, fuse_ino_t parent, const char *name) { + std::printf("pascal_lookup %u %s\n", (unsigned)parent, name); + VolumeEntry *volume = (VolumeEntry *)fuse_req_userdata(req); struct fuse_entry_param entry; @@ -292,6 +308,8 @@ static void pascal_lookup(fuse_req_t req, fuse_ino_t parent, const char *name) static void pascal_getattr(fuse_req_t req, fuse_ino_t ino, struct fuse_file_info *fi) { + std::printf("pascal_getattr\n"); + struct stat st; VolumeEntry *volume = (VolumeEntry *)fuse_req_userdata(req); FileEntry *file; @@ -317,6 +335,8 @@ static void pascal_getattr(fuse_req_t req, fuse_ino_t ino, struct fuse_file_info static void pascal_open(fuse_req_t req, fuse_ino_t ino, struct fuse_file_info *fi) { + std::printf("pascal_open\n"); + VolumeEntry *volume = (VolumeEntry *)fuse_req_userdata(req); FileEntry *file; @@ -336,12 +356,16 @@ static void pascal_open(fuse_req_t req, fuse_ino_t ino, struct fuse_file_info *f static void pascal_release(fuse_req_t req, fuse_ino_t ino, struct fuse_file_info *fi) { + std::printf("pascal_release\n"); + // nop } static void pascal_read(fuse_req_t req, fuse_ino_t ino, size_t size, off_t off, struct fuse_file_info *fi) { + std::printf("pascal_read\n"); + VolumeEntry *volume = (VolumeEntry *)fuse_req_userdata(req); FileEntry *file = (FileEntry *)fi->fh;