From a208ce4aa841b6abd61154efa4705afb93a7c2e2 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 7 Aug 2019 20:00:09 -0600 Subject: [PATCH] Update redox_users --- Cargo.lock | 452 +++++++++++++++++++++++++++++++++----------- Cargo.toml | 12 +- src/bin/groupadd.rs | 6 +- src/bin/groupdel.rs | 14 +- src/bin/groupmod.rs | 22 +-- src/bin/id.rs | 20 +- src/bin/login.rs | 4 +- src/bin/passwd.rs | 10 +- src/bin/su.rs | 6 +- src/bin/sudo.rs | 10 +- src/bin/useradd.rs | 28 +-- src/bin/userdel.rs | 20 +- src/bin/usermod.rs | 38 ++-- src/lib.rs | 4 +- 14 files changed, 440 insertions(+), 206 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 30a5ea9e09..4054a3fe35 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,21 +2,20 @@ # It is not intended for manual editing. [[package]] name = "ansi_term" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "argon2rs" -version = "0.2.5" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", - "scoped_threadpool 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "arrayref" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "arrayvec" -version = "0.4.10" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", @@ -24,84 +23,170 @@ dependencies = [ [[package]] name = "atty" -version = "0.2.11" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", - "termion 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "autocfg" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "backtrace" -version = "0.3.14" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "backtrace-sys 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", - "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc-demangle 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "backtrace-sys 0.1.31 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc-demangle 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "backtrace-sys" -version = "0.1.28" +version = "0.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cc 1.0.29 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "base64" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "bitflags" -version = "1.0.4" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] -name = "blake2-rfc" -version = "0.2.18" +name = "blake2b_simd" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "arrayref 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", + "arrayvec 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", "constant_time_eq 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "bytecount" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "byteorder" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "cc" -version = "1.0.29" +version = "1.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "cfg-if" -version = "0.1.6" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "clap" -version = "2.29.4" +version = "2.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "ansi_term 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)", - "atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", - "strsim 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "textwrap 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", + "atty 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "strsim 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "textwrap 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "vec_map 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "cloudabi" +version = "0.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "constant_time_eq" version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "crossbeam" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-channel 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-deque 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-epoch 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "crossbeam-channel" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "crossbeam-deque" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "crossbeam-epoch 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "arrayvec 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "arrayvec 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "memoffset 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "crossbeam-utils" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "extra" version = "0.1.0" @@ -112,7 +197,7 @@ name = "failure" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "backtrace 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", + "backtrace 0.3.34 (registry+https://github.com/rust-lang/crates.io-index)", "failure_derive 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -121,10 +206,10 @@ name = "failure_derive" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)", - "synstructure 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.43 (registry+https://github.com/rust-lang/crates.io-index)", + "synstructure 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -132,18 +217,46 @@ name = "fuchsia-cprng" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "lazy_static" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "libc" -version = "0.2.49" +version = "0.2.60" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "liner" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bytecount 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "termion 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "lock_api" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "termion 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "owning_ref 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "memoffset" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "memoffset" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -151,14 +264,51 @@ name = "nodrop" version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "num_cpus" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "numtoa" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "owning_ref" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "parking_lot" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "lock_api 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "parking_lot_core" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "proc-macro2" -version = "0.4.27" +version = "0.4.30" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -166,22 +316,22 @@ dependencies = [ [[package]] name = "quote" -version = "0.6.11" +version = "0.6.13" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "rand" -version = "0.4.6" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ + "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -189,14 +339,27 @@ name = "rand_core" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "rand_core" -version = "0.4.0" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "rand_os" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "rdrand" version = "0.4.0" @@ -207,7 +370,7 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.1.51" +version = "0.1.56" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -215,53 +378,99 @@ name = "redox_termios" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "redox_users" -version = "0.2.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "argon2rs 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", + "rust-argon2 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rust-argon2" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", + "blake2b_simd 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "rustc-demangle" -version = "0.1.13" +version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] -name = "scoped_threadpool" -version = "0.1.9" +name = "rustc_version" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "scopeguard" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] -name = "strsim" +name = "scopeguard" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "semver" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "semver-parser" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "smallvec" +version = "0.6.10" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "stable_deref_trait" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "strsim" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "syn" -version = "0.15.26" +version = "0.15.43" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "synstructure" -version = "0.10.1" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.43 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -270,15 +479,15 @@ name = "termion" version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", "numtoa 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", "redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "textwrap" -version = "0.9.0" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -298,12 +507,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" name = "userutils" version = "0.1.0" dependencies = [ - "clap 2.29.4 (registry+https://github.com/rust-lang/crates.io-index)", + "clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)", "extra 0.1.0 (git+https://gitlab.redox-os.org/redox-os/libextra.git)", - "liner 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)", + "liner 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", "redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_users 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_users 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "termion 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -314,7 +523,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "winapi" -version = "0.3.6" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -332,46 +541,71 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" [metadata] -"checksum ansi_term 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6b3568b48b7cefa6b8ce125f9bb4989e52fbcc29ebea88df04cc7c5f12f70455" -"checksum argon2rs 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "3f67b0b6a86dae6e67ff4ca2b6201396074996379fba2b92ff649126f37cb392" -"checksum arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = "92c7fb76bc8826a8b33b4ee5bb07a247a81e76764ab4d55e8f73e3a4d8808c71" -"checksum atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "9a7d5b8723950951411ee34d271d99dddcc2035a16ab25310ea2c8cfd4369652" -"checksum autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a6d640bee2da49f60a4068a7fae53acde8982514ab7bae8b8cea9e88cbcfd799" -"checksum backtrace 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)" = "cd5a90e2b463010cd0e0ce9a11d4a9d5d58d9f41d4a6ba3dcaf9e68b466e88b4" -"checksum backtrace-sys 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)" = "797c830ac25ccc92a7f8a7b9862bde440715531514594a6154e3d4a54dd769b6" -"checksum bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "228047a76f468627ca71776ecdebd732a3423081fcf5125585bcd7c49886ce12" -"checksum blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)" = "5d6d530bdd2d52966a6d03b7a964add7ae1a288d25214066fd4b600f0f796400" -"checksum cc 1.0.29 (registry+https://github.com/rust-lang/crates.io-index)" = "4390a3b5f4f6bce9c1d0c00128379df433e53777fdd30e92f16a529332baec4e" -"checksum cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "082bb9b28e00d3c9d39cc03e64ce4cea0f1bb9b3fde493f0cbc008472d22bdf4" -"checksum clap 2.29.4 (registry+https://github.com/rust-lang/crates.io-index)" = "7b8f59bcebcfe4269b09f71dab0da15b355c75916a8f975d3876ce81561893ee" +"checksum ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b" +"checksum arrayref 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "0d382e583f07208808f6b1249e60848879ba3543f57c32277bf52d69c2f0f0ee" +"checksum arrayvec 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)" = "b8d73f9beda665eaa98ab9e4f7442bd4e7de6652587de55b2525e52e29c1b0ba" +"checksum atty 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)" = "1803c647a3ec87095e7ae7acfca019e98de5ec9a7d01343f611cf3152ed71a90" +"checksum backtrace 0.3.34 (registry+https://github.com/rust-lang/crates.io-index)" = "b5164d292487f037ece34ec0de2fcede2faa162f085dd96d2385ab81b12765ba" +"checksum backtrace-sys 0.1.31 (registry+https://github.com/rust-lang/crates.io-index)" = "82a830b4ef2d1124a711c71d263c5abdc710ef8e907bd508c88be475cebc422b" +"checksum base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0b25d992356d2eb0ed82172f5248873db5560c4721f564b13cb5193bda5e668e" +"checksum bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3d155346769a6855b86399e9bc3814ab343cd3d62c7e985113d46a0ec3c281fd" +"checksum blake2b_simd 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)" = "461f4b879a8eb70c1debf7d0788a9a5ff15f1ea9d25925fea264ef4258bed6b2" +"checksum bytecount 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "4bbeb7c30341fce29f6078b4bdf876ea4779600866e98f5b2d203a534f195050" +"checksum byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a7c3dd8985a7111efc5c80b44e23ecdd8c007de8ade3b96595387e812b957cf5" +"checksum cc 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)" = "ce400c638d48ee0e9ab75aef7997609ec57367ccfe1463f21bf53c3eca67bf46" +"checksum cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "b486ce3ccf7ffd79fdeb678eac06a9e6c09fc88d33836340becb8fffe87c5e33" +"checksum clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5067f5bb2d80ef5d68b4c87db81601f0b75bca627bc2ef76b141d7b846a3c6d9" +"checksum cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" "checksum constant_time_eq 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8ff012e225ce166d4422e0e78419d901719760f62ae2b7969ca6b564d1b54a9e" +"checksum crossbeam 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d1c92ff2d7a202d592f5a412d75cf421495c913817781c1cb383bf12a77e185f" +"checksum crossbeam-channel 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "c8ec7fcd21571dc78f96cc96243cab8d8f035247c3efd16c687be154c3fa9efa" +"checksum crossbeam-deque 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "05e44b8cf3e1a625844d1750e1f7820da46044ff6d28f4d43e455ba3e5bb2c13" +"checksum crossbeam-epoch 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2449aaa4ec7ef96e5fb24db16024b935df718e9ae1cec0a1e68feeca2efca7b8" +"checksum crossbeam-epoch 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "fedcd6772e37f3da2a9af9bf12ebe046c0dfe657992377b4df982a2b54cd37a9" +"checksum crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)" = "04973fa96e96579258a5091af6003abde64af786b860f18622b82e026cca60e6" "checksum extra 0.1.0 (git+https://gitlab.redox-os.org/redox-os/libextra.git)" = "" "checksum failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "795bd83d3abeb9220f257e597aa0080a508b27533824adf336529648f6abf7e2" "checksum failure_derive 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "ea1063915fd7ef4309e222a5a07cf9c319fb9c7836b1f89b85458672dbb127e1" "checksum fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" -"checksum libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)" = "413f3dfc802c5dc91dc570b05125b6cda9855edfaa9825c9849807876376e70e" -"checksum liner 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "f9e406164c25b420480023985bdf65cef366855666ad4cb12cd3eaee82dcb399" +"checksum lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bc5729f27f159ddd61f4df6228e827e86643d4d3e7c32183cb30a1c08f604a14" +"checksum libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)" = "d44e80633f007889c7eff624b709ab43c92d708caad982295768a7b13ca3b5eb" +"checksum liner 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "e21c5e49e5d73f18124fd3c751a0823f754c5ae7193cb9e8aa467b03b161241c" +"checksum lock_api 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "62ebf1391f6acad60e5c8b43706dde4582df75c06698ab44511d15016bc2442c" +"checksum memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0f9dc261e2b62d7a622bf416ea3c5245cdd5d9a7fcc428c0d06804dfce1775b3" +"checksum memoffset 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ce6075db033bbbb7ee5a0bbd3a3186bbae616f57fb001c485c7ff77955f8177f" "checksum nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "2f9667ddcc6cc8a43afc9b7917599d7216aa09c463919ea32c59ed6cac8bc945" +"checksum num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "bcef43580c035376c0705c42792c294b66974abbfd2789b511784023f71f3273" "checksum numtoa 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b8f8bdf33df195859076e54ab11ee78a1b208382d3a26ec40d142ffc1ecc49ef" -"checksum proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)" = "4d317f9caece796be1980837fd5cb3dfec5613ebdb04ad0956deea83ce168915" -"checksum quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)" = "cdd8e04bd9c52e0342b406469d494fcb033be4bdbe5c606016defbb1681411e1" -"checksum rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "552840b97013b1a26992c11eac34bdd778e464601a4c2054b5f0bff7c6761293" +"checksum owning_ref 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "49a4b8ea2179e6a2e27411d3bca09ca6dd630821cf6894c6c7c8467a8ee7ef13" +"checksum parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "f0802bff09003b291ba756dc7e79313e51cc31667e94afbe847def490424cde5" +"checksum parking_lot_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ad7f7e6ebdc79edff6fdcb87a55b620174f7a989e3eb31b65231f4af57f00b8c" +"checksum proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)" = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759" +"checksum quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)" = "6ce23b6b870e8f94f81fb0a363d65d86675884b34a09043c81e5562f11c1f8e1" +"checksum rand 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c618c47cd3ebd209790115ab837de41425723956ad3ce2e6a7f09890947cacb9" "checksum rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" -"checksum rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d0e7a549d590831370895ab7ba4ea0c1b6b011d106b5ff2da6eee112615e6dc0" +"checksum rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc" +"checksum rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7b75f676a1e053fc562eafbb47838d67c84801e38fc1ba459e8f180deabd5071" "checksum rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2" -"checksum redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)" = "423e376fffca3dfa06c9e9790a9ccd282fafb3cc6e6397d01dbf64f9bacc6b85" +"checksum redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)" = "2439c63f3f6139d1b57529d16bc3b8bb855230c8efcc5d3a896c8bea7c3b1e84" "checksum redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7e891cfe48e9100a70a3b6eb652fef28920c117d366339687bd5576160db0f76" -"checksum redox_users 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "214a97e49be64fd2c86f568dd0cb2c757d2cc53de95b273b6ad0a1c908482f26" -"checksum rustc-demangle 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "adacaae16d02b6ec37fdc7acfcddf365978de76d1983d3ee22afc260e1ca9619" -"checksum scoped_threadpool 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "1d51f5df5af43ab3f1360b429fa5e0152ac5ce8c0bd6485cae490332e96846a8" -"checksum strsim 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bb4f380125926a99e52bc279241539c018323fab05ad6368b56f93d9369ff550" -"checksum syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)" = "f92e629aa1d9c827b2bb8297046c1ccffc57c99b947a680d3ccff1f136a3bee9" -"checksum synstructure 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "73687139bf99285483c96ac0add482c3776528beac1d97d444f6e91f203a2015" +"checksum redox_users 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4ecedbca3bf205f8d8f5c2b44d83cd0690e39ee84b951ed649e9f1841132b66d" +"checksum rust-argon2 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "81ed8d04228b44a740c8d46ff872a28e50fff3d659f307ab4da2cc502e019ff3" +"checksum rustc-demangle 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)" = "a7f4dccf6f4891ebcc0c39f9b6eb1a83b9bf5d747cb439ec6fba4f3b977038af" +"checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" +"checksum scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "94258f53601af11e6a49f722422f6e3425c52b06245a5cf9bc09908b174f5e27" +"checksum scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b42e15e59b18a828bbf5c58ea01debb36b9b096346de35d941dcb89009f24a0d" +"checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" +"checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" +"checksum smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)" = "ab606a9c5e214920bb66c458cd7be8ef094f813f20fe77a54cc7dbfff220d4b7" +"checksum stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dba1a27d3efae4351c8051072d619e3ade2820635c3958d826bfea39d59b54c8" +"checksum strsim 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" +"checksum syn 0.15.43 (registry+https://github.com/rust-lang/crates.io-index)" = "ee06ea4b620ab59a2267c6b48be16244a3389f8bfa0986bdd15c35b890b00af3" +"checksum synstructure 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)" = "02353edf96d6e4dc81aea2d8490a7e9db177bf8acb0e951c24940bf866cb313f" "checksum termion 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6a8fb22f7cde82c8220e5aeacb3258ed7ce996142c77cba193f203515e26c330" -"checksum textwrap 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c0b59b6b4b44d867f1370ef1bd91bfb262bf07bf0ae65c202ea2fbc16153b693" +"checksum textwrap 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" "checksum unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "882386231c45df4700b275c7ff55b6f3698780a650026380e72dabe76fa46526" "checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" "checksum vec_map 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "05c78687fb1a80548ae3250346c3db86a80a7cdd77bda190189f2d0a0987c81a" -"checksum winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "92c1eb33641e276cfa214a0522acad57be5c56b10cb348b3c5117db75f3ac4b0" +"checksum winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)" = "f10e386af2b13e47c89e7236a7a14a086791a2b88ebad6df9bf42040195cf770" "checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" "checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" diff --git a/Cargo.toml b/Cargo.toml index 7c0562f657..f878c2829f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -51,13 +51,13 @@ name = "usermod" path = "src/bin/usermod.rs" [dependencies] -clap = "~2.29.4" +clap = "2.33.0" extra = { git = "https://gitlab.redox-os.org/redox-os/libextra.git" } -liner = "0.1" -redox_syscall = "0.1" -redox_termios = "0.1" -redox_users = "0.2" -termion = "1.5.1" +liner = "0.4.4" +redox_syscall = "0.1.56" +redox_termios = "0.1.1" +redox_users = "0.3.1" +termion = "1.5.3" [profile.release] lto = true diff --git a/src/bin/groupadd.rs b/src/bin/groupadd.rs index f7e787081c..e4feabc40d 100644 --- a/src/bin/groupadd.rs +++ b/src/bin/groupadd.rs @@ -9,7 +9,7 @@ use extra::option::OptionalExt; use std::process::exit; -use redox_users::{AllGroups, UsersError}; +use redox_users::{All, AllGroups, Config, UsersError}; const _MAN_PAGE: &'static str = /* @MANSTART{groupadd} */ r#" NAME @@ -49,8 +49,8 @@ fn main() { (@arg FORCE: -f --force "Force the status of the program to be 0 even if the group exists") (@arg GID: -g --gid +takes_value "Group id. Positive integer and must not be in use") ).get_matches(); - - let mut sys_groups = AllGroups::new().unwrap_or_exit(1); + + let mut sys_groups = AllGroups::new(Config::default()).unwrap_or_exit(1); let groupname = args.value_of("GROUP").unwrap(); diff --git a/src/bin/groupdel.rs b/src/bin/groupdel.rs index 9c3e5953f1..440b9d9ae9 100644 --- a/src/bin/groupdel.rs +++ b/src/bin/groupdel.rs @@ -6,7 +6,7 @@ extern crate extra; extern crate redox_users; use extra::option::OptionalExt; -use redox_users::AllGroups; +use redox_users::{All, AllGroups, Config}; const _MAN_PAGE: &'static str = /* @MANSTART{groupdel} */ r#" NAME @@ -38,12 +38,12 @@ fn main() { (about: "Removes a group from the system using redox_users") (@arg GROUP: +required "Removes group GROUP") ).get_matches(); - + let group = matches.value_of("GROUP").unwrap(); - - let mut sys_groups = AllGroups::new().unwrap_or_exit(1); - - sys_groups.remove_by_name(group.to_string()).unwrap_or_exit(1); - + + let mut sys_groups = AllGroups::new(Config::default()).unwrap_or_exit(1); + + sys_groups.remove_by_name(group.to_string()); + sys_groups.save().unwrap_or_exit(1); } diff --git a/src/bin/groupmod.rs b/src/bin/groupmod.rs index 4909372d46..05b166386d 100644 --- a/src/bin/groupmod.rs +++ b/src/bin/groupmod.rs @@ -8,7 +8,7 @@ extern crate redox_users; use std::process::exit; use extra::option::OptionalExt; -use redox_users::{AllGroups, AllUsers}; +use redox_users::{All, AllGroups, AllUsers, Config}; const _MAN_PAGE: &'static str = /* @MANSTART{groupmod} */ r#" NAME @@ -29,12 +29,12 @@ OPTIONS -g, --gid GID Change GROUP's group id. GID must be a non-negative decimal integer. - + Files with GROUP's old gid will not be updated. - + User's who use the old gid as their primary gid will be updated. - + -n, --name NAME The name of the group will be set to NAME @@ -50,10 +50,10 @@ fn main() { (@arg GID: -g --gid +takes_value "Change GROUP's group id. See man page for details") (@arg NAME: -n --name +takes_value "Change GROUP's name") ).get_matches(); - + let groupname = args.value_of("GROUP").unwrap(); - - let mut sys_groups = AllGroups::new().unwrap_or_exit(1); + + let mut sys_groups = AllGroups::new(Config::default()).unwrap_or_exit(1); { let group = sys_groups .get_mut_by_name(groupname) @@ -61,11 +61,11 @@ fn main() { eprintln!("groupmod: group not found: {}", groupname); exit(1); }); - + if let Some(gid) = args.value_of("GID") { let gid = gid.parse::().unwrap_or_exit(1); // Update users - let mut sys_users = AllUsers::new(false).unwrap_or_exit(1); + let mut sys_users = AllUsers::new(Config::default()).unwrap_or_exit(1); for user in sys_users.iter_mut() { if user.gid == group.gid { user.gid = gid; @@ -74,11 +74,11 @@ fn main() { sys_users.save().unwrap_or_exit(1); group.gid = gid; } - + if let Some(name) = args.value_of("NAME") { group.group = name.to_string(); } } - + sys_groups.save().unwrap_or_exit(1); } diff --git a/src/bin/id.rs b/src/bin/id.rs index 6190885f9b..731418e26b 100644 --- a/src/bin/id.rs +++ b/src/bin/id.rs @@ -9,7 +9,7 @@ use std::env::args; use std::process::exit; use extra::option::OptionalExt; -use redox_users::{get_egid, get_gid, get_euid, get_uid, AllUsers, AllGroups}; +use redox_users::{get_egid, get_gid, get_euid, get_uid, All, AllUsers, AllGroups, Config}; const _MAN_PAGE: &'static str = /* @MANSTART{id} */ r#" NAME @@ -68,7 +68,7 @@ pub fn main() { (@arg REAL: -r --real requires[selector] "Display real id's instead of effective ids (use with -g and -u)") ) ); - + let args = match &*args().nth(0).unwrap_or(String::new()) { "whoami" => app.get_matches_from(["id", "-un"].iter()), _ => app.get_matches() @@ -93,8 +93,8 @@ pub fn main() { } else { get_euid() }.unwrap_or_exit(1); - - let users = AllUsers::new(false).unwrap_or_exit(1); + + let users = AllUsers::new(Config::default()).unwrap_or_exit(1); let user = users.get_by_id(uid).unwrap_or_exit(1); println!("{}", user.user); @@ -125,8 +125,8 @@ pub fn main() { } else { get_egid() }.unwrap_or_exit(1); - - let groups = AllGroups::new().unwrap_or_exit(1); + + let groups = AllGroups::new(Config::default()).unwrap_or_exit(1); let group = groups.get_by_id(gid).unwrap_or_exit(1); println!("{}", group.group); @@ -152,10 +152,10 @@ pub fn main() { // We get everything we can and show let euid = get_euid().unwrap_or_exit(1); let egid = get_egid().unwrap_or_exit(1); - - let users = AllUsers::new(false).unwrap_or_exit(1); - let groups = AllGroups::new().unwrap_or_exit(1); - + + let users = AllUsers::new(Config::default()).unwrap_or_exit(1); + let groups = AllGroups::new(Config::default()).unwrap_or_exit(1); + let user = users.get_by_id(euid).unwrap_or_exit(1); let group = groups.get_by_id(egid).unwrap_or_exit(1); diff --git a/src/bin/login.rs b/src/bin/login.rs index b7f73122fe..837217c24f 100644 --- a/src/bin/login.rs +++ b/src/bin/login.rs @@ -14,7 +14,7 @@ use std::str; use extra::option::OptionalExt; use termion::input::TermRead; -use redox_users::{AllUsers}; +use redox_users::{All, AllUsers, Config}; use userutils::spawn_shell; const _MAN_PAGE: &'static str = /* @MANSTART{login} */ r#" @@ -61,7 +61,7 @@ pub fn main() { if !user.is_empty() { let stdin = io::stdin(); let mut stdin = stdin.lock(); - let sys_users = AllUsers::new(true).unwrap_or_exit(1); + let sys_users = AllUsers::new(Config::with_auth()).unwrap_or_exit(1); match sys_users.get_by_name(user) { None => { diff --git a/src/bin/passwd.rs b/src/bin/passwd.rs index bf659e325b..7f82ca0ca6 100644 --- a/src/bin/passwd.rs +++ b/src/bin/passwd.rs @@ -12,7 +12,7 @@ use std::process::exit; use extra::option::OptionalExt; use termion::input::TermRead; -use redox_users::{get_uid, AllUsers}; +use redox_users::{get_uid, All, AllUsers, Config}; const _MAN_PAGE: &'static str = /* @MANSTART{passwd} */ r#" NAME @@ -35,7 +35,7 @@ OPTIONS -l, --lock Lock the password of the named account. This changes the stored password hash so that it matches no encrypted value ("!") - + Users with locked passwords are not allowed to change their password. AUTHOR @@ -57,8 +57,8 @@ fn main() { ).get_matches(); let uid = get_uid().unwrap_or_exit(1); - let mut users = AllUsers::new(true).unwrap_or_exit(1); - + let mut users = AllUsers::new(Config::with_auth()).unwrap_or_exit(1); + { let user = match args.value_of("LOGIN") { Some(login) => users.get_mut_by_name(login).unwrap_or_else(|| { @@ -70,7 +70,7 @@ fn main() { exit(1); }) }; - + if args.is_present("LOCK") { user.unset_passwd(); } else if user.uid == uid || uid == 0 { diff --git a/src/bin/su.rs b/src/bin/su.rs index aac7fafa61..18d223248b 100644 --- a/src/bin/su.rs +++ b/src/bin/su.rs @@ -13,7 +13,7 @@ use std::str; use extra::option::OptionalExt; use termion::input::TermRead; -use redox_users::{get_uid, AllUsers}; +use redox_users::{get_uid, All, AllUsers, Config}; use userutils::spawn_shell; const _MAN_PAGE: &'static str = /* @MANSTART{su} */ r#" @@ -55,8 +55,8 @@ pub fn main() { .unwrap_or("root"); let uid = get_uid().unwrap_or_exit(1); - - let users = AllUsers::new(true).unwrap_or_exit(1); + + let users = AllUsers::new(Config::with_auth()).unwrap_or_exit(1); let user = users.get_by_name(&target_user).unwrap_or_exit(1); // If the user executing su is root, then they can do anything without a password. diff --git a/src/bin/sudo.rs b/src/bin/sudo.rs index f0301f3ec9..1186fed990 100644 --- a/src/bin/sudo.rs +++ b/src/bin/sudo.rs @@ -12,7 +12,7 @@ use std::process::{Command, exit}; use extra::option::OptionalExt; use termion::input::TermRead; -use redox_users::{get_uid, AllUsers, AllGroups}; +use redox_users::{get_uid, All, AllUsers, AllGroups, Config}; const MAX_ATTEMPTS: u16 = 3; const _MAN_PAGE: &'static str = /* @MANSTART{sudo} */ r#" @@ -47,10 +47,10 @@ pub fn main() { eprintln!("sudo: no command provided"); exit(1); }); - - let users = AllUsers::new(true).unwrap_or_exit(1); - let groups = AllGroups::new().unwrap_or_exit(1); - + + let users = AllUsers::new(Config::with_auth()).unwrap_or_exit(1); + let groups = AllGroups::new(Config::default()).unwrap_or_exit(1); + let uid = get_uid().unwrap_or_exit(1); let user = users.get_by_id(uid).unwrap_or_exit(1); diff --git a/src/bin/useradd.rs b/src/bin/useradd.rs index 83691c7fc1..53e80bd9f9 100644 --- a/src/bin/useradd.rs +++ b/src/bin/useradd.rs @@ -10,7 +10,7 @@ extern crate userutils; use std::process::exit; use extra::option::OptionalExt; -use redox_users::{AllGroups, AllUsers}; +use redox_users::{All, AllGroups, AllUsers, Config}; use userutils::create_user_dir; const _MAN_PAGE: &'static str = /* @MANSTART{useradd} */ r#" @@ -52,7 +52,7 @@ OPTIONS -m, --create-home Creates the user's home directory if it does not already exist. - + This option is not enabled by default. This option must be specified for a home directory to be created. If not set, the user's home dir is set to "/" @@ -112,13 +112,13 @@ fn main() { +takes_value "Set LOGIN's user id. Positive ineger and must not be in use.") ).get_matches(); - + // unwrap is safe because of "+required". clap-rs is cool... let login = args.value_of("LOGIN").unwrap(); - - let mut sys_users = AllUsers::new(true).unwrap_or_exit(1); - let mut sys_groups = AllGroups::new().unwrap_or_exit(1); - + + let mut sys_users = AllUsers::new(Config::with_auth()).unwrap_or_exit(1); + let mut sys_groups = AllGroups::new(Config::default()).unwrap_or_exit(1); + let uid = match args.value_of("UID") { Some(uid) => { let id = uid.parse::().unwrap_or_exit(1); @@ -135,7 +135,7 @@ fn main() { exit(1); }) }; - + let gid = if args.is_present("NO_USER_GROUP") { let nobody = sys_groups .get_mut_by_name(DEFAULT_NO_GROUP) @@ -170,11 +170,11 @@ fn main() { }); id }; - + let gecos = args .value_of("COMMENT") .unwrap_or(login); - + //Ugly way to satisfy the borrow checker... let mut sys_homes = String::from(DEFAULT_HOME); let userhome = args @@ -188,24 +188,24 @@ fn main() { "/" } }); - + let shell = args .value_of("SHELL") .unwrap_or(DEFAULT_SHELL); - + sys_users .add_user(login, uid, gid, gecos, userhome, shell) .unwrap_or_else(|err| { eprintln!("useradd: {}: {}", err, login); exit(1); }); - + // Make sure to try and create the user/groups before we create // their home, that way we get a permissions error that makes // more sense sys_groups.save().unwrap_or_exit(1); sys_users.save().unwrap_or_exit(1); - + if args.is_present("CREATE_HOME") { //Shouldn't ever error... let user = sys_users.get_by_id(uid).unwrap_or_exit(1); diff --git a/src/bin/userdel.rs b/src/bin/userdel.rs index 13ec774d2c..6c89785398 100644 --- a/src/bin/userdel.rs +++ b/src/bin/userdel.rs @@ -10,7 +10,7 @@ use std::fs::remove_dir; use std::process::exit; use extra::option::OptionalExt; -use redox_users::{AllGroups, AllUsers}; +use redox_users::{All, AllGroups, AllUsers, Config}; use userutils::AllGroupsExt; const _MAN_PAGE: &'static str = /* @MANSTART{userdel} */ r#" @@ -25,7 +25,7 @@ DESCRIPTION userdel removes users from whatever backend is employed by the system's redox_users. The utility removes the user from all groups of which they are a member. - + It can also be used to manage removal of home directories. OPTIONS @@ -47,14 +47,14 @@ fn main() { (@arg LOGIN: +required "Remove user LOGIN") (@arg REMOVE: -r --remove "Remove the user's home and all files and directories inside") ).get_matches(); - + let login = args.value_of("LOGIN").unwrap(); - - let mut sys_users = AllUsers::new(true).unwrap_or_exit(1); - let mut sys_groups = AllGroups::new().unwrap_or_exit(1); + + let mut sys_users = AllUsers::new(Config::with_auth()).unwrap_or_exit(1); + let mut sys_groups = AllGroups::new(Config::default()).unwrap_or_exit(1); { sys_groups.remove_user_from_all_groups(login); - + if args.is_present("REMOVE") { let user = sys_users.get_by_name(login).unwrap_or_else(|| { eprintln!("userdel: user does not exist: {}", login); @@ -63,9 +63,9 @@ fn main() { remove_dir(&user.home).unwrap_or_exit(1); } } - - sys_users.remove_by_name(login.to_string()).unwrap_or_exit(1); - + + sys_users.remove_by_name(login.to_string()); + sys_groups.save().unwrap_or_exit(1); sys_users.save().unwrap_or_exit(1); } diff --git a/src/bin/usermod.rs b/src/bin/usermod.rs index 947d166df7..ed7c02bd6a 100644 --- a/src/bin/usermod.rs +++ b/src/bin/usermod.rs @@ -10,7 +10,7 @@ use std::fs::{remove_dir, rename}; use std::process::exit; use extra::option::OptionalExt; -use redox_users::{AllGroups, AllUsers}; +use redox_users::{All, AllGroups, AllUsers, Config}; use userutils::{create_user_dir, AllGroupsExt}; const _MAN_PAGE: &'static str = /* @MANSTART{usermod} */ r#" @@ -117,26 +117,26 @@ fn main() { +takes_value "Set LOGIN's user id. See man page for details") ).get_matches(); - + let login = args.value_of("LOGIN").unwrap(); - + //TODO: Does not always need shadowfile access - let mut sys_users = AllUsers::new(true).unwrap_or_exit(1); + let mut sys_users = AllUsers::new(Config::with_auth()).unwrap_or_exit(1); let mut sys_groups; - + if let Some(new_groups) = args.value_of("SET_GROUPS") { - sys_groups = AllGroups::new().unwrap_or_exit(1); + sys_groups = AllGroups::new(Config::default()).unwrap_or_exit(1); sys_groups.remove_user_from_all_groups(login); sys_groups.add_user_to_groups(login, new_groups.split(',').collect()).unwrap_or_exit(1); sys_groups.save().unwrap_or_exit(1); } - + if let Some(new_groups) = args.value_of("APPEND_GROUPS") { - sys_groups = AllGroups::new().unwrap_or_exit(1); + sys_groups = AllGroups::new(Config::default()).unwrap_or_exit(1); sys_groups.add_user_to_groups(login, new_groups.split(',').collect()).unwrap_or_exit(1); sys_groups.save().unwrap_or_exit(1); } - + let uid = args .value_of("UID") .map(|uid| { @@ -147,25 +147,25 @@ fn main() { } uid }); - + { let user = sys_users.get_mut_by_name(&login).unwrap_or_else(|| { eprintln!("usermod: user \"{}\" not found", login); exit(1); }); - + if let Some(gecos) = args.value_of("COMMENT") { user.name = gecos.to_string(); } - + if let Some(new_login) = args.value_of("NEW_LOGIN") { user.user = new_login.to_string(); } - + if let Some(shell) = args.value_of("SHELL") { user.shell = shell.to_string(); } - + if let Some(home) = args.value_of("HOME_DIR") { if args.is_present("MOVE_HOME") { rename(&user.home, &home).unwrap_or_exit(1); @@ -175,15 +175,15 @@ fn main() { } user.home = home.to_string(); } - + if let Some(uid) = uid { user.uid = uid; } - + if let Some(gid) = args.value_of("GID") { - sys_groups = AllGroups::new().unwrap_or_exit(1); + sys_groups = AllGroups::new(Config::default()).unwrap_or_exit(1); let gid = gid.parse::().unwrap_or_exit(1); - + if let Some(_group) = sys_groups.get_by_id(gid) { user.gid = gid; } else { @@ -192,6 +192,6 @@ fn main() { } } } - + sys_users.save().unwrap_or_exit(1); } diff --git a/src/lib.rs b/src/lib.rs index 344b723a17..50b637e383 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -21,7 +21,7 @@ extern crate syscall; use std::io::Result as IoResult; -use redox_users::{AllGroups, Result, User, UsersError}; +use redox_users::{All, AllGroups, Result, User, UsersError}; use syscall::call::{open, fchmod, fchown}; use syscall::error::Result as SysResult; use syscall::flag::{O_CREAT, O_DIRECTORY, O_CLOEXEC}; @@ -47,7 +47,7 @@ impl AllGroupsExt for AllGroups { } Ok(()) } - + /// Remove a user from all groups of which they are a member fn remove_user_from_all_groups(&mut self, login: &str) { for group in self.iter_mut() {