]> git.sesse.net Git - bcachefs-tools-debian/blobdiff - src/commands/cmd_list.rs
Update upstream source from tag 'v1.6.3'
[bcachefs-tools-debian] / src / commands / cmd_list.rs
similarity index 92%
rename from rust-src/src/cmd_list.rs
rename to src/commands/cmd_list.rs
index a0d0591eafd934f29c1ea6436d3650e3c3499610..442fdd62fe958cd30007ab2a05cee1653790b1c5 100644 (file)
@@ -1,4 +1,3 @@
-use atty::Stream;
 use log::{error};
 use bch_bindgen::bcachefs;
 use bch_bindgen::opt_set;
@@ -8,9 +7,8 @@ use bch_bindgen::btree::BtreeTrans;
 use bch_bindgen::btree::BtreeIter;
 use bch_bindgen::btree::BtreeNodeIter;
 use bch_bindgen::btree::BtreeIterFlags;
-use clap::{Args, Parser};
-use std::ffi::{c_int, c_char};
-use crate::transform_c_args;
+use clap::{Parser};
+use std::io::{stdout, IsTerminal};
 
 fn list_keys(fs: &Fs, opt: Cli) -> anyhow::Result<()> {
     let trans = BtreeTrans::new(fs);
@@ -115,11 +113,11 @@ pub struct Cli {
     mode:       Mode,
 
     /// Check (fsck) the filesystem first
-    #[arg(short, long, default_value_t=false)]
+    #[arg(short, long)]
     fsck:       bool,
 
     /// Force color on/off. Default: autodetect tty
-    #[arg(short, long, action = clap::ArgAction::Set, default_value_t=atty::is(Stream::Stdout))]
+    #[arg(short, long, action = clap::ArgAction::Set, default_value_t=stdout().is_terminal())]
     colorize:   bool,
 
     /// Verbose mode
@@ -134,6 +132,7 @@ fn cmd_list_inner(opt: Cli) -> anyhow::Result<()> {
     let mut fs_opts: bcachefs::bch_opts = Default::default();
 
     opt_set!(fs_opts, nochanges,        1);
+    opt_set!(fs_opts, read_only,        1);
     opt_set!(fs_opts, norecovery,       1);
     opt_set!(fs_opts, degraded,         1);
     opt_set!(fs_opts, errors,           bcachefs::bch_error_actions::BCH_ON_ERROR_continue as u8);
@@ -157,13 +156,13 @@ fn cmd_list_inner(opt: Cli) -> anyhow::Result<()> {
     }
 }
 
-#[no_mangle]
-#[allow(clippy::not_unsafe_ptr_arg_deref)]
-pub extern "C" fn cmd_list(argc: c_int, argv: *const *const c_char) {
-    transform_c_args!(argv, argc, argv);
+pub fn cmd_list(argv: Vec<String>) -> i32 {
     let opt = Cli::parse_from(argv);
     colored::control::set_override(opt.colorize);
     if let Err(e) = cmd_list_inner(opt) {
         error!("Fatal error: {}", e);
+        1
+    } else {
+        0
     }
 }