From 97e4db9dd505caddc2684405b4d7bf33179001d5 Mon Sep 17 00:00:00 2001 From: Christian Ebner Date: Mon, 9 Sep 2019 18:27:27 +0200 Subject: [PATCH] src/pxar/fuse.rs: impl open callback for fuse Signed-off-by: Christian Ebner --- src/pxar/fuse.rs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/pxar/fuse.rs b/src/pxar/fuse.rs index 2617522b..24de0f3c 100644 --- a/src/pxar/fuse.rs +++ b/src/pxar/fuse.rs @@ -68,6 +68,7 @@ extern "C" { fn fuse_session_destroy(session: ConstPtr); fn fuse_reply_attr(req: Request, attr: Option<&libc::stat>, timeout: f64) -> c_int; fn fuse_reply_err(req: Request, errno: c_int) -> c_int; + fn fuse_reply_open(req: Request, fileinfo: ConstPtr) -> c_int; fn fuse_reply_entry(req: Request, entry: Option<&EntryParam>) -> c_int; fn fuse_req_userdata(req: Request) -> MutPtr; } @@ -425,11 +426,12 @@ extern "C" fn getattr(req: Request, inode: u64, _fileinfo: MutPtr) { }); } -extern "C" fn open(req: Request, inode: u64, _fileinfo: MutPtr) { - run_in_context(req, inode, |_decoder, _ino_offset| { - // code goes here +extern "C" fn open(req: Request, inode: u64, fileinfo: MutPtr) { + run_in_context(req, inode, |decoder, ino_offset| { + decoder.open(ino_offset).map_err(|_| libc::ENOENT)?; + let _ret = unsafe { fuse_reply_open(req, fileinfo) }; - Err(libc::ENOENT) + Ok(()) }); }