]> git.proxmox.com Git - proxmox-backup.git/commitdiff
src/pxar/fuse.rs: cleanup - remove setup_session (moved into new)
authorDietmar Maurer <dietmar@proxmox.com>
Tue, 26 Nov 2019 10:04:46 +0000 (11:04 +0100)
committerDietmar Maurer <dietmar@proxmox.com>
Tue, 26 Nov 2019 10:04:46 +0000 (11:04 +0100)
src/pxar/fuse.rs

index 14a40c60a55f11d27564c666bfcdb8854d27dce2..365f2b11ea8dc3de63e82e1ab7e787ccd07cdc69 100644 (file)
@@ -161,14 +161,9 @@ impl Session  {
     /// ("ro,default_permissions").
     pub fn from_path(archive_path: &Path, options: &OsStr, verbose: bool) -> Result<Self, Error> {
         let file = File::open(archive_path)?;
-        let args = Self::setup_args(options, verbose)?;
-        let oprs = Self::setup_callbacks();
-
-        // By storing the decoder as userdata of the session, each request may
-        // access it.
         let reader = BufReader::new(file);
         let decoder = Decoder::new(reader)?;
-        Self::setup_session(decoder, args, oprs, verbose)
+        Self::new(decoder, options, verbose)
     }
 
     /// Create a new low level fuse session using the given `Decoder`.
@@ -184,50 +179,14 @@ impl Session  {
     ) -> Result<Self, Error> {
         let args = Self::setup_args(options, verbose)?;
         let oprs = Self::setup_callbacks();
-        Self::setup_session(decoder, args, oprs, verbose)
-    }
-
-    fn setup_args(options: &OsStr, verbose: bool) -> Result<Vec<CString>, Error> {
-        // First argument should be the executable name
-        let mut arguments = vec![
-            CString::new("pxar-mount").unwrap(),
-            CString::new("-o").unwrap(),
-            CString::new(options.as_bytes())?,
-        ];
-        if verbose {
-            arguments.push(CString::new("--debug").unwrap());
-        }
-
-        Ok(arguments)
-    }
-
-    fn setup_callbacks() -> Operations {
-        // Register the callback functions for the session
-        let mut oprs = Operations::default();
-        oprs.init = Some(init);
-        oprs.destroy = Some(destroy);
-        oprs.lookup = Some(Self::lookup);
-        oprs.getattr = Some(Self::getattr);
-        oprs.readlink = Some(Self::readlink);
-        oprs.open = Some(Self::open);
-        oprs.read = Some(Self::read);
-        oprs.opendir = Some(Self::opendir);
-        oprs.readdir = Some(Self::readdir);
-        oprs
-    }
 
-    fn setup_session(
-        decoder: Decoder,
-        args: Vec<CString>,
-        oprs: Operations,
-        verbose: bool,
-    ) -> Result<Self, Error> {
         let ctx = Context {
             decoder,
             goodbye_cache: None,
             attr_cache: None,
             ino_offset: 0,
         };
+
         let session_ctx = Box::new(Mutex::new(ctx));
         let arg_ptrs: Vec<_> = args.iter().map(|opt| opt.as_ptr()).collect();
         let fuse_args = FuseArgs {
@@ -256,10 +215,36 @@ impl Session  {
             bail!("error while setting signal handlers");
         }
 
-        Ok(Self {
-            ptr: session_ptr,
-            verbose,
-        })
+        Ok(Self { ptr: session_ptr, verbose })
+    }
+
+    fn setup_args(options: &OsStr, verbose: bool) -> Result<Vec<CString>, Error> {
+        // First argument should be the executable name
+        let mut arguments = vec![
+            CString::new("pxar-mount").unwrap(),
+            CString::new("-o").unwrap(),
+            CString::new(options.as_bytes())?,
+        ];
+        if verbose {
+            arguments.push(CString::new("--debug").unwrap());
+        }
+
+        Ok(arguments)
+    }
+
+    fn setup_callbacks() -> Operations {
+        // Register the callback functions for the session
+        let mut oprs = Operations::default();
+        oprs.init = Some(init);
+        oprs.destroy = Some(destroy);
+        oprs.lookup = Some(Self::lookup);
+        oprs.getattr = Some(Self::getattr);
+        oprs.readlink = Some(Self::readlink);
+        oprs.open = Some(Self::open);
+        oprs.read = Some(Self::read);
+        oprs.opendir = Some(Self::opendir);
+        oprs.readdir = Some(Self::readdir);
+        oprs
     }
 
     /// Mount the filesystem on the given mountpoint.