]> git.sesse.net Git - bcachefs-tools-debian/blobdiff - src/bcachefs.rs
Disable pristine-tar option in gbp.conf, since there is no pristine-tar branch.
[bcachefs-tools-debian] / src / bcachefs.rs
index 62bfdbb7b851a37cb2c9239256e36d8d0614ed5d..ef38a66be729f78e3dd749251d3dc4f8b82f112a 100644 (file)
@@ -7,6 +7,7 @@ use std::ffi::CString;
 use commands::cmd_completions::cmd_completions;
 use commands::cmd_list::cmd_list;
 use commands::cmd_mount::cmd_mount;
+use commands::cmd_subvolume::cmd_subvolumes;
 use commands::logger::SimpleLogger;
 use bch_bindgen::c;
 
@@ -20,6 +21,10 @@ impl std::fmt::Display for ErrnoError {
 
 impl std::error::Error for ErrnoError {}
 
+fn to_mut<T>(p: *const T) -> *mut T {
+    p as *mut T
+}
+
 fn handle_c_command(args: Vec<String>, symlink_cmd: Option<&str>) -> i32 {
     let mut argv: Vec<_> = args.clone();
 
@@ -34,8 +39,8 @@ fn handle_c_command(args: Vec<String>, symlink_cmd: Option<&str>) -> i32 {
         .iter()
         .map(|s| CString::new(s.as_str()).unwrap())
         .collect();
-    let argv: Vec<_> = argv.iter().map(|s| s.as_ptr()).collect();
-    let argv = argv.as_ptr() as *mut *mut i8;
+    let mut argv: Vec<_> = argv.iter().map(|s| to_mut(s.as_ptr())).collect();
+    let argv = argv.as_mut_ptr();
 
     // The C functions will mutate argv. It shouldn't be used after this block.
     unsafe {
@@ -61,7 +66,6 @@ fn handle_c_command(args: Vec<String>, symlink_cmd: Option<&str>) -> i32 {
             "set-passphrase" => c::cmd_set_passphrase(argc, argv),
             "setattr" => c::cmd_setattr(argc, argv),
             "show-super" => c::cmd_show_super(argc, argv),
-            "subvolume" => c::subvolume_cmds(argc, argv),
             "unlock" => c::cmd_unlock(argc, argv),
             "version" => c::cmd_version(argc, argv),
 
@@ -112,6 +116,7 @@ fn main() {
         "completions" => cmd_completions(args[1..].to_vec()),
         "list" => cmd_list(args[1..].to_vec()),
         "mount" => cmd_mount(args, symlink_cmd),
+        "subvolume" => cmd_subvolumes(args[1..].to_vec()),
         _ => handle_c_command(args, symlink_cmd),
     };