diff --git a/implementors/core/clone/trait.Clone.js b/implementors/core/clone/trait.Clone.js
index 82aef4873..a5d3f7999 100644
--- a/implementors/core/clone/trait.Clone.js
+++ b/implementors/core/clone/trait.Clone.js
@@ -7,5 +7,5 @@ implementors["uu_ln"] = [{"text":"impl Clone for OverwriteMode","synthetic":false,"types":["uu_mv::OverwriteMode"]}];
implementors["uu_numfmt"] = [{"text":"impl Clone for RoundMethod","synthetic":false,"types":["uu_numfmt::options::RoundMethod"]}];
implementors["uu_sort"] = [{"text":"impl Clone for GlobalSettings","synthetic":false,"types":["uu_sort::GlobalSettings"]},{"text":"impl<'a> Clone for Line<'a>","synthetic":false,"types":["uu_sort::Line"]},{"text":"impl Clone for GeneralF64ParseResult","synthetic":false,"types":["uu_sort::GeneralF64ParseResult"]}];
-implementors["uucore"] = [{"text":"impl Clone for Format","synthetic":false,"types":["uucore::features::encoding::Format"]},{"text":"impl Clone for MissingHandling","synthetic":false,"types":["uucore::features::fs::MissingHandling"]},{"text":"impl Clone for ResolveMode","synthetic":false,"types":["uucore::features::fs::ResolveMode"]},{"text":"impl Clone for MountInfo","synthetic":false,"types":["uucore::features::fsext::MountInfo"]},{"text":"impl Clone for FsUsage","synthetic":false,"types":["uucore::features::fsext::FsUsage"]},{"text":"impl Clone for Passwd","synthetic":false,"types":["uucore::features::entries::Passwd"]},{"text":"impl Clone for VerbosityLevel","synthetic":false,"types":["uucore::features::perms::VerbosityLevel"]},{"text":"impl Clone for Verbosity","synthetic":false,"types":["uucore::features::perms::Verbosity"]},{"text":"impl Clone for ExitStatus","synthetic":false,"types":["uucore::features::process::ExitStatus"]},{"text":"impl Clone for BackupMode","synthetic":false,"types":["uucore::mods::backup_control::BackupMode"]}];
+implementors["uucore"] = [{"text":"impl Clone for Format","synthetic":false,"types":["uucore::features::encoding::Format"]},{"text":"impl Clone for MissingHandling","synthetic":false,"types":["uucore::features::fs::MissingHandling"]},{"text":"impl Clone for ResolveMode","synthetic":false,"types":["uucore::features::fs::ResolveMode"]},{"text":"impl Clone for MountInfo","synthetic":false,"types":["uucore::features::fsext::MountInfo"]},{"text":"impl Clone for FsUsage","synthetic":false,"types":["uucore::features::fsext::FsUsage"]},{"text":"impl Clone for Passwd","synthetic":false,"types":["uucore::features::entries::Passwd"]},{"text":"impl Clone for VerbosityLevel","synthetic":false,"types":["uucore::features::perms::VerbosityLevel"]},{"text":"impl Clone for Verbosity","synthetic":false,"types":["uucore::features::perms::Verbosity"]},{"text":"impl Clone for ExitStatus","synthetic":false,"types":["uucore::features::process::ExitStatus"]},{"text":"impl Clone for BackupMode","synthetic":false,"types":["uucore::mods::backup_control::BackupMode"]},{"text":"impl<'a> Clone for Quoted<'a>","synthetic":false,"types":["uucore::mods::display::Quoted"]}];
if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/implementors/core/fmt/trait.Debug.js b/implementors/core/fmt/trait.Debug.js
index c07f186cd..173b8810f 100644
--- a/implementors/core/fmt/trait.Debug.js
+++ b/implementors/core/fmt/trait.Debug.js
@@ -5,5 +5,5 @@ implementors["uu_factor"] = [{"text":"impl Debug for OverwriteMode","synthetic":false,"types":["uu_ln::OverwriteMode"]}];
implementors["uu_sort"] = [{"text":"impl<'a> Debug for Line<'a>","synthetic":false,"types":["uu_sort::Line"]},{"text":"impl Debug for GeneralF64ParseResult","synthetic":false,"types":["uu_sort::GeneralF64ParseResult"]}];
implementors["uu_stat"] = [{"text":"impl Debug for OutputType","synthetic":false,"types":["uu_stat::OutputType"]},{"text":"impl Debug for Token","synthetic":false,"types":["uu_stat::Token"]}];
-implementors["uucore"] = [{"text":"impl Debug for DecodeError","synthetic":false,"types":["uucore::features::encoding::DecodeError"]},{"text":"impl Debug for MissingHandling","synthetic":false,"types":["uucore::features::fs::MissingHandling"]},{"text":"impl Debug for ResolveMode","synthetic":false,"types":["uucore::features::fs::ResolveMode"]},{"text":"impl Debug for MountInfo","synthetic":false,"types":["uucore::features::fsext::MountInfo"]},{"text":"impl Debug for FsUsage","synthetic":false,"types":["uucore::features::fsext::FsUsage"]},{"text":"impl Debug for VerbosityLevel","synthetic":false,"types":["uucore::features::perms::VerbosityLevel"]},{"text":"impl Debug for Verbosity","synthetic":false,"types":["uucore::features::perms::Verbosity"]},{"text":"impl Debug for ExitStatus","synthetic":false,"types":["uucore::features::process::ExitStatus"]},{"text":"impl Debug for BackupMode","synthetic":false,"types":["uucore::mods::backup_control::BackupMode"]},{"text":"impl Debug for BackupError","synthetic":false,"types":["uucore::mods::backup_control::BackupError"]},{"text":"impl Debug for USimpleError","synthetic":false,"types":["uucore::mods::error::USimpleError"]},{"text":"impl Debug for UUsageError","synthetic":false,"types":["uucore::mods::error::UUsageError"]},{"text":"impl Debug for UIoError","synthetic":false,"types":["uucore::mods::error::UIoError"]},{"text":"impl Debug for ExitCode","synthetic":false,"types":["uucore::mods::error::ExitCode"]},{"text":"impl Debug for Range","synthetic":false,"types":["uucore::mods::ranges::Range"]},{"text":"impl Debug for ParseSizeError","synthetic":false,"types":["uucore::parser::parse_size::ParseSizeError"]}];
+implementors["uucore"] = [{"text":"impl Debug for DecodeError","synthetic":false,"types":["uucore::features::encoding::DecodeError"]},{"text":"impl Debug for MissingHandling","synthetic":false,"types":["uucore::features::fs::MissingHandling"]},{"text":"impl Debug for ResolveMode","synthetic":false,"types":["uucore::features::fs::ResolveMode"]},{"text":"impl Debug for MountInfo","synthetic":false,"types":["uucore::features::fsext::MountInfo"]},{"text":"impl Debug for FsUsage","synthetic":false,"types":["uucore::features::fsext::FsUsage"]},{"text":"impl Debug for VerbosityLevel","synthetic":false,"types":["uucore::features::perms::VerbosityLevel"]},{"text":"impl Debug for Verbosity","synthetic":false,"types":["uucore::features::perms::Verbosity"]},{"text":"impl Debug for ExitStatus","synthetic":false,"types":["uucore::features::process::ExitStatus"]},{"text":"impl Debug for BackupMode","synthetic":false,"types":["uucore::mods::backup_control::BackupMode"]},{"text":"impl Debug for BackupError","synthetic":false,"types":["uucore::mods::backup_control::BackupError"]},{"text":"impl<'a> Debug for Quoted<'a>","synthetic":false,"types":["uucore::mods::display::Quoted"]},{"text":"impl Debug for USimpleError","synthetic":false,"types":["uucore::mods::error::USimpleError"]},{"text":"impl Debug for UUsageError","synthetic":false,"types":["uucore::mods::error::UUsageError"]},{"text":"impl Debug for UIoError","synthetic":false,"types":["uucore::mods::error::UIoError"]},{"text":"impl Debug for ExitCode","synthetic":false,"types":["uucore::mods::error::ExitCode"]},{"text":"impl Debug for Range","synthetic":false,"types":["uucore::mods::ranges::Range"]},{"text":"impl Debug for ParseSizeError","synthetic":false,"types":["uucore::parser::parse_size::ParseSizeError"]}];
if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/implementors/core/fmt/trait.Display.js b/implementors/core/fmt/trait.Display.js
index 9c921a8e5..8066248af 100644
--- a/implementors/core/fmt/trait.Display.js
+++ b/implementors/core/fmt/trait.Display.js
@@ -1,5 +1,5 @@
(function() {var implementors = {};
implementors["uu_cp"] = [{"text":"impl Display for Error","synthetic":false,"types":["uu_cp::Error"]}];
implementors["uu_factor"] = [{"text":"impl Display for Factors","synthetic":false,"types":["uu_factor::factor::Factors"]}];
-implementors["uucore"] = [{"text":"impl Display for DecodeError","synthetic":false,"types":["uucore::features::encoding::DecodeError"]},{"text":"impl Display for ExitStatus","synthetic":false,"types":["uucore::features::process::ExitStatus"]},{"text":"impl Display for BackupError","synthetic":false,"types":["uucore::mods::backup_control::BackupError"]},{"text":"impl Display for USimpleError","synthetic":false,"types":["uucore::mods::error::USimpleError"]},{"text":"impl Display for UUsageError","synthetic":false,"types":["uucore::mods::error::UUsageError"]},{"text":"impl Display for UIoError","synthetic":false,"types":["uucore::mods::error::UIoError"]},{"text":"impl Display for ExitCode","synthetic":false,"types":["uucore::mods::error::ExitCode"]},{"text":"impl Display for ParseSizeError","synthetic":false,"types":["uucore::parser::parse_size::ParseSizeError"]}];
+implementors["uucore"] = [{"text":"impl Display for DecodeError","synthetic":false,"types":["uucore::features::encoding::DecodeError"]},{"text":"impl Display for ExitStatus","synthetic":false,"types":["uucore::features::process::ExitStatus"]},{"text":"impl Display for BackupError","synthetic":false,"types":["uucore::mods::backup_control::BackupError"]},{"text":"impl Display for Quoted<'_>","synthetic":false,"types":["uucore::mods::display::Quoted"]},{"text":"impl Display for USimpleError","synthetic":false,"types":["uucore::mods::error::USimpleError"]},{"text":"impl Display for UUsageError","synthetic":false,"types":["uucore::mods::error::UUsageError"]},{"text":"impl Display for UIoError","synthetic":false,"types":["uucore::mods::error::UIoError"]},{"text":"impl Display for ExitCode","synthetic":false,"types":["uucore::mods::error::ExitCode"]},{"text":"impl Display for ParseSizeError","synthetic":false,"types":["uucore::parser::parse_size::ParseSizeError"]}];
if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/implementors/core/marker/trait.Copy.js b/implementors/core/marker/trait.Copy.js
index 2862ee525..19c63e96c 100644
--- a/implementors/core/marker/trait.Copy.js
+++ b/implementors/core/marker/trait.Copy.js
@@ -3,5 +3,5 @@ implementors["uu_cp"] = [{"text":"impl Copy for Mode","synthetic":false,"types":["uu_kill::Mode"]}];
implementors["uu_numfmt"] = [{"text":"impl Copy for RoundMethod","synthetic":false,"types":["uu_numfmt::options::RoundMethod"]}];
implementors["uu_sort"] = [{"text":"impl Copy for GeneralF64ParseResult","synthetic":false,"types":["uu_sort::GeneralF64ParseResult"]}];
-implementors["uucore"] = [{"text":"impl Copy for Format","synthetic":false,"types":["uucore::features::encoding::Format"]},{"text":"impl Copy for MissingHandling","synthetic":false,"types":["uucore::features::fs::MissingHandling"]},{"text":"impl Copy for ResolveMode","synthetic":false,"types":["uucore::features::fs::ResolveMode"]},{"text":"impl Copy for Passwd","synthetic":false,"types":["uucore::features::entries::Passwd"]},{"text":"impl Copy for ExitStatus","synthetic":false,"types":["uucore::features::process::ExitStatus"]},{"text":"impl Copy for BackupMode","synthetic":false,"types":["uucore::mods::backup_control::BackupMode"]}];
+implementors["uucore"] = [{"text":"impl Copy for Format","synthetic":false,"types":["uucore::features::encoding::Format"]},{"text":"impl Copy for MissingHandling","synthetic":false,"types":["uucore::features::fs::MissingHandling"]},{"text":"impl Copy for ResolveMode","synthetic":false,"types":["uucore::features::fs::ResolveMode"]},{"text":"impl Copy for Passwd","synthetic":false,"types":["uucore::features::entries::Passwd"]},{"text":"impl Copy for ExitStatus","synthetic":false,"types":["uucore::features::process::ExitStatus"]},{"text":"impl Copy for BackupMode","synthetic":false,"types":["uucore::mods::backup_control::BackupMode"]},{"text":"impl<'a> Copy for Quoted<'a>","synthetic":false,"types":["uucore::mods::display::Quoted"]}];
if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/implementors/core/marker/trait.Freeze.js b/implementors/core/marker/trait.Freeze.js
index 53c57c018..ce749b053 100644
--- a/implementors/core/marker/trait.Freeze.js
+++ b/implementors/core/marker/trait.Freeze.js
@@ -13,5 +13,5 @@ implementors["uu_nl"] = [{"text":"impl Freeze for WhitespaceSplitter<'a>","synthetic":true,"types":["uu_numfmt::format::WhitespaceSplitter"]},{"text":"impl Freeze for TransformOptions","synthetic":true,"types":["uu_numfmt::options::TransformOptions"]},{"text":"impl Freeze for NumfmtOptions","synthetic":true,"types":["uu_numfmt::options::NumfmtOptions"]},{"text":"impl Freeze for RoundMethod","synthetic":true,"types":["uu_numfmt::options::RoundMethod"]}];
implementors["uu_sort"] = [{"text":"impl Freeze for Output","synthetic":true,"types":["uu_sort::Output"]},{"text":"impl Freeze for GlobalSettings","synthetic":true,"types":["uu_sort::GlobalSettings"]},{"text":"impl<'a> Freeze for Line<'a>","synthetic":true,"types":["uu_sort::Line"]},{"text":"impl Freeze for GeneralF64ParseResult","synthetic":true,"types":["uu_sort::GeneralF64ParseResult"]}];
implementors["uu_stat"] = [{"text":"impl Freeze for OutputType","synthetic":true,"types":["uu_stat::OutputType"]},{"text":"impl Freeze for Token","synthetic":true,"types":["uu_stat::Token"]},{"text":"impl Freeze for Stater","synthetic":true,"types":["uu_stat::Stater"]}];
-implementors["uucore"] = [{"text":"impl Freeze for DecodeError","synthetic":true,"types":["uucore::features::encoding::DecodeError"]},{"text":"impl Freeze for EncodeError","synthetic":true,"types":["uucore::features::encoding::EncodeError"]},{"text":"impl Freeze for Format","synthetic":true,"types":["uucore::features::encoding::Format"]},{"text":"impl<R> Freeze for Data<R> where R: Freeze, ","synthetic":true,"types":["uucore::features::encoding::Data"]},{"text":"impl Freeze for MissingHandling","synthetic":true,"types":["uucore::features::fs::MissingHandling"]},{"text":"impl Freeze for ResolveMode","synthetic":true,"types":["uucore::features::fs::ResolveMode"]},{"text":"impl Freeze for MountInfo","synthetic":true,"types":["uucore::features::fsext::MountInfo"]},{"text":"impl Freeze for FsUsage","synthetic":true,"types":["uucore::features::fsext::FsUsage"]},{"text":"impl<T> Freeze for RingBuffer<T>","synthetic":true,"types":["uucore::features::ringbuffer::RingBuffer"]},{"text":"impl Freeze for Passwd","synthetic":true,"types":["uucore::features::entries::Passwd"]},{"text":"impl Freeze for Group","synthetic":true,"types":["uucore::features::entries::Group"]},{"text":"impl Freeze for VerbosityLevel","synthetic":true,"types":["uucore::features::perms::VerbosityLevel"]},{"text":"impl Freeze for Verbosity","synthetic":true,"types":["uucore::features::perms::Verbosity"]},{"text":"impl Freeze for IfFrom","synthetic":true,"types":["uucore::features::perms::IfFrom"]},{"text":"impl Freeze for ChownExecutor","synthetic":true,"types":["uucore::features::perms::ChownExecutor"]},{"text":"impl Freeze for ExitStatus","synthetic":true,"types":["uucore::features::process::ExitStatus"]},{"text":"impl Freeze for Utmpx","synthetic":true,"types":["uucore::features::utmpx::Utmpx"]},{"text":"impl Freeze for UtmpxIter","synthetic":true,"types":["uucore::features::utmpx::UtmpxIter"]},{"text":"impl Freeze for BackupMode","synthetic":true,"types":["uucore::mods::backup_control::BackupMode"]},{"text":"impl Freeze for BackupError","synthetic":true,"types":["uucore::mods::backup_control::BackupError"]},{"text":"impl<'a> Freeze for HelpText<'a>","synthetic":true,"types":["uucore::mods::coreopts::HelpText"]},{"text":"impl<'a> Freeze for CoreOptions<'a>","synthetic":true,"types":["uucore::mods::coreopts::CoreOptions"]},{"text":"impl Freeze for USimpleError","synthetic":true,"types":["uucore::mods::error::USimpleError"]},{"text":"impl Freeze for UUsageError","synthetic":true,"types":["uucore::mods::error::UUsageError"]},{"text":"impl Freeze for UIoError","synthetic":true,"types":["uucore::mods::error::UIoError"]},{"text":"impl Freeze for ExitCode","synthetic":true,"types":["uucore::mods::error::ExitCode"]},{"text":"impl Freeze for Range","synthetic":true,"types":["uucore::mods::ranges::Range"]},{"text":"impl Freeze for ParseSizeError","synthetic":true,"types":["uucore::parser::parse_size::ParseSizeError"]},{"text":"impl Freeze for InvalidEncodingHandling","synthetic":true,"types":["uucore::InvalidEncodingHandling"]},{"text":"impl Freeze for ConversionResult","synthetic":true,"types":["uucore::ConversionResult"]}];
+implementors["uucore"] = [{"text":"impl Freeze for DecodeError","synthetic":true,"types":["uucore::features::encoding::DecodeError"]},{"text":"impl Freeze for EncodeError","synthetic":true,"types":["uucore::features::encoding::EncodeError"]},{"text":"impl Freeze for Format","synthetic":true,"types":["uucore::features::encoding::Format"]},{"text":"impl<R> Freeze for Data<R> where R: Freeze, ","synthetic":true,"types":["uucore::features::encoding::Data"]},{"text":"impl Freeze for MissingHandling","synthetic":true,"types":["uucore::features::fs::MissingHandling"]},{"text":"impl Freeze for ResolveMode","synthetic":true,"types":["uucore::features::fs::ResolveMode"]},{"text":"impl Freeze for MountInfo","synthetic":true,"types":["uucore::features::fsext::MountInfo"]},{"text":"impl Freeze for FsUsage","synthetic":true,"types":["uucore::features::fsext::FsUsage"]},{"text":"impl<T> Freeze for RingBuffer<T>","synthetic":true,"types":["uucore::features::ringbuffer::RingBuffer"]},{"text":"impl Freeze for Passwd","synthetic":true,"types":["uucore::features::entries::Passwd"]},{"text":"impl Freeze for Group","synthetic":true,"types":["uucore::features::entries::Group"]},{"text":"impl Freeze for VerbosityLevel","synthetic":true,"types":["uucore::features::perms::VerbosityLevel"]},{"text":"impl Freeze for Verbosity","synthetic":true,"types":["uucore::features::perms::Verbosity"]},{"text":"impl Freeze for IfFrom","synthetic":true,"types":["uucore::features::perms::IfFrom"]},{"text":"impl Freeze for ChownExecutor","synthetic":true,"types":["uucore::features::perms::ChownExecutor"]},{"text":"impl Freeze for ExitStatus","synthetic":true,"types":["uucore::features::process::ExitStatus"]},{"text":"impl Freeze for Utmpx","synthetic":true,"types":["uucore::features::utmpx::Utmpx"]},{"text":"impl Freeze for UtmpxIter","synthetic":true,"types":["uucore::features::utmpx::UtmpxIter"]},{"text":"impl Freeze for BackupMode","synthetic":true,"types":["uucore::mods::backup_control::BackupMode"]},{"text":"impl Freeze for BackupError","synthetic":true,"types":["uucore::mods::backup_control::BackupError"]},{"text":"impl<'a> Freeze for HelpText<'a>","synthetic":true,"types":["uucore::mods::coreopts::HelpText"]},{"text":"impl<'a> Freeze for CoreOptions<'a>","synthetic":true,"types":["uucore::mods::coreopts::CoreOptions"]},{"text":"impl<'a> Freeze for Quoted<'a>","synthetic":true,"types":["uucore::mods::display::Quoted"]},{"text":"impl Freeze for USimpleError","synthetic":true,"types":["uucore::mods::error::USimpleError"]},{"text":"impl Freeze for UUsageError","synthetic":true,"types":["uucore::mods::error::UUsageError"]},{"text":"impl Freeze for UIoError","synthetic":true,"types":["uucore::mods::error::UIoError"]},{"text":"impl Freeze for ExitCode","synthetic":true,"types":["uucore::mods::error::ExitCode"]},{"text":"impl Freeze for Range","synthetic":true,"types":["uucore::mods::ranges::Range"]},{"text":"impl Freeze for ParseSizeError","synthetic":true,"types":["uucore::parser::parse_size::ParseSizeError"]},{"text":"impl Freeze for InvalidEncodingHandling","synthetic":true,"types":["uucore::InvalidEncodingHandling"]},{"text":"impl Freeze for ConversionResult","synthetic":true,"types":["uucore::ConversionResult"]}];
if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/implementors/core/marker/trait.Send.js b/implementors/core/marker/trait.Send.js
index 493288b46..3d6f0faa9 100644
--- a/implementors/core/marker/trait.Send.js
+++ b/implementors/core/marker/trait.Send.js
@@ -13,5 +13,5 @@ implementors["uu_nl"] = [{"text":"impl Send for WhitespaceSplitter<'a>","synthetic":true,"types":["uu_numfmt::format::WhitespaceSplitter"]},{"text":"impl Send for TransformOptions","synthetic":true,"types":["uu_numfmt::options::TransformOptions"]},{"text":"impl Send for NumfmtOptions","synthetic":true,"types":["uu_numfmt::options::NumfmtOptions"]},{"text":"impl Send for RoundMethod","synthetic":true,"types":["uu_numfmt::options::RoundMethod"]}];
implementors["uu_sort"] = [{"text":"impl Send for Output","synthetic":true,"types":["uu_sort::Output"]},{"text":"impl Send for GlobalSettings","synthetic":true,"types":["uu_sort::GlobalSettings"]},{"text":"impl<'a> Send for Line<'a>","synthetic":true,"types":["uu_sort::Line"]},{"text":"impl Send for GeneralF64ParseResult","synthetic":true,"types":["uu_sort::GeneralF64ParseResult"]}];
implementors["uu_stat"] = [{"text":"impl Send for OutputType","synthetic":true,"types":["uu_stat::OutputType"]},{"text":"impl Send for Token","synthetic":true,"types":["uu_stat::Token"]},{"text":"impl Send for Stater","synthetic":true,"types":["uu_stat::Stater"]}];
-implementors["uucore"] = [{"text":"impl Send for DecodeError","synthetic":true,"types":["uucore::features::encoding::DecodeError"]},{"text":"impl Send for EncodeError","synthetic":true,"types":["uucore::features::encoding::EncodeError"]},{"text":"impl Send for Format","synthetic":true,"types":["uucore::features::encoding::Format"]},{"text":"impl<R> Send for Data<R> where R: Send, ","synthetic":true,"types":["uucore::features::encoding::Data"]},{"text":"impl Send for MissingHandling","synthetic":true,"types":["uucore::features::fs::MissingHandling"]},{"text":"impl Send for ResolveMode","synthetic":true,"types":["uucore::features::fs::ResolveMode"]},{"text":"impl Send for MountInfo","synthetic":true,"types":["uucore::features::fsext::MountInfo"]},{"text":"impl Send for FsUsage","synthetic":true,"types":["uucore::features::fsext::FsUsage"]},{"text":"impl<T> Send for RingBuffer<T> where T: Send, ","synthetic":true,"types":["uucore::features::ringbuffer::RingBuffer"]},{"text":"impl !Send for Passwd","synthetic":true,"types":["uucore::features::entries::Passwd"]},{"text":"impl !Send for Group","synthetic":true,"types":["uucore::features::entries::Group"]},{"text":"impl Send for VerbosityLevel","synthetic":true,"types":["uucore::features::perms::VerbosityLevel"]},{"text":"impl Send for Verbosity","synthetic":true,"types":["uucore::features::perms::Verbosity"]},{"text":"impl Send for IfFrom","synthetic":true,"types":["uucore::features::perms::IfFrom"]},{"text":"impl Send for ChownExecutor","synthetic":true,"types":["uucore::features::perms::ChownExecutor"]},{"text":"impl Send for ExitStatus","synthetic":true,"types":["uucore::features::process::ExitStatus"]},{"text":"impl Send for Utmpx","synthetic":true,"types":["uucore::features::utmpx::Utmpx"]},{"text":"impl Send for UtmpxIter","synthetic":true,"types":["uucore::features::utmpx::UtmpxIter"]},{"text":"impl Send for BackupMode","synthetic":true,"types":["uucore::mods::backup_control::BackupMode"]},{"text":"impl Send for BackupError","synthetic":true,"types":["uucore::mods::backup_control::BackupError"]},{"text":"impl<'a> Send for HelpText<'a>","synthetic":true,"types":["uucore::mods::coreopts::HelpText"]},{"text":"impl<'a> Send for CoreOptions<'a>","synthetic":true,"types":["uucore::mods::coreopts::CoreOptions"]},{"text":"impl Send for USimpleError","synthetic":true,"types":["uucore::mods::error::USimpleError"]},{"text":"impl Send for UUsageError","synthetic":true,"types":["uucore::mods::error::UUsageError"]},{"text":"impl Send for UIoError","synthetic":true,"types":["uucore::mods::error::UIoError"]},{"text":"impl Send for ExitCode","synthetic":true,"types":["uucore::mods::error::ExitCode"]},{"text":"impl Send for Range","synthetic":true,"types":["uucore::mods::ranges::Range"]},{"text":"impl Send for ParseSizeError","synthetic":true,"types":["uucore::parser::parse_size::ParseSizeError"]},{"text":"impl Send for InvalidEncodingHandling","synthetic":true,"types":["uucore::InvalidEncodingHandling"]},{"text":"impl Send for ConversionResult","synthetic":true,"types":["uucore::ConversionResult"]}];
+implementors["uucore"] = [{"text":"impl Send for DecodeError","synthetic":true,"types":["uucore::features::encoding::DecodeError"]},{"text":"impl Send for EncodeError","synthetic":true,"types":["uucore::features::encoding::EncodeError"]},{"text":"impl Send for Format","synthetic":true,"types":["uucore::features::encoding::Format"]},{"text":"impl<R> Send for Data<R> where R: Send, ","synthetic":true,"types":["uucore::features::encoding::Data"]},{"text":"impl Send for MissingHandling","synthetic":true,"types":["uucore::features::fs::MissingHandling"]},{"text":"impl Send for ResolveMode","synthetic":true,"types":["uucore::features::fs::ResolveMode"]},{"text":"impl Send for MountInfo","synthetic":true,"types":["uucore::features::fsext::MountInfo"]},{"text":"impl Send for FsUsage","synthetic":true,"types":["uucore::features::fsext::FsUsage"]},{"text":"impl<T> Send for RingBuffer<T> where T: Send, ","synthetic":true,"types":["uucore::features::ringbuffer::RingBuffer"]},{"text":"impl !Send for Passwd","synthetic":true,"types":["uucore::features::entries::Passwd"]},{"text":"impl !Send for Group","synthetic":true,"types":["uucore::features::entries::Group"]},{"text":"impl Send for VerbosityLevel","synthetic":true,"types":["uucore::features::perms::VerbosityLevel"]},{"text":"impl Send for Verbosity","synthetic":true,"types":["uucore::features::perms::Verbosity"]},{"text":"impl Send for IfFrom","synthetic":true,"types":["uucore::features::perms::IfFrom"]},{"text":"impl Send for ChownExecutor","synthetic":true,"types":["uucore::features::perms::ChownExecutor"]},{"text":"impl Send for ExitStatus","synthetic":true,"types":["uucore::features::process::ExitStatus"]},{"text":"impl Send for Utmpx","synthetic":true,"types":["uucore::features::utmpx::Utmpx"]},{"text":"impl Send for UtmpxIter","synthetic":true,"types":["uucore::features::utmpx::UtmpxIter"]},{"text":"impl Send for BackupMode","synthetic":true,"types":["uucore::mods::backup_control::BackupMode"]},{"text":"impl Send for BackupError","synthetic":true,"types":["uucore::mods::backup_control::BackupError"]},{"text":"impl<'a> Send for HelpText<'a>","synthetic":true,"types":["uucore::mods::coreopts::HelpText"]},{"text":"impl<'a> Send for CoreOptions<'a>","synthetic":true,"types":["uucore::mods::coreopts::CoreOptions"]},{"text":"impl<'a> Send for Quoted<'a>","synthetic":true,"types":["uucore::mods::display::Quoted"]},{"text":"impl Send for USimpleError","synthetic":true,"types":["uucore::mods::error::USimpleError"]},{"text":"impl Send for UUsageError","synthetic":true,"types":["uucore::mods::error::UUsageError"]},{"text":"impl Send for UIoError","synthetic":true,"types":["uucore::mods::error::UIoError"]},{"text":"impl Send for ExitCode","synthetic":true,"types":["uucore::mods::error::ExitCode"]},{"text":"impl Send for Range","synthetic":true,"types":["uucore::mods::ranges::Range"]},{"text":"impl Send for ParseSizeError","synthetic":true,"types":["uucore::parser::parse_size::ParseSizeError"]},{"text":"impl Send for InvalidEncodingHandling","synthetic":true,"types":["uucore::InvalidEncodingHandling"]},{"text":"impl Send for ConversionResult","synthetic":true,"types":["uucore::ConversionResult"]}];
if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/implementors/core/marker/trait.Sync.js b/implementors/core/marker/trait.Sync.js
index cb54b179a..d7a496daf 100644
--- a/implementors/core/marker/trait.Sync.js
+++ b/implementors/core/marker/trait.Sync.js
@@ -13,5 +13,5 @@ implementors["uu_nl"] = [{"text":"impl Sync for WhitespaceSplitter<'a>","synthetic":true,"types":["uu_numfmt::format::WhitespaceSplitter"]},{"text":"impl Sync for TransformOptions","synthetic":true,"types":["uu_numfmt::options::TransformOptions"]},{"text":"impl Sync for NumfmtOptions","synthetic":true,"types":["uu_numfmt::options::NumfmtOptions"]},{"text":"impl Sync for RoundMethod","synthetic":true,"types":["uu_numfmt::options::RoundMethod"]}];
implementors["uu_sort"] = [{"text":"impl Sync for Output","synthetic":true,"types":["uu_sort::Output"]},{"text":"impl Sync for GlobalSettings","synthetic":true,"types":["uu_sort::GlobalSettings"]},{"text":"impl<'a> Sync for Line<'a>","synthetic":true,"types":["uu_sort::Line"]},{"text":"impl Sync for GeneralF64ParseResult","synthetic":true,"types":["uu_sort::GeneralF64ParseResult"]}];
implementors["uu_stat"] = [{"text":"impl Sync for OutputType","synthetic":true,"types":["uu_stat::OutputType"]},{"text":"impl Sync for Token","synthetic":true,"types":["uu_stat::Token"]},{"text":"impl Sync for Stater","synthetic":true,"types":["uu_stat::Stater"]}];
-implementors["uucore"] = [{"text":"impl Sync for DecodeError","synthetic":true,"types":["uucore::features::encoding::DecodeError"]},{"text":"impl Sync for EncodeError","synthetic":true,"types":["uucore::features::encoding::EncodeError"]},{"text":"impl Sync for Format","synthetic":true,"types":["uucore::features::encoding::Format"]},{"text":"impl<R> Sync for Data<R> where R: Sync, ","synthetic":true,"types":["uucore::features::encoding::Data"]},{"text":"impl Sync for MissingHandling","synthetic":true,"types":["uucore::features::fs::MissingHandling"]},{"text":"impl Sync for ResolveMode","synthetic":true,"types":["uucore::features::fs::ResolveMode"]},{"text":"impl Sync for MountInfo","synthetic":true,"types":["uucore::features::fsext::MountInfo"]},{"text":"impl Sync for FsUsage","synthetic":true,"types":["uucore::features::fsext::FsUsage"]},{"text":"impl<T> Sync for RingBuffer<T> where T: Sync, ","synthetic":true,"types":["uucore::features::ringbuffer::RingBuffer"]},{"text":"impl !Sync for Passwd","synthetic":true,"types":["uucore::features::entries::Passwd"]},{"text":"impl !Sync for Group","synthetic":true,"types":["uucore::features::entries::Group"]},{"text":"impl Sync for VerbosityLevel","synthetic":true,"types":["uucore::features::perms::VerbosityLevel"]},{"text":"impl Sync for Verbosity","synthetic":true,"types":["uucore::features::perms::Verbosity"]},{"text":"impl Sync for IfFrom","synthetic":true,"types":["uucore::features::perms::IfFrom"]},{"text":"impl Sync for ChownExecutor","synthetic":true,"types":["uucore::features::perms::ChownExecutor"]},{"text":"impl Sync for ExitStatus","synthetic":true,"types":["uucore::features::process::ExitStatus"]},{"text":"impl Sync for Utmpx","synthetic":true,"types":["uucore::features::utmpx::Utmpx"]},{"text":"impl Sync for UtmpxIter","synthetic":true,"types":["uucore::features::utmpx::UtmpxIter"]},{"text":"impl Sync for BackupMode","synthetic":true,"types":["uucore::mods::backup_control::BackupMode"]},{"text":"impl Sync for BackupError","synthetic":true,"types":["uucore::mods::backup_control::BackupError"]},{"text":"impl<'a> Sync for HelpText<'a>","synthetic":true,"types":["uucore::mods::coreopts::HelpText"]},{"text":"impl<'a> Sync for CoreOptions<'a>","synthetic":true,"types":["uucore::mods::coreopts::CoreOptions"]},{"text":"impl Sync for USimpleError","synthetic":true,"types":["uucore::mods::error::USimpleError"]},{"text":"impl Sync for UUsageError","synthetic":true,"types":["uucore::mods::error::UUsageError"]},{"text":"impl Sync for UIoError","synthetic":true,"types":["uucore::mods::error::UIoError"]},{"text":"impl Sync for ExitCode","synthetic":true,"types":["uucore::mods::error::ExitCode"]},{"text":"impl Sync for Range","synthetic":true,"types":["uucore::mods::ranges::Range"]},{"text":"impl Sync for ParseSizeError","synthetic":true,"types":["uucore::parser::parse_size::ParseSizeError"]},{"text":"impl Sync for InvalidEncodingHandling","synthetic":true,"types":["uucore::InvalidEncodingHandling"]},{"text":"impl Sync for ConversionResult","synthetic":true,"types":["uucore::ConversionResult"]}];
+implementors["uucore"] = [{"text":"impl Sync for DecodeError","synthetic":true,"types":["uucore::features::encoding::DecodeError"]},{"text":"impl Sync for EncodeError","synthetic":true,"types":["uucore::features::encoding::EncodeError"]},{"text":"impl Sync for Format","synthetic":true,"types":["uucore::features::encoding::Format"]},{"text":"impl<R> Sync for Data<R> where R: Sync, ","synthetic":true,"types":["uucore::features::encoding::Data"]},{"text":"impl Sync for MissingHandling","synthetic":true,"types":["uucore::features::fs::MissingHandling"]},{"text":"impl Sync for ResolveMode","synthetic":true,"types":["uucore::features::fs::ResolveMode"]},{"text":"impl Sync for MountInfo","synthetic":true,"types":["uucore::features::fsext::MountInfo"]},{"text":"impl Sync for FsUsage","synthetic":true,"types":["uucore::features::fsext::FsUsage"]},{"text":"impl<T> Sync for RingBuffer<T> where T: Sync, ","synthetic":true,"types":["uucore::features::ringbuffer::RingBuffer"]},{"text":"impl !Sync for Passwd","synthetic":true,"types":["uucore::features::entries::Passwd"]},{"text":"impl !Sync for Group","synthetic":true,"types":["uucore::features::entries::Group"]},{"text":"impl Sync for VerbosityLevel","synthetic":true,"types":["uucore::features::perms::VerbosityLevel"]},{"text":"impl Sync for Verbosity","synthetic":true,"types":["uucore::features::perms::Verbosity"]},{"text":"impl Sync for IfFrom","synthetic":true,"types":["uucore::features::perms::IfFrom"]},{"text":"impl Sync for ChownExecutor","synthetic":true,"types":["uucore::features::perms::ChownExecutor"]},{"text":"impl Sync for ExitStatus","synthetic":true,"types":["uucore::features::process::ExitStatus"]},{"text":"impl Sync for Utmpx","synthetic":true,"types":["uucore::features::utmpx::Utmpx"]},{"text":"impl Sync for UtmpxIter","synthetic":true,"types":["uucore::features::utmpx::UtmpxIter"]},{"text":"impl Sync for BackupMode","synthetic":true,"types":["uucore::mods::backup_control::BackupMode"]},{"text":"impl Sync for BackupError","synthetic":true,"types":["uucore::mods::backup_control::BackupError"]},{"text":"impl<'a> Sync for HelpText<'a>","synthetic":true,"types":["uucore::mods::coreopts::HelpText"]},{"text":"impl<'a> Sync for CoreOptions<'a>","synthetic":true,"types":["uucore::mods::coreopts::CoreOptions"]},{"text":"impl<'a> Sync for Quoted<'a>","synthetic":true,"types":["uucore::mods::display::Quoted"]},{"text":"impl Sync for USimpleError","synthetic":true,"types":["uucore::mods::error::USimpleError"]},{"text":"impl Sync for UUsageError","synthetic":true,"types":["uucore::mods::error::UUsageError"]},{"text":"impl Sync for UIoError","synthetic":true,"types":["uucore::mods::error::UIoError"]},{"text":"impl Sync for ExitCode","synthetic":true,"types":["uucore::mods::error::ExitCode"]},{"text":"impl Sync for Range","synthetic":true,"types":["uucore::mods::ranges::Range"]},{"text":"impl Sync for ParseSizeError","synthetic":true,"types":["uucore::parser::parse_size::ParseSizeError"]},{"text":"impl Sync for InvalidEncodingHandling","synthetic":true,"types":["uucore::InvalidEncodingHandling"]},{"text":"impl Sync for ConversionResult","synthetic":true,"types":["uucore::ConversionResult"]}];
if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/implementors/core/marker/trait.Unpin.js b/implementors/core/marker/trait.Unpin.js
index 3a5f5b5ff..a4b720a84 100644
--- a/implementors/core/marker/trait.Unpin.js
+++ b/implementors/core/marker/trait.Unpin.js
@@ -13,5 +13,5 @@ implementors["uu_nl"] = [{"text":"impl Unpin for WhitespaceSplitter<'a>","synthetic":true,"types":["uu_numfmt::format::WhitespaceSplitter"]},{"text":"impl Unpin for TransformOptions","synthetic":true,"types":["uu_numfmt::options::TransformOptions"]},{"text":"impl Unpin for NumfmtOptions","synthetic":true,"types":["uu_numfmt::options::NumfmtOptions"]},{"text":"impl Unpin for RoundMethod","synthetic":true,"types":["uu_numfmt::options::RoundMethod"]}];
implementors["uu_sort"] = [{"text":"impl Unpin for Output","synthetic":true,"types":["uu_sort::Output"]},{"text":"impl Unpin for GlobalSettings","synthetic":true,"types":["uu_sort::GlobalSettings"]},{"text":"impl<'a> Unpin for Line<'a>","synthetic":true,"types":["uu_sort::Line"]},{"text":"impl Unpin for GeneralF64ParseResult","synthetic":true,"types":["uu_sort::GeneralF64ParseResult"]}];
implementors["uu_stat"] = [{"text":"impl Unpin for OutputType","synthetic":true,"types":["uu_stat::OutputType"]},{"text":"impl Unpin for Token","synthetic":true,"types":["uu_stat::Token"]},{"text":"impl Unpin for Stater","synthetic":true,"types":["uu_stat::Stater"]}];
-implementors["uucore"] = [{"text":"impl Unpin for DecodeError","synthetic":true,"types":["uucore::features::encoding::DecodeError"]},{"text":"impl Unpin for EncodeError","synthetic":true,"types":["uucore::features::encoding::EncodeError"]},{"text":"impl Unpin for Format","synthetic":true,"types":["uucore::features::encoding::Format"]},{"text":"impl<R> Unpin for Data<R> where R: Unpin, ","synthetic":true,"types":["uucore::features::encoding::Data"]},{"text":"impl Unpin for MissingHandling","synthetic":true,"types":["uucore::features::fs::MissingHandling"]},{"text":"impl Unpin for ResolveMode","synthetic":true,"types":["uucore::features::fs::ResolveMode"]},{"text":"impl Unpin for MountInfo","synthetic":true,"types":["uucore::features::fsext::MountInfo"]},{"text":"impl Unpin for FsUsage","synthetic":true,"types":["uucore::features::fsext::FsUsage"]},{"text":"impl<T> Unpin for RingBuffer<T> where T: Unpin, ","synthetic":true,"types":["uucore::features::ringbuffer::RingBuffer"]},{"text":"impl Unpin for Passwd","synthetic":true,"types":["uucore::features::entries::Passwd"]},{"text":"impl Unpin for Group","synthetic":true,"types":["uucore::features::entries::Group"]},{"text":"impl Unpin for VerbosityLevel","synthetic":true,"types":["uucore::features::perms::VerbosityLevel"]},{"text":"impl Unpin for Verbosity","synthetic":true,"types":["uucore::features::perms::Verbosity"]},{"text":"impl Unpin for IfFrom","synthetic":true,"types":["uucore::features::perms::IfFrom"]},{"text":"impl Unpin for ChownExecutor","synthetic":true,"types":["uucore::features::perms::ChownExecutor"]},{"text":"impl Unpin for ExitStatus","synthetic":true,"types":["uucore::features::process::ExitStatus"]},{"text":"impl Unpin for Utmpx","synthetic":true,"types":["uucore::features::utmpx::Utmpx"]},{"text":"impl Unpin for UtmpxIter","synthetic":true,"types":["uucore::features::utmpx::UtmpxIter"]},{"text":"impl Unpin for BackupMode","synthetic":true,"types":["uucore::mods::backup_control::BackupMode"]},{"text":"impl Unpin for BackupError","synthetic":true,"types":["uucore::mods::backup_control::BackupError"]},{"text":"impl<'a> Unpin for HelpText<'a>","synthetic":true,"types":["uucore::mods::coreopts::HelpText"]},{"text":"impl<'a> Unpin for CoreOptions<'a>","synthetic":true,"types":["uucore::mods::coreopts::CoreOptions"]},{"text":"impl Unpin for USimpleError","synthetic":true,"types":["uucore::mods::error::USimpleError"]},{"text":"impl Unpin for UUsageError","synthetic":true,"types":["uucore::mods::error::UUsageError"]},{"text":"impl Unpin for UIoError","synthetic":true,"types":["uucore::mods::error::UIoError"]},{"text":"impl Unpin for ExitCode","synthetic":true,"types":["uucore::mods::error::ExitCode"]},{"text":"impl Unpin for Range","synthetic":true,"types":["uucore::mods::ranges::Range"]},{"text":"impl Unpin for ParseSizeError","synthetic":true,"types":["uucore::parser::parse_size::ParseSizeError"]},{"text":"impl Unpin for InvalidEncodingHandling","synthetic":true,"types":["uucore::InvalidEncodingHandling"]},{"text":"impl Unpin for ConversionResult","synthetic":true,"types":["uucore::ConversionResult"]}];
+implementors["uucore"] = [{"text":"impl Unpin for DecodeError","synthetic":true,"types":["uucore::features::encoding::DecodeError"]},{"text":"impl Unpin for EncodeError","synthetic":true,"types":["uucore::features::encoding::EncodeError"]},{"text":"impl Unpin for Format","synthetic":true,"types":["uucore::features::encoding::Format"]},{"text":"impl<R> Unpin for Data<R> where R: Unpin, ","synthetic":true,"types":["uucore::features::encoding::Data"]},{"text":"impl Unpin for MissingHandling","synthetic":true,"types":["uucore::features::fs::MissingHandling"]},{"text":"impl Unpin for ResolveMode","synthetic":true,"types":["uucore::features::fs::ResolveMode"]},{"text":"impl Unpin for MountInfo","synthetic":true,"types":["uucore::features::fsext::MountInfo"]},{"text":"impl Unpin for FsUsage","synthetic":true,"types":["uucore::features::fsext::FsUsage"]},{"text":"impl<T> Unpin for RingBuffer<T> where T: Unpin, ","synthetic":true,"types":["uucore::features::ringbuffer::RingBuffer"]},{"text":"impl Unpin for Passwd","synthetic":true,"types":["uucore::features::entries::Passwd"]},{"text":"impl Unpin for Group","synthetic":true,"types":["uucore::features::entries::Group"]},{"text":"impl Unpin for VerbosityLevel","synthetic":true,"types":["uucore::features::perms::VerbosityLevel"]},{"text":"impl Unpin for Verbosity","synthetic":true,"types":["uucore::features::perms::Verbosity"]},{"text":"impl Unpin for IfFrom","synthetic":true,"types":["uucore::features::perms::IfFrom"]},{"text":"impl Unpin for ChownExecutor","synthetic":true,"types":["uucore::features::perms::ChownExecutor"]},{"text":"impl Unpin for ExitStatus","synthetic":true,"types":["uucore::features::process::ExitStatus"]},{"text":"impl Unpin for Utmpx","synthetic":true,"types":["uucore::features::utmpx::Utmpx"]},{"text":"impl Unpin for UtmpxIter","synthetic":true,"types":["uucore::features::utmpx::UtmpxIter"]},{"text":"impl Unpin for BackupMode","synthetic":true,"types":["uucore::mods::backup_control::BackupMode"]},{"text":"impl Unpin for BackupError","synthetic":true,"types":["uucore::mods::backup_control::BackupError"]},{"text":"impl<'a> Unpin for HelpText<'a>","synthetic":true,"types":["uucore::mods::coreopts::HelpText"]},{"text":"impl<'a> Unpin for CoreOptions<'a>","synthetic":true,"types":["uucore::mods::coreopts::CoreOptions"]},{"text":"impl<'a> Unpin for Quoted<'a>","synthetic":true,"types":["uucore::mods::display::Quoted"]},{"text":"impl Unpin for USimpleError","synthetic":true,"types":["uucore::mods::error::USimpleError"]},{"text":"impl Unpin for UUsageError","synthetic":true,"types":["uucore::mods::error::UUsageError"]},{"text":"impl Unpin for UIoError","synthetic":true,"types":["uucore::mods::error::UIoError"]},{"text":"impl Unpin for ExitCode","synthetic":true,"types":["uucore::mods::error::ExitCode"]},{"text":"impl Unpin for Range","synthetic":true,"types":["uucore::mods::ranges::Range"]},{"text":"impl Unpin for ParseSizeError","synthetic":true,"types":["uucore::parser::parse_size::ParseSizeError"]},{"text":"impl Unpin for InvalidEncodingHandling","synthetic":true,"types":["uucore::InvalidEncodingHandling"]},{"text":"impl Unpin for ConversionResult","synthetic":true,"types":["uucore::ConversionResult"]}];
if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/implementors/std/panic/trait.RefUnwindSafe.js b/implementors/std/panic/trait.RefUnwindSafe.js
index 7022782b8..6eeb55935 100644
--- a/implementors/std/panic/trait.RefUnwindSafe.js
+++ b/implementors/std/panic/trait.RefUnwindSafe.js
@@ -13,5 +13,5 @@ implementors["uu_nl"] = [{"text":"impl RefUnwindSafe for WhitespaceSplitter<'a>","synthetic":true,"types":["uu_numfmt::format::WhitespaceSplitter"]},{"text":"impl RefUnwindSafe for TransformOptions","synthetic":true,"types":["uu_numfmt::options::TransformOptions"]},{"text":"impl RefUnwindSafe for NumfmtOptions","synthetic":true,"types":["uu_numfmt::options::NumfmtOptions"]},{"text":"impl RefUnwindSafe for RoundMethod","synthetic":true,"types":["uu_numfmt::options::RoundMethod"]}];
implementors["uu_sort"] = [{"text":"impl RefUnwindSafe for Output","synthetic":true,"types":["uu_sort::Output"]},{"text":"impl RefUnwindSafe for GlobalSettings","synthetic":true,"types":["uu_sort::GlobalSettings"]},{"text":"impl<'a> RefUnwindSafe for Line<'a>","synthetic":true,"types":["uu_sort::Line"]},{"text":"impl RefUnwindSafe for GeneralF64ParseResult","synthetic":true,"types":["uu_sort::GeneralF64ParseResult"]}];
implementors["uu_stat"] = [{"text":"impl RefUnwindSafe for OutputType","synthetic":true,"types":["uu_stat::OutputType"]},{"text":"impl RefUnwindSafe for Token","synthetic":true,"types":["uu_stat::Token"]},{"text":"impl RefUnwindSafe for Stater","synthetic":true,"types":["uu_stat::Stater"]}];
-implementors["uucore"] = [{"text":"impl !RefUnwindSafe for DecodeError","synthetic":true,"types":["uucore::features::encoding::DecodeError"]},{"text":"impl RefUnwindSafe for EncodeError","synthetic":true,"types":["uucore::features::encoding::EncodeError"]},{"text":"impl RefUnwindSafe for Format","synthetic":true,"types":["uucore::features::encoding::Format"]},{"text":"impl<R> RefUnwindSafe for Data<R> where R: RefUnwindSafe, ","synthetic":true,"types":["uucore::features::encoding::Data"]},{"text":"impl RefUnwindSafe for MissingHandling","synthetic":true,"types":["uucore::features::fs::MissingHandling"]},{"text":"impl RefUnwindSafe for ResolveMode","synthetic":true,"types":["uucore::features::fs::ResolveMode"]},{"text":"impl RefUnwindSafe for MountInfo","synthetic":true,"types":["uucore::features::fsext::MountInfo"]},{"text":"impl RefUnwindSafe for FsUsage","synthetic":true,"types":["uucore::features::fsext::FsUsage"]},{"text":"impl<T> RefUnwindSafe for RingBuffer<T> where T: RefUnwindSafe, ","synthetic":true,"types":["uucore::features::ringbuffer::RingBuffer"]},{"text":"impl RefUnwindSafe for Passwd","synthetic":true,"types":["uucore::features::entries::Passwd"]},{"text":"impl RefUnwindSafe for Group","synthetic":true,"types":["uucore::features::entries::Group"]},{"text":"impl RefUnwindSafe for VerbosityLevel","synthetic":true,"types":["uucore::features::perms::VerbosityLevel"]},{"text":"impl RefUnwindSafe for Verbosity","synthetic":true,"types":["uucore::features::perms::Verbosity"]},{"text":"impl RefUnwindSafe for IfFrom","synthetic":true,"types":["uucore::features::perms::IfFrom"]},{"text":"impl RefUnwindSafe for ChownExecutor","synthetic":true,"types":["uucore::features::perms::ChownExecutor"]},{"text":"impl RefUnwindSafe for ExitStatus","synthetic":true,"types":["uucore::features::process::ExitStatus"]},{"text":"impl RefUnwindSafe for Utmpx","synthetic":true,"types":["uucore::features::utmpx::Utmpx"]},{"text":"impl RefUnwindSafe for UtmpxIter","synthetic":true,"types":["uucore::features::utmpx::UtmpxIter"]},{"text":"impl RefUnwindSafe for BackupMode","synthetic":true,"types":["uucore::mods::backup_control::BackupMode"]},{"text":"impl RefUnwindSafe for BackupError","synthetic":true,"types":["uucore::mods::backup_control::BackupError"]},{"text":"impl<'a> RefUnwindSafe for HelpText<'a>","synthetic":true,"types":["uucore::mods::coreopts::HelpText"]},{"text":"impl<'a> RefUnwindSafe for CoreOptions<'a>","synthetic":true,"types":["uucore::mods::coreopts::CoreOptions"]},{"text":"impl RefUnwindSafe for USimpleError","synthetic":true,"types":["uucore::mods::error::USimpleError"]},{"text":"impl RefUnwindSafe for UUsageError","synthetic":true,"types":["uucore::mods::error::UUsageError"]},{"text":"impl !RefUnwindSafe for UIoError","synthetic":true,"types":["uucore::mods::error::UIoError"]},{"text":"impl RefUnwindSafe for ExitCode","synthetic":true,"types":["uucore::mods::error::ExitCode"]},{"text":"impl RefUnwindSafe for Range","synthetic":true,"types":["uucore::mods::ranges::Range"]},{"text":"impl RefUnwindSafe for ParseSizeError","synthetic":true,"types":["uucore::parser::parse_size::ParseSizeError"]},{"text":"impl RefUnwindSafe for InvalidEncodingHandling","synthetic":true,"types":["uucore::InvalidEncodingHandling"]},{"text":"impl RefUnwindSafe for ConversionResult","synthetic":true,"types":["uucore::ConversionResult"]}];
+implementors["uucore"] = [{"text":"impl !RefUnwindSafe for DecodeError","synthetic":true,"types":["uucore::features::encoding::DecodeError"]},{"text":"impl RefUnwindSafe for EncodeError","synthetic":true,"types":["uucore::features::encoding::EncodeError"]},{"text":"impl RefUnwindSafe for Format","synthetic":true,"types":["uucore::features::encoding::Format"]},{"text":"impl<R> RefUnwindSafe for Data<R> where R: RefUnwindSafe, ","synthetic":true,"types":["uucore::features::encoding::Data"]},{"text":"impl RefUnwindSafe for MissingHandling","synthetic":true,"types":["uucore::features::fs::MissingHandling"]},{"text":"impl RefUnwindSafe for ResolveMode","synthetic":true,"types":["uucore::features::fs::ResolveMode"]},{"text":"impl RefUnwindSafe for MountInfo","synthetic":true,"types":["uucore::features::fsext::MountInfo"]},{"text":"impl RefUnwindSafe for FsUsage","synthetic":true,"types":["uucore::features::fsext::FsUsage"]},{"text":"impl<T> RefUnwindSafe for RingBuffer<T> where T: RefUnwindSafe, ","synthetic":true,"types":["uucore::features::ringbuffer::RingBuffer"]},{"text":"impl RefUnwindSafe for Passwd","synthetic":true,"types":["uucore::features::entries::Passwd"]},{"text":"impl RefUnwindSafe for Group","synthetic":true,"types":["uucore::features::entries::Group"]},{"text":"impl RefUnwindSafe for VerbosityLevel","synthetic":true,"types":["uucore::features::perms::VerbosityLevel"]},{"text":"impl RefUnwindSafe for Verbosity","synthetic":true,"types":["uucore::features::perms::Verbosity"]},{"text":"impl RefUnwindSafe for IfFrom","synthetic":true,"types":["uucore::features::perms::IfFrom"]},{"text":"impl RefUnwindSafe for ChownExecutor","synthetic":true,"types":["uucore::features::perms::ChownExecutor"]},{"text":"impl RefUnwindSafe for ExitStatus","synthetic":true,"types":["uucore::features::process::ExitStatus"]},{"text":"impl RefUnwindSafe for Utmpx","synthetic":true,"types":["uucore::features::utmpx::Utmpx"]},{"text":"impl RefUnwindSafe for UtmpxIter","synthetic":true,"types":["uucore::features::utmpx::UtmpxIter"]},{"text":"impl RefUnwindSafe for BackupMode","synthetic":true,"types":["uucore::mods::backup_control::BackupMode"]},{"text":"impl RefUnwindSafe for BackupError","synthetic":true,"types":["uucore::mods::backup_control::BackupError"]},{"text":"impl<'a> RefUnwindSafe for HelpText<'a>","synthetic":true,"types":["uucore::mods::coreopts::HelpText"]},{"text":"impl<'a> RefUnwindSafe for CoreOptions<'a>","synthetic":true,"types":["uucore::mods::coreopts::CoreOptions"]},{"text":"impl<'a> RefUnwindSafe for Quoted<'a>","synthetic":true,"types":["uucore::mods::display::Quoted"]},{"text":"impl RefUnwindSafe for USimpleError","synthetic":true,"types":["uucore::mods::error::USimpleError"]},{"text":"impl RefUnwindSafe for UUsageError","synthetic":true,"types":["uucore::mods::error::UUsageError"]},{"text":"impl !RefUnwindSafe for UIoError","synthetic":true,"types":["uucore::mods::error::UIoError"]},{"text":"impl RefUnwindSafe for ExitCode","synthetic":true,"types":["uucore::mods::error::ExitCode"]},{"text":"impl RefUnwindSafe for Range","synthetic":true,"types":["uucore::mods::ranges::Range"]},{"text":"impl RefUnwindSafe for ParseSizeError","synthetic":true,"types":["uucore::parser::parse_size::ParseSizeError"]},{"text":"impl RefUnwindSafe for InvalidEncodingHandling","synthetic":true,"types":["uucore::InvalidEncodingHandling"]},{"text":"impl RefUnwindSafe for ConversionResult","synthetic":true,"types":["uucore::ConversionResult"]}];
if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/implementors/std/panic/trait.UnwindSafe.js b/implementors/std/panic/trait.UnwindSafe.js
index 0b14b3d57..0e68c826e 100644
--- a/implementors/std/panic/trait.UnwindSafe.js
+++ b/implementors/std/panic/trait.UnwindSafe.js
@@ -13,5 +13,5 @@ implementors["uu_nl"] = [{"text":"impl UnwindSafe for WhitespaceSplitter<'a>","synthetic":true,"types":["uu_numfmt::format::WhitespaceSplitter"]},{"text":"impl UnwindSafe for TransformOptions","synthetic":true,"types":["uu_numfmt::options::TransformOptions"]},{"text":"impl UnwindSafe for NumfmtOptions","synthetic":true,"types":["uu_numfmt::options::NumfmtOptions"]},{"text":"impl UnwindSafe for RoundMethod","synthetic":true,"types":["uu_numfmt::options::RoundMethod"]}];
implementors["uu_sort"] = [{"text":"impl UnwindSafe for Output","synthetic":true,"types":["uu_sort::Output"]},{"text":"impl UnwindSafe for GlobalSettings","synthetic":true,"types":["uu_sort::GlobalSettings"]},{"text":"impl<'a> UnwindSafe for Line<'a>","synthetic":true,"types":["uu_sort::Line"]},{"text":"impl UnwindSafe for GeneralF64ParseResult","synthetic":true,"types":["uu_sort::GeneralF64ParseResult"]}];
implementors["uu_stat"] = [{"text":"impl UnwindSafe for OutputType","synthetic":true,"types":["uu_stat::OutputType"]},{"text":"impl UnwindSafe for Token","synthetic":true,"types":["uu_stat::Token"]},{"text":"impl UnwindSafe for Stater","synthetic":true,"types":["uu_stat::Stater"]}];
-implementors["uucore"] = [{"text":"impl !UnwindSafe for DecodeError","synthetic":true,"types":["uucore::features::encoding::DecodeError"]},{"text":"impl UnwindSafe for EncodeError","synthetic":true,"types":["uucore::features::encoding::EncodeError"]},{"text":"impl UnwindSafe for Format","synthetic":true,"types":["uucore::features::encoding::Format"]},{"text":"impl<R> UnwindSafe for Data<R> where R: UnwindSafe, ","synthetic":true,"types":["uucore::features::encoding::Data"]},{"text":"impl UnwindSafe for MissingHandling","synthetic":true,"types":["uucore::features::fs::MissingHandling"]},{"text":"impl UnwindSafe for ResolveMode","synthetic":true,"types":["uucore::features::fs::ResolveMode"]},{"text":"impl UnwindSafe for MountInfo","synthetic":true,"types":["uucore::features::fsext::MountInfo"]},{"text":"impl UnwindSafe for FsUsage","synthetic":true,"types":["uucore::features::fsext::FsUsage"]},{"text":"impl<T> UnwindSafe for RingBuffer<T> where T: UnwindSafe, ","synthetic":true,"types":["uucore::features::ringbuffer::RingBuffer"]},{"text":"impl UnwindSafe for Passwd","synthetic":true,"types":["uucore::features::entries::Passwd"]},{"text":"impl UnwindSafe for Group","synthetic":true,"types":["uucore::features::entries::Group"]},{"text":"impl UnwindSafe for VerbosityLevel","synthetic":true,"types":["uucore::features::perms::VerbosityLevel"]},{"text":"impl UnwindSafe for Verbosity","synthetic":true,"types":["uucore::features::perms::Verbosity"]},{"text":"impl UnwindSafe for IfFrom","synthetic":true,"types":["uucore::features::perms::IfFrom"]},{"text":"impl UnwindSafe for ChownExecutor","synthetic":true,"types":["uucore::features::perms::ChownExecutor"]},{"text":"impl UnwindSafe for ExitStatus","synthetic":true,"types":["uucore::features::process::ExitStatus"]},{"text":"impl UnwindSafe for Utmpx","synthetic":true,"types":["uucore::features::utmpx::Utmpx"]},{"text":"impl UnwindSafe for UtmpxIter","synthetic":true,"types":["uucore::features::utmpx::UtmpxIter"]},{"text":"impl UnwindSafe for BackupMode","synthetic":true,"types":["uucore::mods::backup_control::BackupMode"]},{"text":"impl UnwindSafe for BackupError","synthetic":true,"types":["uucore::mods::backup_control::BackupError"]},{"text":"impl<'a> UnwindSafe for HelpText<'a>","synthetic":true,"types":["uucore::mods::coreopts::HelpText"]},{"text":"impl<'a> UnwindSafe for CoreOptions<'a>","synthetic":true,"types":["uucore::mods::coreopts::CoreOptions"]},{"text":"impl UnwindSafe for USimpleError","synthetic":true,"types":["uucore::mods::error::USimpleError"]},{"text":"impl UnwindSafe for UUsageError","synthetic":true,"types":["uucore::mods::error::UUsageError"]},{"text":"impl !UnwindSafe for UIoError","synthetic":true,"types":["uucore::mods::error::UIoError"]},{"text":"impl UnwindSafe for ExitCode","synthetic":true,"types":["uucore::mods::error::ExitCode"]},{"text":"impl UnwindSafe for Range","synthetic":true,"types":["uucore::mods::ranges::Range"]},{"text":"impl UnwindSafe for ParseSizeError","synthetic":true,"types":["uucore::parser::parse_size::ParseSizeError"]},{"text":"impl UnwindSafe for InvalidEncodingHandling","synthetic":true,"types":["uucore::InvalidEncodingHandling"]},{"text":"impl UnwindSafe for ConversionResult","synthetic":true,"types":["uucore::ConversionResult"]}];
+implementors["uucore"] = [{"text":"impl !UnwindSafe for DecodeError","synthetic":true,"types":["uucore::features::encoding::DecodeError"]},{"text":"impl UnwindSafe for EncodeError","synthetic":true,"types":["uucore::features::encoding::EncodeError"]},{"text":"impl UnwindSafe for Format","synthetic":true,"types":["uucore::features::encoding::Format"]},{"text":"impl<R> UnwindSafe for Data<R> where R: UnwindSafe, ","synthetic":true,"types":["uucore::features::encoding::Data"]},{"text":"impl UnwindSafe for MissingHandling","synthetic":true,"types":["uucore::features::fs::MissingHandling"]},{"text":"impl UnwindSafe for ResolveMode","synthetic":true,"types":["uucore::features::fs::ResolveMode"]},{"text":"impl UnwindSafe for MountInfo","synthetic":true,"types":["uucore::features::fsext::MountInfo"]},{"text":"impl UnwindSafe for FsUsage","synthetic":true,"types":["uucore::features::fsext::FsUsage"]},{"text":"impl<T> UnwindSafe for RingBuffer<T> where T: UnwindSafe, ","synthetic":true,"types":["uucore::features::ringbuffer::RingBuffer"]},{"text":"impl UnwindSafe for Passwd","synthetic":true,"types":["uucore::features::entries::Passwd"]},{"text":"impl UnwindSafe for Group","synthetic":true,"types":["uucore::features::entries::Group"]},{"text":"impl UnwindSafe for VerbosityLevel","synthetic":true,"types":["uucore::features::perms::VerbosityLevel"]},{"text":"impl UnwindSafe for Verbosity","synthetic":true,"types":["uucore::features::perms::Verbosity"]},{"text":"impl UnwindSafe for IfFrom","synthetic":true,"types":["uucore::features::perms::IfFrom"]},{"text":"impl UnwindSafe for ChownExecutor","synthetic":true,"types":["uucore::features::perms::ChownExecutor"]},{"text":"impl UnwindSafe for ExitStatus","synthetic":true,"types":["uucore::features::process::ExitStatus"]},{"text":"impl UnwindSafe for Utmpx","synthetic":true,"types":["uucore::features::utmpx::Utmpx"]},{"text":"impl UnwindSafe for UtmpxIter","synthetic":true,"types":["uucore::features::utmpx::UtmpxIter"]},{"text":"impl UnwindSafe for BackupMode","synthetic":true,"types":["uucore::mods::backup_control::BackupMode"]},{"text":"impl UnwindSafe for BackupError","synthetic":true,"types":["uucore::mods::backup_control::BackupError"]},{"text":"impl<'a> UnwindSafe for HelpText<'a>","synthetic":true,"types":["uucore::mods::coreopts::HelpText"]},{"text":"impl<'a> UnwindSafe for CoreOptions<'a>","synthetic":true,"types":["uucore::mods::coreopts::CoreOptions"]},{"text":"impl<'a> UnwindSafe for Quoted<'a>","synthetic":true,"types":["uucore::mods::display::Quoted"]},{"text":"impl UnwindSafe for USimpleError","synthetic":true,"types":["uucore::mods::error::USimpleError"]},{"text":"impl UnwindSafe for UUsageError","synthetic":true,"types":["uucore::mods::error::UUsageError"]},{"text":"impl !UnwindSafe for UIoError","synthetic":true,"types":["uucore::mods::error::UIoError"]},{"text":"impl UnwindSafe for ExitCode","synthetic":true,"types":["uucore::mods::error::ExitCode"]},{"text":"impl UnwindSafe for Range","synthetic":true,"types":["uucore::mods::ranges::Range"]},{"text":"impl UnwindSafe for ParseSizeError","synthetic":true,"types":["uucore::parser::parse_size::ParseSizeError"]},{"text":"impl UnwindSafe for InvalidEncodingHandling","synthetic":true,"types":["uucore::InvalidEncodingHandling"]},{"text":"impl UnwindSafe for ConversionResult","synthetic":true,"types":["uucore::ConversionResult"]}];
if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/implementors/uucore/display/trait.Quotable.js b/implementors/uucore/display/trait.Quotable.js
new file mode 100644
index 000000000..d853d3b38
--- /dev/null
+++ b/implementors/uucore/display/trait.Quotable.js
@@ -0,0 +1,3 @@
+(function() {var implementors = {};
+implementors["uucore"] = [];
+if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/search-index.js b/search-index.js
index 605053a23..0317c440e 100644
--- a/search-index.js
+++ b/search-index.js
@@ -104,9 +104,9 @@ var searchIndex = JSON.parse('{\
"uu_basenc":{"doc":"","t":[5,5],"n":["uu_app","uumain"],"q":["uu_basenc",""],"d":["",""],"i":[0,0],"f":[[[],["app",3]],[[],["i32",15]]],"p":[]},\
"uu_cat":{"doc":"","t":[5,5],"n":["uu_app","uumain"],"q":["uu_cat",""],"d":["",""],"i":[0,0],"f":[[[],["app",3]],[[],["i32",15]]],"p":[]},\
"uu_chcon":{"doc":"","t":[0,5,5,7,7,7,7,7,7,7,0,0,0,7,7,7,7,7,7,7],"n":["options","uu_app","uumain","RANGE","RECURSIVE","REFERENCE","ROLE","TYPE","USER","VERBOSE","dereference","preserve_root","sym_links","DEREFERENCE","NO_DEREFERENCE","NO_PRESERVE_ROOT","PRESERVE_ROOT","FOLLOW_ARG_DIR_SYM_LINK","FOLLOW_DIR_SYM_LINKS","NO_FOLLOW_SYM_LINKS"],"q":["uu_chcon","","","uu_chcon::options","","","","","","","","","","uu_chcon::options::dereference","","uu_chcon::options::preserve_root","","uu_chcon::options::sym_links","",""],"d":["","","","","","","","","","","","","","","","","","","",""],"i":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"f":[null,[[],["app",3]],[[],["i32",15]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"p":[]},\
-"uu_chgrp":{"doc":"","t":[0,0,5,5,3,8,3,11,11,11,11,11,11,11,11,11,11,11,5,5,11,11,5,5,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,11,11,11,11,5,7,7,7,7,0,0,0,0,7,7,7,7,7,7,7,7,7,7,7],"n":["entries","options","uu_app","uumain","Group","Locate","Passwd","as_inner","as_inner","belongs_to","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","from","from","get_groups","get_groups_gnu","gid","gid","gid2grp","grp2gid","into","into","into_inner","into_inner","locate","locate","locate","locate","locate","name","name","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","uid","uid2usr","user_dir","user_info","user_passwd","user_shell","usr2uid","ARG_FILES","ARG_GROUP","RECURSIVE","REFERENCE","dereference","preserve_root","traverse","verbosity","DEREFERENCE","NO_DEREFERENCE","NO_PRESERVE","PRESERVE","EVERY","NO_TRAVERSE","TRAVERSE","CHANGES","QUIET","SILENT","VERBOSE"],"q":["uu_chgrp","","","","uu_chgrp::entries","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","uu_chgrp::options","","","","","","","","uu_chgrp::options::dereference","","uu_chgrp::options::preserve_root","","uu_chgrp::options::traverse","","","uu_chgrp::options::verbosity","","",""],"d":["Get password/group file entry","","","","","Fetch desired entry.","","","","This is a wrapper function for libc::getgrouplist.","","","","","","","","","From: …","The list of group IDs returned from GNU’s groups and GNU…","AKA group.gr_gid","AKA passwd.pw_gid","","","","","","","","","","","","AKA group.gr_name","AKA passwd.pw_name","","","","","","","","AKA passwd.pw_uid","","AKA passwd.pw_dir","AKA passwd.pw_gecos","AKA passwd.pw_passwd","AKA passwd.pw_shell","","","","","","","","","","","","","","","","","","","",""],"i":[0,0,0,0,0,0,0,1,2,2,1,2,1,2,2,2,1,2,0,0,1,2,0,0,1,2,1,2,3,1,1,2,2,1,2,2,1,2,1,2,1,2,2,0,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"f":[null,null,[[],["app",3]],[[],["i32",15]],null,null,null,[[],["group",3]],[[],["passwd",3]],[[],[["global",3],["u32",15],["vec",3]]],[[]],[[]],[[]],[[]],[[],["passwd",3]],[[]],[[]],[[]],[[],[["vec",3],["error",3],["result",4]]],[[["u32",15],["option",4]],[["vec",3],["error",3],["result",4]]],[[],["u32",15]],[[],["u32",15]],[[["u32",15]],[["string",3],["error",3],["result",4]]],[[["str",15]],[["result",4],["u32",15],["error",3]]],[[]],[[]],[[],["group",3]],[[],["passwd",3]],[[],[["result",4],["error",3]]],[[["str",15]],[["error",3],["group",3],["result",4]]],[[["u32",15]],[["error",3],["group",3],["result",4]]],[[["u32",15]],[["result",4],["error",3],["passwd",3]]],[[["str",15]],[["result",4],["error",3],["passwd",3]]],[[],[["cow",4],["str",15]]],[[],[["cow",4],["str",15]]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["u32",15]],[[["u32",15]],[["string",3],["error",3],["result",4]]],[[],[["cow",4],["str",15]]],[[],[["cow",4],["str",15]]],[[],[["cow",4],["str",15]]],[[],[["cow",4],["str",15]]],[[["str",15]],[["result",4],["u32",15],["error",3]]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"p":[[3,"Group"],[3,"Passwd"],[8,"Locate"]]},\
+"uu_chgrp":{"doc":"","t":[0,0,5,5,3,8,3,11,11,11,11,11,11,11,11,11,11,11,5,5,11,11,5,5,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,11,11,11,11,5,7,7,7,7,0,0,0,0,7,7,7,7,7,7,7,7,7,7,7],"n":["entries","options","uu_app","uumain","Group","Locate","Passwd","as_inner","as_inner","belongs_to","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","from","from","get_groups","get_groups_gnu","gid","gid","gid2grp","grp2gid","into","into","into_inner","into_inner","locate","locate","locate","locate","locate","name","name","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","uid","uid2usr","user_dir","user_info","user_passwd","user_shell","usr2uid","ARG_FILES","ARG_GROUP","RECURSIVE","REFERENCE","dereference","preserve_root","traverse","verbosity","DEREFERENCE","NO_DEREFERENCE","NO_PRESERVE","PRESERVE","EVERY","NO_TRAVERSE","TRAVERSE","CHANGES","QUIET","SILENT","VERBOSE"],"q":["uu_chgrp","","","","uu_chgrp::entries","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","uu_chgrp::options","","","","","","","","uu_chgrp::options::dereference","","uu_chgrp::options::preserve_root","","uu_chgrp::options::traverse","","","uu_chgrp::options::verbosity","","",""],"d":["Get password/group file entry","","","","","Fetch desired entry.","","","","This is a wrapper function for libc::getgrouplist.","","","","","","","","","From: …","The list of group IDs returned from GNU’s groups and GNU…","AKA group.gr_gid","AKA passwd.pw_gid","","","","","","","","","","","","AKA group.gr_name","AKA passwd.pw_name","","","","","","","","AKA passwd.pw_uid","","AKA passwd.pw_dir","AKA passwd.pw_gecos","AKA passwd.pw_passwd","AKA passwd.pw_shell","","","","","","","","","","","","","","","","","","","",""],"i":[0,0,0,0,0,0,0,1,2,2,1,2,1,2,2,2,1,2,0,0,1,2,0,0,1,2,1,2,3,1,1,2,2,1,2,2,1,2,1,2,1,2,2,0,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"f":[null,null,[[],["app",3]],[[],["i32",15]],null,null,null,[[],["group",3]],[[],["passwd",3]],[[],[["vec",3],["u32",15],["global",3]]],[[]],[[]],[[]],[[]],[[],["passwd",3]],[[]],[[]],[[]],[[],[["vec",3],["result",4],["error",3]]],[[["u32",15],["option",4]],[["vec",3],["result",4],["error",3]]],[[],["u32",15]],[[],["u32",15]],[[["u32",15]],[["string",3],["error",3],["result",4]]],[[["str",15]],[["result",4],["u32",15],["error",3]]],[[]],[[]],[[],["group",3]],[[],["passwd",3]],[[],[["result",4],["error",3]]],[[["str",15]],[["group",3],["error",3],["result",4]]],[[["u32",15]],[["group",3],["error",3],["result",4]]],[[["u32",15]],[["passwd",3],["error",3],["result",4]]],[[["str",15]],[["passwd",3],["error",3],["result",4]]],[[],[["str",15],["cow",4]]],[[],[["str",15],["cow",4]]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["u32",15]],[[["u32",15]],[["string",3],["error",3],["result",4]]],[[],[["str",15],["cow",4]]],[[],[["str",15],["cow",4]]],[[],[["str",15],["cow",4]]],[[],[["str",15],["cow",4]]],[[["str",15]],[["result",4],["u32",15],["error",3]]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"p":[[3,"Group"],[3,"Passwd"],[8,"Locate"]]},\
"uu_chmod":{"doc":"","t":[5,5,5,5],"n":["is_symlink","strip_minus_from_mode","uu_app","uumain"],"q":["uu_chmod","","",""],"d":["","","",""],"i":[0,0,0,0],"f":[[[["asref",8],["path",3]],["bool",15]],[[["vec",3]],["bool",15]],[[],["app",3]],[[],["i32",15]]],"p":[]},\
-"uu_chown":{"doc":"","t":[3,8,3,11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,5,5,3,8,3,5,5,5,5,10,5,5,7,7,7,0,0,0,0,7,7,7,7,7,7,7,7,7,7,7],"n":["Group","Locate","Passwd","as_inner","as_inner","belongs_to","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","entries","from","from","gid","gid","into","into","into_inner","into_inner","locate","locate","locate","locate","locate","name","name","options","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","uid","user_dir","user_info","user_passwd","user_shell","uu_app","uumain","Group","Locate","Passwd","get_groups","get_groups_gnu","gid2grp","grp2gid","locate","uid2usr","usr2uid","FROM","RECURSIVE","REFERENCE","dereference","preserve_root","traverse","verbosity","DEREFERENCE","NO_DEREFERENCE","NO_PRESERVE","PRESERVE","EVERY","NO_TRAVERSE","TRAVERSE","CHANGES","QUIET","SILENT","VERBOSE"],"q":["uu_chown","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","uu_chown::entries","","","","","","","","","","uu_chown::options","","","","","","","uu_chown::options::dereference","","uu_chown::options::preserve_root","","uu_chown::options::traverse","","","uu_chown::options::verbosity","","",""],"d":["","Fetch desired entry.","","","","This is a wrapper function for libc::getgrouplist.","","","","","","","Get password/group file entry","","","AKA group.gr_gid","AKA passwd.pw_gid","","","","","","","","","","AKA group.gr_name","AKA passwd.pw_name","","","","","","","","","AKA passwd.pw_uid","AKA passwd.pw_dir","AKA passwd.pw_gecos","AKA passwd.pw_passwd","AKA passwd.pw_shell","","","","Fetch desired entry.","","From: …","The list of group IDs returned from GNU’s groups and GNU…","","","","","","","","","","","","","","","","","","","","","","",""],"i":[0,0,0,1,2,2,1,2,1,2,2,2,0,1,2,1,2,1,2,1,2,3,1,1,2,2,1,2,0,2,1,2,1,2,1,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"f":[null,null,null,[[],["group",3]],[[],["passwd",3]],[[],[["u32",15],["vec",3],["global",3]]],[[]],[[]],[[]],[[]],[[],["passwd",3]],[[]],null,[[]],[[]],[[],["u32",15]],[[],["u32",15]],[[]],[[]],[[],["group",3]],[[],["passwd",3]],[[],[["result",4],["error",3]]],[[["str",15]],[["group",3],["result",4],["error",3]]],[[["u32",15]],[["group",3],["result",4],["error",3]]],[[["u32",15]],[["error",3],["passwd",3],["result",4]]],[[["str",15]],[["error",3],["passwd",3],["result",4]]],[[],[["str",15],["cow",4]]],[[],[["str",15],["cow",4]]],null,[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["u32",15]],[[],[["str",15],["cow",4]]],[[],[["str",15],["cow",4]]],[[],[["str",15],["cow",4]]],[[],[["str",15],["cow",4]]],[[],["app",3]],[[],["i32",15]],null,null,null,[[],[["error",3],["vec",3],["result",4]]],[[["u32",15],["option",4]],[["error",3],["vec",3],["result",4]]],[[["u32",15]],[["error",3],["result",4],["string",3]]],[[["str",15]],[["result",4],["u32",15],["error",3]]],[[],[["result",4],["error",3]]],[[["u32",15]],[["error",3],["result",4],["string",3]]],[[["str",15]],[["result",4],["u32",15],["error",3]]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"p":[[3,"Group"],[3,"Passwd"],[8,"Locate"]]},\
+"uu_chown":{"doc":"","t":[3,8,3,11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,5,5,3,8,3,5,5,5,5,10,5,5,7,7,7,0,0,0,0,7,7,7,7,7,7,7,7,7,7,7],"n":["Group","Locate","Passwd","as_inner","as_inner","belongs_to","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","entries","from","from","gid","gid","into","into","into_inner","into_inner","locate","locate","locate","locate","locate","name","name","options","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","uid","user_dir","user_info","user_passwd","user_shell","uu_app","uumain","Group","Locate","Passwd","get_groups","get_groups_gnu","gid2grp","grp2gid","locate","uid2usr","usr2uid","FROM","RECURSIVE","REFERENCE","dereference","preserve_root","traverse","verbosity","DEREFERENCE","NO_DEREFERENCE","NO_PRESERVE","PRESERVE","EVERY","NO_TRAVERSE","TRAVERSE","CHANGES","QUIET","SILENT","VERBOSE"],"q":["uu_chown","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","uu_chown::entries","","","","","","","","","","uu_chown::options","","","","","","","uu_chown::options::dereference","","uu_chown::options::preserve_root","","uu_chown::options::traverse","","","uu_chown::options::verbosity","","",""],"d":["","Fetch desired entry.","","","","This is a wrapper function for libc::getgrouplist.","","","","","","","Get password/group file entry","","","AKA group.gr_gid","AKA passwd.pw_gid","","","","","","","","","","AKA group.gr_name","AKA passwd.pw_name","","","","","","","","","AKA passwd.pw_uid","AKA passwd.pw_dir","AKA passwd.pw_gecos","AKA passwd.pw_passwd","AKA passwd.pw_shell","","","","Fetch desired entry.","","From: …","The list of group IDs returned from GNU’s groups and GNU…","","","","","","","","","","","","","","","","","","","","","","",""],"i":[0,0,0,1,2,2,1,2,1,2,2,2,0,1,2,1,2,1,2,1,2,3,1,1,2,2,1,2,0,2,1,2,1,2,1,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"f":[null,null,null,[[],["group",3]],[[],["passwd",3]],[[],[["u32",15],["vec",3],["global",3]]],[[]],[[]],[[]],[[]],[[],["passwd",3]],[[]],null,[[]],[[]],[[],["u32",15]],[[],["u32",15]],[[]],[[]],[[],["group",3]],[[],["passwd",3]],[[],[["result",4],["error",3]]],[[["str",15]],[["group",3],["result",4],["error",3]]],[[["u32",15]],[["group",3],["result",4],["error",3]]],[[["u32",15]],[["passwd",3],["error",3],["result",4]]],[[["str",15]],[["passwd",3],["error",3],["result",4]]],[[],[["str",15],["cow",4]]],[[],[["str",15],["cow",4]]],null,[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["u32",15]],[[],[["str",15],["cow",4]]],[[],[["str",15],["cow",4]]],[[],[["str",15],["cow",4]]],[[],[["str",15],["cow",4]]],[[],["app",3]],[[],["i32",15]],null,null,null,[[],[["result",4],["vec",3],["error",3]]],[[["u32",15],["option",4]],[["result",4],["vec",3],["error",3]]],[[["u32",15]],[["error",3],["result",4],["string",3]]],[[["str",15]],[["result",4],["u32",15],["error",3]]],[[],[["result",4],["error",3]]],[[["u32",15]],[["error",3],["result",4],["string",3]]],[[["str",15]],[["result",4],["u32",15],["error",3]]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"p":[[3,"Group"],[3,"Passwd"],[8,"Locate"]]},\
"uu_chroot":{"doc":"","t":[5,5],"n":["uu_app","uumain"],"q":["uu_chroot",""],"d":["",""],"i":[0,0],"f":[[[],["app",3]],[[],["i32",15]]],"p":[]},\
"uu_cksum":{"doc":"","t":[5,5],"n":["uu_app","uumain"],"q":["uu_cksum",""],"d":["",""],"i":[0,0],"f":[[[],["app",3]],[[],["i32",15]]],"p":[]},\
"uu_comm":{"doc":"","t":[5,5],"n":["uu_app","uumain"],"q":["uu_comm",""],"d":["",""],"i":[0,0],"f":[[[],["app",3]],[[],["i32",15]]],"p":[]},\
@@ -197,7 +197,7 @@ var searchIndex = JSON.parse('{\
"uu_who":{"doc":"","t":[5,5],"n":["uu_app","uumain"],"q":["uu_who",""],"d":["",""],"i":[0,0],"f":[[[],["app",3]],[[],["i32",15]]],"p":[]},\
"uu_whoami":{"doc":"","t":[5,5,5],"n":["exec","uu_app","uumain"],"q":["uu_whoami","",""],"d":["","",""],"i":[0,0,0],"f":[[[]],[[],["app",3]],[[],["i32",15]]],"p":[]},\
"uu_yes":{"doc":"","t":[5,5,5],"n":["exec","uu_app","uumain"],"q":["uu_yes","",""],"d":["","",""],"i":[0,0,0],"f":[[[],["result",6]],[[],["app",3]],[[],["i32",15]]],"p":[]},\
-"uucore":{"doc":"","t":[8,13,4,13,13,4,13,13,11,14,5,5,0,11,11,11,11,11,11,0,14,14,0,0,0,5,14,11,11,11,11,0,0,5,14,11,11,0,14,14,14,14,14,14,0,0,0,0,0,0,0,0,14,14,5,14,14,14,14,14,14,0,14,14,11,11,11,11,11,11,14,5,0,0,13,7,7,4,13,4,13,13,13,13,13,0,11,11,11,11,11,11,11,5,5,11,11,11,11,11,11,11,5,11,11,11,11,11,11,11,11,11,11,11,11,7,7,7,5,5,5,3,3,11,11,11,11,12,11,11,11,11,12,12,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,12,13,13,13,13,13,13,13,3,13,4,6,13,4,4,13,13,13,11,11,11,11,11,11,11,11,11,11,5,11,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,3,8,3,11,11,11,11,11,11,11,11,11,11,11,5,5,11,11,5,5,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,11,11,11,11,5,12,3,8,8,3,6,3,3,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,5,11,11,11,11,10,12,12,11,11,11,11,5,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,13,13,13,4,13,13,13,4,11,11,11,11,5,11,11,11,11,5,5,11,11,11,11,11,11,11,11,5,5,11,11,11,11,11,11,11,11,8,8,3,3,3,5,10,11,12,12,12,10,10,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,11,11,10,11,10,11,11,11,11,10,11,12,10,11,11,11,11,11,10,11,12,12,12,10,11,11,11,10,5,5,5,5,12,5,3,5,11,11,11,10,11,10,11,11,11,11,11,11,11,11,11,11,5,5,5,5,5,5,5,13,4,13,11,11,11,11,11,11,11,11,11,5,11,11,11,11,5,13,13,3,17,17,17,13,4,13,13,13,13,13,3,4,12,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,0,11,11,11,12,12,11,11,11,11,11,11,12,11,11,11,11,12,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,5,3,8,3,5,5,5,5,10,5,5,8,13,4,13,11,11,11,11,11,11,11,11,11,5,5,5,5,11,11,10,11,11,11,11,11,11,11,10,3,11,11,11,5,5,11,11,11,11,11,12,11,12,11,11,11,11,11,3,11,11,12,11,11,11,11,11,11,11,11,7,7,5,5,5,17,17,17,7,17,17,17,17,17,17,17,17,17,17,17,3,3,11,11,11,11,11,5,11,11,11,5,11,11,11,11,11,11,11,11,11,11,11,11,5,11,11,11,11,11,11,11,11,11,5,5],"n":["Args","Complete","ConversionResult","ConvertLossy","Ignore","InvalidEncodingHandling","Lossy","Panic","accept_any","app","args","args_os","backup_control","borrow","borrow","borrow_mut","borrow_mut","collect_str","collect_str_lossy","coreopts","crash","crash_if_err","encoding","entries","error","execution_phrase","exit","expect_complete","expect_lossy","from","from","fs","fsext","get_utility_is_second_arg","has","into","into","mode","msg_expects_no_more_than_one_of","msg_expects_one_of","msg_invalid_input","msg_invalid_opt_use","msg_opt_invalid_should_be","msg_opt_only_usable_if","os","panic","parse_size","parse_time","perms","process","ranges","ringbuffer","safe_write","safe_writeln","set_utility_is_second_arg","show","show_error","show_error_custom_description","show_if_err","show_usage_error","show_warning","signals","snippet_list_join","snippet_list_join_oxford_comma","try_from","try_from","try_into","try_into","type_id","type_id","uio_error","util_name","utmpx","version_cmp","AmbiguousArgument","BACKUP_CONTROL_LONG_HELP","BACKUP_CONTROL_VALUES","BackupError","BackupImpossible","BackupMode","ExistingBackup","InvalidArgument","NoBackup","NumberedBackup","SimpleBackup","arguments","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","code","determine_backup_mode","determine_backup_suffix","eq","eq","fmt","fmt","fmt","from","from","get_backup_path","into","into","ne","to_owned","to_string","try_from","try_from","try_into","try_into","type_id","type_id","usage","OPT_BACKUP","OPT_BACKUP_NO_ARG","OPT_SUFFIX","backup","backup_no_args","suffix","CoreOptions","HelpText","borrow","borrow","borrow_mut","borrow_mut","display_usage","from","from","into","into","long_help","name","new","optflag","optflagmulti","optflagopt","optmulti","optopt","parse","summary","syntax","try_from","try_from","try_into","try_into","type_id","type_id","usage","version","Base16","Base2Lsbf","Base2Msbf","Base32","Base32Hex","Base64","Base64Url","Data","Decode","DecodeError","DecodeResult","DecodeZ85","EncodeError","Format","Io","Z85","Z85InputLenNotMultipleOf4","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","decode","decode","encode","encode","fmt","fmt","from","from","from","from","from","from","from","ignore_garbage","into","into","into","into","line_wrap","new","source","to_owned","to_string","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","wrap_print","wrap_write","Group","Locate","Passwd","as_inner","as_inner","belongs_to","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","from","from","get_groups","get_groups_gnu","gid","gid","gid2grp","grp2gid","into","into","into_inner","into_inner","locate","locate","locate","locate","locate","name","name","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","uid","uid2usr","user_dir","user_info","user_passwd","user_shell","usr2uid","0","ExitCode","FromIo","UError","UIoError","UResult","USimpleError","UUsageError","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","code","code","code","code","code","code","code","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","get_exit_code","into","into","into","into","map_err_context","message","message","new","new","new","new","set_exit_code","strip_errno","to_string","to_string","to_string","to_string","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","usage","usage","usage","Existing","Logical","Missing","MissingHandling","None","Normal","Physical","ResolveMode","borrow","borrow","borrow_mut","borrow_mut","canonicalize","clone","clone","clone_into","clone_into","display_permissions","display_permissions_unix","eq","eq","fmt","fmt","from","from","into","into","normalize_path","resolve_relative_path","to_owned","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","BirthTime","FsMeta","FsUsage","MountInfo","StatFs","StatFs","avail_blocks","avail_blocks","bavail","bavail_top_bit_set","bfree","birth","block_size","block_size","blocks","blocksize","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","dev_id","dev_name","dummy","eq","f_bavail","f_bavail","f_bfree","f_bfree","f_blocks","f_blocks","f_bsize","f_bsize","f_ffree","f_ffree","f_files","f_files","f_frsize","f_frsize","f_fsid","f_fsid","f_namelen","f_namelen","f_type","f_type","ffree","files","fmt","fmt","fmt","free_blocks","free_blocks","free_file_nodes","free_file_nodes","from","from","from","fs_type","fs_type","fs_type","fsid","fsid","hash","into","into","into","io_size","io_size","mount_dir","mount_option","mount_root","namelen","namelen","ne","new","pretty_birth","pretty_filetype","pretty_fstype","pretty_time","read_fs_list","remote","statfs","statfs_fn","statfs_fn","to_owned","to_owned","to_owned","total_blocks","total_blocks","total_file_nodes","total_file_nodes","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","get_umask","parse_mode","parse_numeric","parse_symbolic","is_wsl_1","is_wsl_2","mute_sigpipe_panic","ParseFailure","ParseSizeError","SizeTooBig","borrow","borrow_mut","description","eq","fmt","fmt","from","into","ne","parse_size","to_string","try_from","try_into","type_id","from_str","All","Changes","ChownExecutor","FTS_COMFOLLOW","FTS_LOGICAL","FTS_PHYSICAL","Group","IfFrom","Normal","Silent","User","UserGroup","Verbose","Verbosity","VerbosityLevel","bit_flag","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","dereference","dest_gid","dest_uid","entries","eq","eq","exec","files","filter","fmt","fmt","from","from","from","from","groups_only","into","into","into","into","level","ne","preserve_root","recursive","to_owned","to_owned","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","verbosity","wrap_chown","Group","Locate","Passwd","get_groups","get_groups_gnu","gid2grp","grp2gid","locate","uid2usr","usr2uid","ChildExt","Code","ExitStatus","Signal","borrow","borrow_mut","clone","clone_into","code","eq","fmt","fmt","from","getegid","geteuid","getgid","getuid","into","ne","send_signal","signal","success","to_owned","to_string","try_from","try_into","type_id","wait_or_timeout","Range","borrow","borrow_mut","cmp","complement","contain","eq","fmt","from","from_list","from_str","high","into","low","ne","partial_cmp","try_from","try_into","type_id","RingBuffer","borrow","borrow_mut","data","from","from_iter","into","new","push_back","try_from","try_into","type_id","ALL_SIGNALS","DEFAULT_SIGNAL","is_signal","signal_by_name_or_value","signal_name_by_value","ACCOUNTING","BOOT_TIME","DEAD_PROCESS","DEFAULT_FILE","EMPTY","INIT_PROCESS","LOGIN_PROCESS","NEW_TIME","OLD_TIME","RUN_LVL","USER_PROCESS","UT_HOSTSIZE","UT_IDSIZE","UT_LINESIZE","UT_NAMESIZE","Utmpx","UtmpxIter","borrow","borrow","borrow_mut","borrow_mut","canon_host","endutxent","exit_status","from","from","getutxent","host","into","into","into_inner","into_iter","is_user_process","iter_all_records","login_time","next","pid","read_from","record_type","setutxent","terminal_suffix","try_from","try_from","try_into","try_into","tty_device","type_id","type_id","user","utmpxname","version_cmp"],"q":["uucore","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","uucore::backup_control","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","uucore::backup_control::arguments","","","","","","uucore::coreopts","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","uucore::encoding","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","uucore::entries","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","uucore::error","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","uucore::fs","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","uucore::fsext","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","uucore::mode","","","","uucore::os","","uucore::panic","uucore::parse_size","","","","","","","","","","","","","","","","","uucore::parse_time","uucore::perms","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","uucore::perms::entries","","","","","","","","","","uucore::process","","","","","","","","","","","","","","","","","","","","","","","","","","","","uucore::ranges","","","","","","","","","","","","","","","","","","","uucore::ringbuffer","","","","","","","","","","","","uucore::signals","","","","","uucore::utmpx","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","uucore::version_cmp"],"d":["","","","","","","","","","","","","Implement GNU-style backup functionality.","","","","","Converts each iterator item to a String and collects …","convenience function for a more slim interface","","Display the provided error message, then exit() with the …","Unwraps the Result. Instead of panicking, it exists the …","","Get password/group file entry","All utils return exit with an exit code. Usually, the …","Derive the complete execution phrase for “usage”.","Calls exit() with the provided exit code.","","","","","Set of functions to manage files and symlinks","Set of functions to manage file systems","","","","","Set of functions to parse modes","","","","","","","","","","","Common functions to manage permissions","Set of functions to manage IDs","","A fixed-size ring buffer.","","","","","Show an error to stderr in a similar style to GNU …","Show a warning to stderr in a similar style to GNU …","","Show a bad invocation help message in a similar style to …","","","","","","","","","","","Shorthand to construct [UIoError]-instances.","Derive the utility name.","Aims to provide platform-independent methods to obtain …","","An ambiguous argument (e.g. ‘n’) was given as backup …","","","Backup error types.","Currently unused","Available backup modes.","Argument ‘existing’, ‘nil’","An invalid argument (e.g. ‘foo’) was given as backup …","Argument ‘none’, ‘off’","Argument ‘numbered’, ‘t’","Argument ‘simple’, ‘never’","Arguments for backup-related functionality.","","","","","","","","Determine the “mode” for the backup operation to …","Obtain the suffix to use for a backup.","","","","","","","","","","","","","","","","","","","","","","","","‘–backup’ argument","‘-b’ argument","‘-S, –suffix’ argument","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Fetch desired entry.","","","","This is a wrapper function for libc::getgrouplist.","","","","","","","","","From: …","The list of group IDs returned from GNU’s groups and GNU…","AKA group.gr_gid","AKA passwd.pw_gid","","","","","","","","","","","","AKA group.gr_name","AKA passwd.pw_name","","","","","","","","AKA passwd.pw_uid","","AKA passwd.pw_dir","AKA passwd.pw_gecos","AKA passwd.pw_passwd","AKA passwd.pw_shell","","","A special error type that does not print any message when …","Enables the conversion from [std::io::Error] to [UError] …","Custom errors defined by the utils and uucore.","Wrapper type around [std::io::Error].","Result type that should be returned by all utils.","A simple error type with an exit code and a message that …","","","","","","","","","","Error code of a custom error.","Error code of a custom error.","","","","","","","","","","","","","","","","","","Get the last exit code set with [set_exit_code]. The …","","","","","","","","","","","","Set the exit code for the program if uumain returns Ok(())…","Strip the trailing “ (os error XX)“ from io error …","","","","","","","","","","","","","","","","","Print usage help to a custom error.","Print usage help to a custom error.","","Resolve symbolic links, ignoring errors on the final …","Resolve ‘..’ elements before symlinks","Resolve symbolic links, ignoring errors on the non-final …","Controls how symbolic links should be handled when …","Do not resolve any symbolic links.","Return an error if any part of the path is missing.","Resolve symlinks as encountered when processing the path","Controls when symbolic links are resolved","","","","","Return the canonical, absolute form of a path.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Read file system list.","","","","","","","","","","","","","","","","","","","","","","","","","Test if the program is running under WSL","","","","","","","","","","","","","","","Parse a size string into a number of bytes.","","","","","","","","","","","","","","","","","","","","The various level of verbosity","","","","","","","","","","","","","","","","","Get password/group file entry","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Perform the change of owner on a path with the various …","","Fetch desired entry.","","From: …","The list of group IDs returned from GNU’s groups and GNU…","","","","","","Missing methods for Child objects","","","","","","","","","","","","","getegid() returns the effective group ID of the calling …","geteuid() returns the effective user ID of the calling …","getgid() returns the real group ID of the calling process.","getuid() returns the real user ID of the calling process.","","","Send a signal to a Child process.","","","","","","","","Wait for a process to finish or return after the …","","","","","","Test if at least one of the given Ranges contain the …","","","","","","","","","","","","","","A fixed-size ring buffer backed by a VecDeque.","","","","","","","","Append a value to the end of the ring buffer.","","","","","","","","","","","","","","","","","","","","","","","","","Iterator of login records","","","","","Canonicalize host name using DNS","","A.K.A. ut.ut_exit","","","","A.K.A. ut.ut_host","","","Consumes the Utmpx, returning the underlying C struct …","","","","A.K.A. ut.ut_tv","","A.K.A. ut.ut_pid","Sets the name of the utmpx-format file for the other …","A.K.A. ut.ut_type","","A.K.A. ut.ut_id","","","","","A.K.A. ut.ut_line","","","A.K.A. ut.ut_user","",""],"i":[0,1,0,2,2,0,1,2,1,0,0,0,0,2,1,2,1,3,3,0,0,0,0,0,0,0,0,1,1,2,1,0,0,0,0,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,2,1,2,1,0,0,0,0,4,0,0,0,4,0,5,4,5,5,5,0,5,4,5,4,5,5,4,0,0,5,4,5,4,4,5,4,0,5,4,4,5,4,5,4,5,4,5,4,4,0,0,0,0,0,0,0,0,6,7,6,7,6,6,7,6,7,6,6,7,7,7,7,7,7,7,6,6,6,7,6,7,6,7,7,6,8,8,8,8,8,8,8,0,9,0,0,9,0,0,9,8,10,10,11,9,8,10,11,9,8,8,8,0,11,0,11,9,9,10,11,9,9,9,9,8,11,10,11,9,8,11,11,9,8,9,10,11,9,8,10,11,9,8,10,11,9,8,0,0,0,0,0,12,13,13,12,13,12,13,13,13,12,13,0,0,12,13,0,0,12,13,12,13,14,12,12,13,13,12,13,13,12,13,12,13,12,13,13,0,13,13,13,13,0,15,0,0,0,0,0,0,0,16,17,18,15,16,17,18,15,19,19,16,17,15,16,17,16,16,17,17,18,18,15,15,16,17,18,15,0,16,17,18,15,20,16,17,16,17,18,15,0,0,16,17,18,15,16,17,18,15,16,17,18,15,16,17,18,15,19,19,17,21,22,21,0,22,21,22,0,21,22,21,22,0,21,22,21,22,0,0,21,22,21,22,21,22,21,22,0,0,21,22,21,22,21,22,21,22,0,0,0,0,0,0,23,24,25,25,25,26,23,24,25,25,27,25,24,27,25,24,27,25,24,27,25,24,27,27,27,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,25,27,25,24,23,24,23,24,27,25,24,23,24,27,23,24,24,27,25,24,23,24,27,27,27,23,24,24,25,26,0,0,0,0,27,0,0,0,27,25,24,23,24,23,24,27,25,24,27,25,24,27,25,24,0,0,0,0,0,0,0,28,0,28,28,28,28,28,28,28,28,28,28,0,28,28,28,28,0,29,30,0,0,0,0,29,0,30,30,29,29,30,0,0,31,29,31,30,32,29,31,30,32,30,32,30,32,31,31,31,0,30,32,31,31,31,30,32,29,31,30,32,32,29,31,30,32,32,32,31,31,30,32,29,31,30,32,29,31,30,32,29,31,30,32,31,0,0,0,0,0,0,0,0,14,0,0,0,33,0,33,33,33,33,33,33,33,33,33,33,0,0,0,0,33,33,34,33,33,33,33,33,33,33,34,0,35,35,35,0,0,35,35,35,35,35,35,35,35,35,35,35,35,35,0,36,36,36,36,36,36,36,36,36,36,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,38,37,38,37,0,37,37,38,0,37,37,38,37,38,37,37,37,38,37,38,37,0,37,37,38,37,38,37,37,38,37,0,0],"f":[null,null,null,null,null,null,null,null,[[],[["string",3],["vec",3]]],null,[[]],[[]],null,[[]],[[]],[[]],[[]],[[["invalidencodinghandling",4]],["conversionresult",4]],[[],["conversionresult",4]],null,null,null,null,null,null,[[],["string",3]],null,[[["str",15]],[["string",3],["vec",3]]],[[["str",15]],[["string",3],["vec",3]]],[[]],[[]],null,null,[[],["bool",15]],null,[[]],[[]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],null,null,null,null,null,null,null,null,null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],null,[[],["string",3]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[],["backupmode",4]],[[]],[[],["i32",15]],[[["argmatches",3]],[["uresult",6],["backupmode",4]]],[[["argmatches",3]],["string",3]],[[["backupmode",4]],["bool",15]],[[["backuperror",4]],["bool",15]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[["path",3],["backupmode",4],["str",15]],[["pathbuf",3],["option",4]]],[[]],[[]],[[["backuperror",4]],["bool",15]],[[]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["bool",15]],null,null,null,[[],["arg",3]],[[],["arg",3]],[[],["arg",3]],null,null,[[]],[[]],[[]],[[]],null,[[]],[[]],[[]],[[]],null,null,[[["helptext",3]]],[[["str",15]],["coreoptions",3]],[[["str",15]],["coreoptions",3]],[[["str",15]],["coreoptions",3]],[[["str",15]],["coreoptions",3]],[[["str",15]],["coreoptions",3]],[[["vec",3],["string",3]],["matches",3]],null,null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[["str",15]],["string",3]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["format",4]],[[]],[[["format",4]],["decoderesult",6]],[[],["decoderesult",6]],[[["format",4]],[["result",4],["encodeerror",4],["string",3]]],[[],[["result",4],["encodeerror",4],["string",3]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[["error",3]]],[[["decodeerror",4]]],[[["decodeerror",3]]],[[]],[[]],[[["bool",15]]],[[]],[[]],[[]],[[]],[[["usize",15]]],[[["format",4]]],[[],[["error",8],["option",4]]],[[]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[["data",3],["string",3]]],[[["write",8],["usize",15],["string",3]],["result",6]],null,null,null,[[],["group",3]],[[],["passwd",3]],[[],[["gid_t",6],["vec",3]]],[[]],[[]],[[]],[[]],[[],["passwd",3]],[[]],[[]],[[]],[[],[["vec",3],["ioresult",6]]],[[["u32",15],["option",4]],[["vec",3],["ioresult",6]]],[[],["gid_t",6]],[[],["gid_t",6]],[[["gid_t",6]],[["string",3],["ioresult",6]]],[[["str",15]],[["gid_t",6],["ioresult",6]]],[[]],[[]],[[],["group",3]],[[],["passwd",3]],[[],["ioresult",6]],[[["str",15]],["ioresult",6]],[[["gid_t",6]],["ioresult",6]],[[["uid_t",6]],["ioresult",6]],[[["str",15]],["ioresult",6]],[[],[["str",15],["cow",4]]],[[],[["str",15],["cow",4]]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["uid_t",6]],[[["uid_t",6]],[["string",3],["ioresult",6]]],[[],[["str",15],["cow",4]]],[[],[["str",15],["cow",4]]],[[],[["str",15],["cow",4]]],[[],[["str",15],["cow",4]]],[[["str",15]],[["ioresult",6],["uid_t",6]]],null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["i32",15]],[[],["i32",15]],[[],["i32",15]],[[],["i32",15]],[[],["i32",15]],null,null,[[["formatter",3]],[["error",3],["result",4]]],[[["formatter",3]],["result",6]],[[["formatter",3]],[["error",3],["result",4]]],[[["formatter",3]],["result",6]],[[["formatter",3]],[["error",3],["result",4]]],[[["formatter",3]],["result",6]],[[["formatter",3]],[["error",3],["result",4]]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[],["i32",15]],[[]],[[]],[[]],[[]],[[]],null,null,[[["into",8],["i32",15],["string",3]],[["uerror",8],["box",3]]],[[["into",8],["i32",15],["string",3]],[["uerror",8],["box",3]]],[[["errorkind",4],["into",8],["string",3]],[["uerror",8],["box",3]]],[[["i32",15]],[["uerror",8],["box",3]]],[[["i32",15]]],[[["error",3]],["string",3]],[[],["string",3]],[[],["string",3]],[[],["string",3]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["bool",15]],[[],["bool",15]],[[],["bool",15]],null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[["resolvemode",4],["path",3],["asref",8],["missinghandling",4]],[["ioresult",6],["pathbuf",3]]],[[],["missinghandling",4]],[[],["resolvemode",4]],[[]],[[]],[[["bool",15],["metadata",3]],["string",3]],[[["bool",15],["mode_t",6]],["string",3]],[[["missinghandling",4]],["bool",15]],[[["resolvemode",4]],["bool",15]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[["path",3]],["pathbuf",3]],[[["path",3]],[["cow",4],["path",3]]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],null,null,null,null,null,[[],["i32",15]],[[],["u64",15]],[[],["u64",15]],null,null,null,[[],["string",3]],[[],["i64",15]],[[],["i64",15]],null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[],["mountinfo",3]],[[],["fsusage",3]],[[],["statfs",3]],[[]],[[]],[[]],null,null,null,[[["statfs",3]],["bool",15]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],[["error",3],["result",4]]],[[],["u64",15]],[[],["u64",15]],[[],["u64",15]],[[],["u64",15]],[[]],[[]],[[]],[[],["i64",15]],[[],["i64",15]],null,[[],["u64",15]],[[],["u64",15]],[[]],[[]],[[]],[[]],[[],["u64",15]],[[],["u64",15]],null,null,null,[[],["u64",15]],[[],["u64",15]],[[["statfs",3]],["bool",15]],[[["statfs",3]],["fsusage",3]],[[],["string",3]],[[["u64",15],["mode_t",6]],["str",15]],[[["i64",15]],[["cow",4],["str",15]]],[[["i64",15]],["string",3]],[[],[["vec",3],["mountinfo",3]]],null,[[["asref",8],["path",3]],[["statfs",3],["string",3],["result",4]]],null,[[],["i32",15]],[[]],[[]],[[]],[[],["u64",15]],[[],["u64",15]],[[],["u64",15]],[[],["u64",15]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["u32",15]],[[["str",15]],[["string",3],["result",4],["mode_t",6]]],[[["u32",15],["str",15],["bool",15]],[["u32",15],["result",4],["string",3]]],[[["u32",15],["str",15],["bool",15]],[["u32",15],["result",4],["string",3]]],[[],["bool",15]],[[],["bool",15]],[[]],null,null,null,[[]],[[]],[[],["str",15]],[[["parsesizeerror",4]],["bool",15]],[[["formatter",3]],["result",6]],[[["formatter",3]],[["result",4],["error",3]]],[[]],[[]],[[["parsesizeerror",4]],["bool",15]],[[["str",15]],[["parsesizeerror",4],["usize",15],["result",4]]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[["str",15]],[["string",3],["result",4],["duration",3]]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["verbositylevel",4]],[[],["verbosity",3]],[[]],[[]],null,null,null,null,[[["verbositylevel",4]],["bool",15]],[[["verbosity",3]],["bool",15]],[[],["uresult",6]],null,null,[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],null,[[]],[[]],[[]],[[]],null,[[["verbosity",3]],["bool",15]],null,null,[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],null,[[["metadata",3],["bool",15],["path",3],["asref",8],["u32",15],["option",4],["verbosity",3]],[["result",4],["string",3]]],null,null,null,[[],[["vec",3],["ioresult",6]]],[[["u32",15],["option",4]],[["vec",3],["ioresult",6]]],[[["gid_t",6]],[["string",3],["ioresult",6]]],[[["str",15]],[["gid_t",6],["ioresult",6]]],[[],["ioresult",6]],[[["uid_t",6]],[["string",3],["ioresult",6]]],[[["str",15]],[["ioresult",6],["uid_t",6]]],null,null,null,null,[[]],[[]],[[],["exitstatus",4]],[[]],[[],[["option",4],["i32",15]]],[[["exitstatus",4]],["bool",15]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[],["gid_t",6]],[[],["uid_t",6]],[[],["gid_t",6]],[[],["uid_t",6]],[[]],[[["exitstatus",4]],["bool",15]],[[["usize",15]],["result",6]],[[],[["option",4],["i32",15]]],[[],["bool",15]],[[]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[["duration",3]],[["result",6],["option",4]]],null,[[]],[[]],[[["range",3]],["ordering",4]],[[],[["vec",3],["range",3]]],[[["usize",15]],["bool",15]],[[["range",3]],["bool",15]],[[["formatter",3]],["result",6]],[[]],[[["str",15]],[["result",4],["vec",3],["string",3]]],[[["str",15]],[["str",15],["range",3],["result",4]]],null,[[]],null,[[["range",3]],["bool",15]],[[["range",3]],[["option",4],["ordering",4]]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],null,[[]],[[]],null,[[]],[[["usize",15]],["ringbuffer",3]],[[]],[[["usize",15]],["ringbuffer",3]],[[],["option",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],null,null,[[["usize",15]],["bool",15]],[[["str",15]],[["usize",15],["option",4]]],[[["usize",15]],[["str",15],["option",4]]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[],[["string",3],["ioresult",6]]],[[]],[[]],[[]],[[]],[[]],[[],["string",3]],[[]],[[]],[[],["utmpx",3]],[[]],[[],["bool",15]],[[],["utmpxiter",3]],[[],["tm",3]],[[],["option",4]],[[],["i32",15]],[[["str",15]]],[[],["i16",15]],[[]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["string",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["string",3]],[[],["i32",15]],[[["str",15]],["ordering",4]]],"p":[[4,"ConversionResult"],[4,"InvalidEncodingHandling"],[8,"Args"],[4,"BackupError"],[4,"BackupMode"],[3,"HelpText"],[3,"CoreOptions"],[4,"Format"],[4,"DecodeError"],[4,"EncodeError"],[3,"Data"],[3,"Group"],[3,"Passwd"],[8,"Locate"],[3,"ExitCode"],[3,"USimpleError"],[3,"UUsageError"],[3,"UIoError"],[8,"UError"],[8,"FromIo"],[4,"MissingHandling"],[4,"ResolveMode"],[8,"FsMeta"],[3,"statfs_fn"],[3,"FsUsage"],[8,"BirthTime"],[3,"MountInfo"],[4,"ParseSizeError"],[4,"IfFrom"],[4,"VerbosityLevel"],[3,"ChownExecutor"],[3,"Verbosity"],[4,"ExitStatus"],[8,"ChildExt"],[3,"Range"],[3,"RingBuffer"],[3,"Utmpx"],[3,"UtmpxIter"]]},\
+"uucore":{"doc":"","t":[8,13,4,13,13,4,13,13,11,14,5,5,0,11,11,11,11,11,11,0,14,14,0,0,0,0,5,14,11,11,11,11,0,0,5,14,11,11,0,14,14,14,14,14,14,0,0,0,0,0,0,0,0,14,14,5,14,14,14,14,14,14,0,14,14,11,11,11,11,11,11,14,5,0,0,13,7,7,4,13,4,13,13,13,13,13,0,11,11,11,11,11,11,11,5,5,11,11,11,11,11,11,11,5,11,11,11,11,11,11,11,11,11,11,11,11,7,7,7,5,5,5,3,3,11,11,11,11,12,11,11,11,11,12,12,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,12,8,3,11,11,11,11,11,11,11,11,11,11,5,10,11,11,11,11,11,13,13,13,13,13,13,13,3,13,4,6,13,4,4,13,13,13,11,11,11,11,11,11,11,11,11,11,5,11,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,3,8,3,11,11,11,11,11,11,11,11,11,11,11,5,5,11,11,5,5,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,11,11,11,11,5,12,3,8,8,3,6,3,3,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,5,11,11,11,11,10,12,12,11,11,11,11,5,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,13,13,13,4,13,13,13,4,11,11,11,11,5,11,11,11,11,5,5,11,11,11,11,11,11,11,11,5,5,11,11,11,11,11,11,11,11,8,8,3,3,3,5,10,11,12,12,12,10,10,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,11,11,10,11,10,11,11,11,11,10,11,12,10,11,11,11,11,11,10,11,12,12,12,10,11,11,11,10,5,5,5,5,12,5,3,5,11,11,11,10,11,10,11,11,11,11,11,11,11,11,11,11,5,5,5,5,5,5,5,13,4,13,11,11,11,11,11,11,11,11,11,5,11,11,11,11,5,13,13,3,17,17,17,13,4,13,13,13,13,13,3,4,12,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,0,11,11,11,12,12,11,11,11,11,11,11,12,11,11,11,11,12,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,5,3,8,3,5,5,5,5,10,5,5,8,13,4,13,11,11,11,11,11,11,11,11,11,5,5,5,5,11,11,10,11,11,11,11,11,11,11,10,3,11,11,11,5,5,11,11,11,11,11,12,11,12,11,11,11,11,11,3,11,11,12,11,11,11,11,11,11,11,11,7,7,5,5,5,17,17,17,7,17,17,17,17,17,17,17,17,17,17,17,3,3,11,11,11,11,11,5,11,11,11,5,11,11,11,11,11,11,11,11,11,11,11,11,5,11,11,11,11,11,11,11,11,11,5,5],"n":["Args","Complete","ConversionResult","ConvertLossy","Ignore","InvalidEncodingHandling","Lossy","Panic","accept_any","app","args","args_os","backup_control","borrow","borrow","borrow_mut","borrow_mut","collect_str","collect_str_lossy","coreopts","crash","crash_if_err","display","encoding","entries","error","execution_phrase","exit","expect_complete","expect_lossy","from","from","fs","fsext","get_utility_is_second_arg","has","into","into","mode","msg_expects_no_more_than_one_of","msg_expects_one_of","msg_invalid_input","msg_invalid_opt_use","msg_opt_invalid_should_be","msg_opt_only_usable_if","os","panic","parse_size","parse_time","perms","process","ranges","ringbuffer","safe_write","safe_writeln","set_utility_is_second_arg","show","show_error","show_error_custom_description","show_if_err","show_usage_error","show_warning","signals","snippet_list_join","snippet_list_join_oxford_comma","try_from","try_from","try_into","try_into","type_id","type_id","uio_error","util_name","utmpx","version_cmp","AmbiguousArgument","BACKUP_CONTROL_LONG_HELP","BACKUP_CONTROL_VALUES","BackupError","BackupImpossible","BackupMode","ExistingBackup","InvalidArgument","NoBackup","NumberedBackup","SimpleBackup","arguments","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","code","determine_backup_mode","determine_backup_suffix","eq","eq","fmt","fmt","fmt","from","from","get_backup_path","into","into","ne","to_owned","to_string","try_from","try_from","try_into","try_into","type_id","type_id","usage","OPT_BACKUP","OPT_BACKUP_NO_ARG","OPT_SUFFIX","backup","backup_no_args","suffix","CoreOptions","HelpText","borrow","borrow","borrow_mut","borrow_mut","display_usage","from","from","into","into","long_help","name","new","optflag","optflagmulti","optflagopt","optmulti","optopt","parse","summary","syntax","try_from","try_from","try_into","try_into","type_id","type_id","usage","version","Quotable","Quoted","borrow","borrow_mut","clone","clone_into","fmt","fmt","from","into","maybe_quote","maybe_quote","println_verbatim","quote","to_owned","to_string","try_from","try_into","type_id","Base16","Base2Lsbf","Base2Msbf","Base32","Base32Hex","Base64","Base64Url","Data","Decode","DecodeError","DecodeResult","DecodeZ85","EncodeError","Format","Io","Z85","Z85InputLenNotMultipleOf4","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","decode","decode","encode","encode","fmt","fmt","from","from","from","from","from","from","from","ignore_garbage","into","into","into","into","line_wrap","new","source","to_owned","to_string","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","wrap_print","wrap_write","Group","Locate","Passwd","as_inner","as_inner","belongs_to","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","from","from","get_groups","get_groups_gnu","gid","gid","gid2grp","grp2gid","into","into","into_inner","into_inner","locate","locate","locate","locate","locate","name","name","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","uid","uid2usr","user_dir","user_info","user_passwd","user_shell","usr2uid","0","ExitCode","FromIo","UError","UIoError","UResult","USimpleError","UUsageError","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","code","code","code","code","code","code","code","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","get_exit_code","into","into","into","into","map_err_context","message","message","new","new","new","new","set_exit_code","strip_errno","to_string","to_string","to_string","to_string","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","usage","usage","usage","Existing","Logical","Missing","MissingHandling","None","Normal","Physical","ResolveMode","borrow","borrow","borrow_mut","borrow_mut","canonicalize","clone","clone","clone_into","clone_into","display_permissions","display_permissions_unix","eq","eq","fmt","fmt","from","from","into","into","normalize_path","resolve_relative_path","to_owned","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","BirthTime","FsMeta","FsUsage","MountInfo","StatFs","StatFs","avail_blocks","avail_blocks","bavail","bavail_top_bit_set","bfree","birth","block_size","block_size","blocks","blocksize","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","dev_id","dev_name","dummy","eq","f_bavail","f_bavail","f_bfree","f_bfree","f_blocks","f_blocks","f_bsize","f_bsize","f_ffree","f_ffree","f_files","f_files","f_frsize","f_frsize","f_fsid","f_fsid","f_namelen","f_namelen","f_type","f_type","ffree","files","fmt","fmt","fmt","free_blocks","free_blocks","free_file_nodes","free_file_nodes","from","from","from","fs_type","fs_type","fs_type","fsid","fsid","hash","into","into","into","io_size","io_size","mount_dir","mount_option","mount_root","namelen","namelen","ne","new","pretty_birth","pretty_filetype","pretty_fstype","pretty_time","read_fs_list","remote","statfs","statfs_fn","statfs_fn","to_owned","to_owned","to_owned","total_blocks","total_blocks","total_file_nodes","total_file_nodes","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","get_umask","parse_mode","parse_numeric","parse_symbolic","is_wsl_1","is_wsl_2","mute_sigpipe_panic","ParseFailure","ParseSizeError","SizeTooBig","borrow","borrow_mut","description","eq","fmt","fmt","from","into","ne","parse_size","to_string","try_from","try_into","type_id","from_str","All","Changes","ChownExecutor","FTS_COMFOLLOW","FTS_LOGICAL","FTS_PHYSICAL","Group","IfFrom","Normal","Silent","User","UserGroup","Verbose","Verbosity","VerbosityLevel","bit_flag","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","dereference","dest_gid","dest_uid","entries","eq","eq","exec","files","filter","fmt","fmt","from","from","from","from","groups_only","into","into","into","into","level","ne","preserve_root","recursive","to_owned","to_owned","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","verbosity","wrap_chown","Group","Locate","Passwd","get_groups","get_groups_gnu","gid2grp","grp2gid","locate","uid2usr","usr2uid","ChildExt","Code","ExitStatus","Signal","borrow","borrow_mut","clone","clone_into","code","eq","fmt","fmt","from","getegid","geteuid","getgid","getuid","into","ne","send_signal","signal","success","to_owned","to_string","try_from","try_into","type_id","wait_or_timeout","Range","borrow","borrow_mut","cmp","complement","contain","eq","fmt","from","from_list","from_str","high","into","low","ne","partial_cmp","try_from","try_into","type_id","RingBuffer","borrow","borrow_mut","data","from","from_iter","into","new","push_back","try_from","try_into","type_id","ALL_SIGNALS","DEFAULT_SIGNAL","is_signal","signal_by_name_or_value","signal_name_by_value","ACCOUNTING","BOOT_TIME","DEAD_PROCESS","DEFAULT_FILE","EMPTY","INIT_PROCESS","LOGIN_PROCESS","NEW_TIME","OLD_TIME","RUN_LVL","USER_PROCESS","UT_HOSTSIZE","UT_IDSIZE","UT_LINESIZE","UT_NAMESIZE","Utmpx","UtmpxIter","borrow","borrow","borrow_mut","borrow_mut","canon_host","endutxent","exit_status","from","from","getutxent","host","into","into","into_inner","into_iter","is_user_process","iter_all_records","login_time","next","pid","read_from","record_type","setutxent","terminal_suffix","try_from","try_from","try_into","try_into","tty_device","type_id","type_id","user","utmpxname","version_cmp"],"q":["uucore","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","uucore::backup_control","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","uucore::backup_control::arguments","","","","","","uucore::coreopts","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","uucore::display","","","","","","","","","","","","","","","","","","","uucore::encoding","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","uucore::entries","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","uucore::error","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","uucore::fs","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","uucore::fsext","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","uucore::mode","","","","uucore::os","","uucore::panic","uucore::parse_size","","","","","","","","","","","","","","","","","uucore::parse_time","uucore::perms","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","uucore::perms::entries","","","","","","","","","","uucore::process","","","","","","","","","","","","","","","","","","","","","","","","","","","","uucore::ranges","","","","","","","","","","","","","","","","","","","uucore::ringbuffer","","","","","","","","","","","","uucore::signals","","","","","uucore::utmpx","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","uucore::version_cmp"],"d":["","","","","","","","","","","","","Implement GNU-style backup functionality.","","","","","Converts each iterator item to a String and collects …","convenience function for a more slim interface","","Display the provided error message, then exit() with the …","Unwraps the Result. Instead of panicking, it exists the …","","","Get password/group file entry","All utils return exit with an exit code. Usually, the …","Derive the complete execution phrase for “usage”.","Calls exit() with the provided exit code.","","","","","Set of functions to manage files and symlinks","Set of functions to manage file systems","","","","","Set of functions to parse modes","","","","","","","","","","","Common functions to manage permissions","Set of functions to manage IDs","","A fixed-size ring buffer.","","","","","Show an error to stderr in a similar style to GNU …","Show a warning to stderr in a similar style to GNU …","","Show a bad invocation help message in a similar style to …","","","","","","","","","","","Shorthand to construct [UIoError]-instances.","Derive the utility name.","Aims to provide platform-independent methods to obtain …","","An ambiguous argument (e.g. ‘n’) was given as backup …","","","Backup error types.","Currently unused","Available backup modes.","Argument ‘existing’, ‘nil’","An invalid argument (e.g. ‘foo’) was given as backup …","Argument ‘none’, ‘off’","Argument ‘numbered’, ‘t’","Argument ‘simple’, ‘never’","Arguments for backup-related functionality.","","","","","","","","Determine the “mode” for the backup operation to …","Obtain the suffix to use for a backup.","","","","","","","","","","","","","","","","","","","","","","","","‘–backup’ argument","‘-b’ argument","‘-S, –suffix’ argument","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","An extension trait for displaying filenames to users.","A wrapper around [OsStr] for printing paths with quoting …","","","","","","","","","Like quote(), but don’t actually add quotes unless …","Like quote(), but don’t actually add quotes unless …","Print a path (or OsStr-like object) directly to stdout, …","Returns an object that implements [Display] for printing …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Fetch desired entry.","","","","This is a wrapper function for libc::getgrouplist.","","","","","","","","","From: …","The list of group IDs returned from GNU’s groups and GNU…","AKA group.gr_gid","AKA passwd.pw_gid","","","","","","","","","","","","AKA group.gr_name","AKA passwd.pw_name","","","","","","","","AKA passwd.pw_uid","","AKA passwd.pw_dir","AKA passwd.pw_gecos","AKA passwd.pw_passwd","AKA passwd.pw_shell","","","A special error type that does not print any message when …","Enables the conversion from [std::io::Error] to [UError] …","Custom errors defined by the utils and uucore.","Wrapper type around [std::io::Error].","Result type that should be returned by all utils.","A simple error type with an exit code and a message that …","","","","","","","","","","Error code of a custom error.","Error code of a custom error.","","","","","","","","","","","","","","","","","","Get the last exit code set with [set_exit_code]. The …","","","","","","","","","","","","Set the exit code for the program if uumain returns Ok(())…","Strip the trailing “ (os error XX)“ from io error …","","","","","","","","","","","","","","","","","Print usage help to a custom error.","Print usage help to a custom error.","","Resolve symbolic links, ignoring errors on the final …","Resolve ‘..’ elements before symlinks","Resolve symbolic links, ignoring errors on the non-final …","Controls how symbolic links should be handled when …","Do not resolve any symbolic links.","Return an error if any part of the path is missing.","Resolve symlinks as encountered when processing the path","Controls when symbolic links are resolved","","","","","Return the canonical, absolute form of a path.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Read file system list.","","","","","","","","","","","","","","","","","","","","","","","","","Test if the program is running under WSL","","","","","","","","","","","","","","","Parse a size string into a number of bytes.","","","","","","","","","","","","","","","","","","","","The various level of verbosity","","","","","","","","","","","","","","","","","Get password/group file entry","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Perform the change of owner on a path with the various …","","Fetch desired entry.","","From: …","The list of group IDs returned from GNU’s groups and GNU…","","","","","","Missing methods for Child objects","","","","","","","","","","","","","getegid() returns the effective group ID of the calling …","geteuid() returns the effective user ID of the calling …","getgid() returns the real group ID of the calling process.","getuid() returns the real user ID of the calling process.","","","Send a signal to a Child process.","","","","","","","","Wait for a process to finish or return after the …","","","","","","Test if at least one of the given Ranges contain the …","","","","","","","","","","","","","","A fixed-size ring buffer backed by a VecDeque.","","","","","","","","Append a value to the end of the ring buffer.","","","","","","","","","","","","","","","","","","","","","","","","","Iterator of login records","","","","","Canonicalize host name using DNS","","A.K.A. ut.ut_exit","","","","A.K.A. ut.ut_host","","","Consumes the Utmpx, returning the underlying C struct …","","","","A.K.A. ut.ut_tv","","A.K.A. ut.ut_pid","Sets the name of the utmpx-format file for the other …","A.K.A. ut.ut_type","","A.K.A. ut.ut_id","","","","","A.K.A. ut.ut_line","","","A.K.A. ut.ut_user","",""],"i":[0,1,0,2,2,0,1,2,1,0,0,0,0,2,1,2,1,3,3,0,0,0,0,0,0,0,0,0,1,1,2,1,0,0,0,0,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,2,1,2,1,0,0,0,0,4,0,0,0,4,0,5,4,5,5,5,0,5,4,5,4,5,5,4,0,0,5,4,5,4,4,5,4,0,5,4,4,5,4,5,4,5,4,5,4,4,0,0,0,0,0,0,0,0,6,7,6,7,6,6,7,6,7,6,6,7,7,7,7,7,7,7,6,6,6,7,6,7,6,7,7,6,0,0,8,8,8,8,8,8,8,8,9,9,0,9,8,8,8,8,8,10,10,10,10,10,10,10,0,11,0,0,11,0,0,11,10,12,12,13,11,10,12,13,11,10,10,10,0,13,0,13,11,11,12,13,11,11,11,11,10,13,12,13,11,10,13,13,11,10,11,12,13,11,10,12,13,11,10,12,13,11,10,0,0,0,0,0,14,15,15,14,15,14,15,15,15,14,15,0,0,14,15,0,0,14,15,14,15,16,14,14,15,15,14,15,15,14,15,14,15,14,15,15,0,15,15,15,15,0,17,0,0,0,0,0,0,0,18,19,20,17,18,19,20,17,21,21,18,19,17,18,19,18,18,19,19,20,20,17,17,18,19,20,17,0,18,19,20,17,22,18,19,18,19,20,17,0,0,18,19,20,17,18,19,20,17,18,19,20,17,18,19,20,17,21,21,19,23,24,23,0,24,23,24,0,23,24,23,24,0,23,24,23,24,0,0,23,24,23,24,23,24,23,24,0,0,23,24,23,24,23,24,23,24,0,0,0,0,0,0,25,26,27,27,27,28,25,26,27,27,29,27,26,29,27,26,29,27,26,29,27,26,29,29,29,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,27,27,29,27,26,25,26,25,26,29,27,26,25,26,29,25,26,26,29,27,26,25,26,29,29,29,25,26,26,27,28,0,0,0,0,29,0,0,0,29,27,26,25,26,25,26,29,27,26,29,27,26,29,27,26,0,0,0,0,0,0,0,30,0,30,30,30,30,30,30,30,30,30,30,0,30,30,30,30,0,31,32,0,0,0,0,31,0,32,32,31,31,32,0,0,33,31,33,32,34,31,33,32,34,32,34,32,34,33,33,33,0,32,34,33,33,33,32,34,31,33,32,34,34,31,33,32,34,34,34,33,33,32,34,31,33,32,34,31,33,32,34,31,33,32,34,33,0,0,0,0,0,0,0,0,16,0,0,0,35,0,35,35,35,35,35,35,35,35,35,35,0,0,0,0,35,35,36,35,35,35,35,35,35,35,36,0,37,37,37,0,0,37,37,37,37,37,37,37,37,37,37,37,37,37,0,38,38,38,38,38,38,38,38,38,38,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,40,39,40,39,0,39,39,40,0,39,39,40,39,40,39,39,39,40,39,40,39,0,39,39,40,39,40,39,39,40,39,0,0],"f":[null,null,null,null,null,null,null,null,[[],[["vec",3],["string",3]]],null,[[]],[[]],null,[[]],[[]],[[]],[[]],[[["invalidencodinghandling",4]],["conversionresult",4]],[[],["conversionresult",4]],null,null,null,null,null,null,null,[[],["string",3]],null,[[["str",15]],[["vec",3],["string",3]]],[[["str",15]],[["vec",3],["string",3]]],[[]],[[]],null,null,[[],["bool",15]],null,[[]],[[]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],null,null,null,null,null,null,null,null,null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],null,[[],["string",3]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[],["backupmode",4]],[[]],[[],["i32",15]],[[["argmatches",3]],[["uresult",6],["backupmode",4]]],[[["argmatches",3]],["string",3]],[[["backupmode",4]],["bool",15]],[[["backuperror",4]],["bool",15]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[["path",3],["str",15],["backupmode",4]],[["pathbuf",3],["option",4]]],[[]],[[]],[[["backuperror",4]],["bool",15]],[[]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["bool",15]],null,null,null,[[],["arg",3]],[[],["arg",3]],[[],["arg",3]],null,null,[[]],[[]],[[]],[[]],null,[[]],[[]],[[]],[[]],null,null,[[["helptext",3]]],[[["str",15]],["coreoptions",3]],[[["str",15]],["coreoptions",3]],[[["str",15]],["coreoptions",3]],[[["str",15]],["coreoptions",3]],[[["str",15]],["coreoptions",3]],[[["vec",3],["string",3]],["matches",3]],null,null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[["str",15]],["string",3]],null,null,null,[[]],[[]],[[],["quoted",3]],[[]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[],["quoted",3]],[[],["quoted",3]],[[["asref",8],["osstr",3]],["result",6]],[[],["quoted",3]],[[]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["format",4]],[[]],[[["format",4]],["decoderesult",6]],[[],["decoderesult",6]],[[["format",4]],[["result",4],["string",3],["encodeerror",4]]],[[],[["result",4],["string",3],["encodeerror",4]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[["decodeerror",4]]],[[["decodeerror",3]]],[[]],[[["error",3]]],[[]],[[["bool",15]]],[[]],[[]],[[]],[[]],[[["usize",15]]],[[["format",4]]],[[],[["error",8],["option",4]]],[[]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[["data",3],["string",3]]],[[["usize",15],["string",3],["write",8]],["result",6]],null,null,null,[[],["group",3]],[[],["passwd",3]],[[],[["vec",3],["gid_t",6]]],[[]],[[]],[[]],[[]],[[],["passwd",3]],[[]],[[]],[[]],[[],[["ioresult",6],["vec",3]]],[[["u32",15],["option",4]],[["ioresult",6],["vec",3]]],[[],["gid_t",6]],[[],["gid_t",6]],[[["gid_t",6]],[["ioresult",6],["string",3]]],[[["str",15]],[["ioresult",6],["gid_t",6]]],[[]],[[]],[[],["group",3]],[[],["passwd",3]],[[],["ioresult",6]],[[["gid_t",6]],["ioresult",6]],[[["str",15]],["ioresult",6]],[[["uid_t",6]],["ioresult",6]],[[["str",15]],["ioresult",6]],[[],[["cow",4],["str",15]]],[[],[["cow",4],["str",15]]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["uid_t",6]],[[["uid_t",6]],[["ioresult",6],["string",3]]],[[],[["cow",4],["str",15]]],[[],[["cow",4],["str",15]]],[[],[["cow",4],["str",15]]],[[],[["cow",4],["str",15]]],[[["str",15]],[["ioresult",6],["uid_t",6]]],null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["i32",15]],[[],["i32",15]],[[],["i32",15]],[[],["i32",15]],[[],["i32",15]],null,null,[[["formatter",3]],["result",6]],[[["formatter",3]],[["error",3],["result",4]]],[[["formatter",3]],["result",6]],[[["formatter",3]],[["error",3],["result",4]]],[[["formatter",3]],["result",6]],[[["formatter",3]],[["error",3],["result",4]]],[[["formatter",3]],[["error",3],["result",4]]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[],["i32",15]],[[]],[[]],[[]],[[]],[[]],null,null,[[["into",8],["i32",15],["string",3]],[["uerror",8],["box",3]]],[[["into",8],["i32",15],["string",3]],[["uerror",8],["box",3]]],[[["into",8],["errorkind",4],["string",3]],[["uerror",8],["box",3]]],[[["i32",15]],[["uerror",8],["box",3]]],[[["i32",15]]],[[["error",3]],["string",3]],[[],["string",3]],[[],["string",3]],[[],["string",3]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["bool",15]],[[],["bool",15]],[[],["bool",15]],null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[["resolvemode",4],["asref",8],["path",3],["missinghandling",4]],[["ioresult",6],["pathbuf",3]]],[[],["missinghandling",4]],[[],["resolvemode",4]],[[]],[[]],[[["metadata",3],["bool",15]],["string",3]],[[["bool",15],["mode_t",6]],["string",3]],[[["missinghandling",4]],["bool",15]],[[["resolvemode",4]],["bool",15]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[["path",3]],["pathbuf",3]],[[["path",3]],[["cow",4],["path",3]]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],null,null,null,null,null,[[],["i32",15]],[[],["u64",15]],[[],["u64",15]],null,null,null,[[],["string",3]],[[],["i64",15]],[[],["i64",15]],null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[],["mountinfo",3]],[[],["fsusage",3]],[[],["statfs",3]],[[]],[[]],[[]],null,null,null,[[["statfs",3]],["bool",15]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],[["error",3],["result",4]]],[[],["u64",15]],[[],["u64",15]],[[],["u64",15]],[[],["u64",15]],[[]],[[]],[[]],[[],["i64",15]],[[],["i64",15]],null,[[],["u64",15]],[[],["u64",15]],[[]],[[]],[[]],[[]],[[],["u64",15]],[[],["u64",15]],null,null,null,[[],["u64",15]],[[],["u64",15]],[[["statfs",3]],["bool",15]],[[["statfs",3]],["fsusage",3]],[[],["string",3]],[[["mode_t",6],["u64",15]],["str",15]],[[["i64",15]],[["str",15],["cow",4]]],[[["i64",15]],["string",3]],[[],[["mountinfo",3],["vec",3]]],null,[[["asref",8],["path",3]],[["statfs",3],["result",4],["string",3]]],null,[[],["i32",15]],[[]],[[]],[[]],[[],["u64",15]],[[],["u64",15]],[[],["u64",15]],[[],["u64",15]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["u32",15]],[[["str",15]],[["result",4],["mode_t",6],["string",3]]],[[["u32",15],["str",15],["bool",15]],[["u32",15],["result",4],["string",3]]],[[["u32",15],["str",15],["bool",15]],[["u32",15],["result",4],["string",3]]],[[],["bool",15]],[[],["bool",15]],[[]],null,null,null,[[]],[[]],[[],["str",15]],[[["parsesizeerror",4]],["bool",15]],[[["formatter",3]],[["result",4],["error",3]]],[[["formatter",3]],["result",6]],[[]],[[]],[[["parsesizeerror",4]],["bool",15]],[[["str",15]],[["usize",15],["parsesizeerror",4],["result",4]]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[["str",15]],[["result",4],["duration",3],["string",3]]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["verbositylevel",4]],[[],["verbosity",3]],[[]],[[]],null,null,null,null,[[["verbositylevel",4]],["bool",15]],[[["verbosity",3]],["bool",15]],[[],["uresult",6]],null,null,[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],null,[[]],[[]],[[]],[[]],null,[[["verbosity",3]],["bool",15]],null,null,[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],null,[[["metadata",3],["asref",8],["path",3],["bool",15],["verbosity",3],["u32",15],["option",4]],[["result",4],["string",3]]],null,null,null,[[],[["ioresult",6],["vec",3]]],[[["u32",15],["option",4]],[["ioresult",6],["vec",3]]],[[["gid_t",6]],[["ioresult",6],["string",3]]],[[["str",15]],[["ioresult",6],["gid_t",6]]],[[],["ioresult",6]],[[["uid_t",6]],[["ioresult",6],["string",3]]],[[["str",15]],[["ioresult",6],["uid_t",6]]],null,null,null,null,[[]],[[]],[[],["exitstatus",4]],[[]],[[],[["option",4],["i32",15]]],[[["exitstatus",4]],["bool",15]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[],["gid_t",6]],[[],["uid_t",6]],[[],["gid_t",6]],[[],["uid_t",6]],[[]],[[["exitstatus",4]],["bool",15]],[[["usize",15]],["result",6]],[[],[["option",4],["i32",15]]],[[],["bool",15]],[[]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[["duration",3]],[["result",6],["option",4]]],null,[[]],[[]],[[["range",3]],["ordering",4]],[[],[["vec",3],["range",3]]],[[["usize",15]],["bool",15]],[[["range",3]],["bool",15]],[[["formatter",3]],["result",6]],[[]],[[["str",15]],[["vec",3],["result",4],["string",3]]],[[["str",15]],[["result",4],["range",3],["str",15]]],null,[[]],null,[[["range",3]],["bool",15]],[[["range",3]],[["option",4],["ordering",4]]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],null,[[]],[[]],null,[[]],[[["usize",15]],["ringbuffer",3]],[[]],[[["usize",15]],["ringbuffer",3]],[[],["option",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],null,null,[[["usize",15]],["bool",15]],[[["str",15]],[["usize",15],["option",4]]],[[["usize",15]],[["str",15],["option",4]]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[],[["ioresult",6],["string",3]]],[[]],[[]],[[]],[[]],[[]],[[],["string",3]],[[]],[[]],[[],["utmpx",3]],[[]],[[],["bool",15]],[[],["utmpxiter",3]],[[],["tm",3]],[[],["option",4]],[[],["i32",15]],[[["str",15]]],[[],["i16",15]],[[]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["string",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["string",3]],[[],["i32",15]],[[["str",15]],["ordering",4]]],"p":[[4,"ConversionResult"],[4,"InvalidEncodingHandling"],[8,"Args"],[4,"BackupError"],[4,"BackupMode"],[3,"HelpText"],[3,"CoreOptions"],[3,"Quoted"],[8,"Quotable"],[4,"Format"],[4,"DecodeError"],[4,"EncodeError"],[3,"Data"],[3,"Group"],[3,"Passwd"],[8,"Locate"],[3,"ExitCode"],[3,"USimpleError"],[3,"UUsageError"],[3,"UIoError"],[8,"UError"],[8,"FromIo"],[4,"MissingHandling"],[4,"ResolveMode"],[8,"FsMeta"],[3,"statfs_fn"],[3,"FsUsage"],[8,"BirthTime"],[3,"MountInfo"],[4,"ParseSizeError"],[4,"IfFrom"],[4,"VerbosityLevel"],[3,"ChownExecutor"],[3,"Verbosity"],[4,"ExitStatus"],[8,"ChildExt"],[3,"Range"],[3,"RingBuffer"],[3,"Utmpx"],[3,"UtmpxIter"]]},\
"uucore_procs":{"doc":"","t":[23,14],"n":["gen_uumain","main"],"q":["uucore_procs",""],"d":["",""],"i":[0,0],"f":[null,null],"p":[]},\
"wc":{"doc":"","t":[5],"n":["main"],"q":["wc"],"d":[""],"i":[0],"f":[[[]]],"p":[]},\
"who":{"doc":"","t":[5],"n":["main"],"q":["who"],"d":[""],"i":[0],"f":[[[]]],"p":[]},\
diff --git a/source-files.js b/source-files.js
index dcefbae66..5401e0e06 100644
--- a/source-files.js
+++ b/source-files.js
@@ -197,7 +197,7 @@ sourcesIndex["uu_wc"] = {"name":"","files":["count_fast.rs","countable.rs","wc.r
sourcesIndex["uu_who"] = {"name":"","files":["who.rs"]};
sourcesIndex["uu_whoami"] = {"name":"","dirs":[{"name":"platform","files":["mod.rs","unix.rs"]}],"files":["whoami.rs"]};
sourcesIndex["uu_yes"] = {"name":"","files":["splice.rs","yes.rs"]};
-sourcesIndex["uucore"] = {"name":"","dirs":[{"name":"features","files":["encoding.rs","entries.rs","fs.rs","fsext.rs","mode.rs","perms.rs","process.rs","ringbuffer.rs","signals.rs","utmpx.rs"]},{"name":"mods","files":["backup_control.rs","coreopts.rs","error.rs","os.rs","panic.rs","ranges.rs","version_cmp.rs"]},{"name":"parser","files":["parse_size.rs","parse_time.rs"]}],"files":["features.rs","lib.rs","macros.rs","mods.rs","parser.rs"]};
+sourcesIndex["uucore"] = {"name":"","dirs":[{"name":"features","files":["encoding.rs","entries.rs","fs.rs","fsext.rs","mode.rs","perms.rs","process.rs","ringbuffer.rs","signals.rs","utmpx.rs"]},{"name":"mods","files":["backup_control.rs","coreopts.rs","display.rs","error.rs","os.rs","panic.rs","ranges.rs","version_cmp.rs"]},{"name":"parser","files":["parse_size.rs","parse_time.rs"]}],"files":["features.rs","lib.rs","macros.rs","mods.rs","parser.rs"]};
sourcesIndex["uucore_procs"] = {"name":"","files":["lib.rs"]};
sourcesIndex["wc"] = {"name":"","files":["main.rs"]};
sourcesIndex["who"] = {"name":"","files":["main.rs"]};
diff --git a/src/uu_ls/ls.rs.html b/src/uu_ls/ls.rs.html
index 562267e10..61128cd0e 100644
--- a/src/uu_ls/ls.rs.html
+++ b/src/uu_ls/ls.rs.html
@@ -1949,12 +1949,6 @@
194719481949
-1950
-1951
-1952
-1953
-1954
-1955
// This file is part of the uutils coreutils package.//
@@ -1979,6 +1973,7 @@
usenumber_prefix::NumberPrefix;
useonce_cell::unsync::OnceCell;
usequoting_style::{escape_name, QuotingStyle};
+usestd::ffi::OsString;
#[cfg(windows)]usestd::os::windows::fs::MetadataExt;
usestd::{
@@ -2206,7 +2201,7 @@
implConfig {
#[allow(clippy::cognitive_complexity)]
- fnfrom(options: clap::ArgMatches) ->UResult<Config> {
+ fnfrom(options: &clap::ArgMatches) ->UResult<Config> {
let (mutformat, opt) =ifletSome(format_) =options.value_of(options::FORMAT) {
(
matchformat_ {
@@ -2386,11 +2381,10 @@
#[allow(clippy::needless_bool)]letshow_control=ifoptions.is_present(options::HIDE_CONTROL_CHARS) {
false
- } elseifoptions.is_present(options::SHOW_CONTROL_CHARS) ||atty::is(atty::Stream::Stdout)
- {
+ } elseifoptions.is_present(options::SHOW_CONTROL_CHARS) {
true
} else {
- false
+ !atty::is(atty::Stream::Stdout)
};
letquoting_style=ifletSome(style) =options.value_of(options::QUOTING_STYLE) {
@@ -2557,22 +2551,19 @@
#[uucore_procs::gen_uumain]pubfnuumain(args: impluucore::Args) ->UResult<()> {
- letargs=args
- .collect_str(InvalidEncodingHandling::Ignore)
- .accept_any();
-
letusage=usage();
letapp=uu_app().usage(&usage[..]);
letmatches=app.get_matches_from(args);
+ letconfig=Config::from(&matches)?;
letlocs=matches
- .values_of(options::PATHS)
- .map(|v|v.map(ToString::to_string).collect())
- .unwrap_or_else(||vec![String::from(".")]);
+ .values_of_os(options::PATHS)
+ .map(|v|v.map(Path::new).collect())
+ .unwrap_or_else(||vec![Path::new(".")]);
- list(locs, Config::from(matches)?)
+ list(locs, config)
}
pubfnuu_app() ->App<'static, 'static> {
@@ -3135,7 +3126,7 @@ only ignore '.' and '..'.",
md: OnceCell<Option<Metadata>>,
ft: OnceCell<Option<FileType>>,
// Name of the file - will be empty for . or ..
- display_name: String,
+ display_name: OsString,
// PathBuf that all above data corresponds top_buf: PathBuf,
must_dereference: bool,
@@ -3145,7 +3136,7 @@ only ignore '.' and '..'.",
fnnew(
p_buf: PathBuf,
file_type: Option<std::io::Result<FileType>>,
- file_name: Option<String>,
+ file_name: Option<OsString>,
config: &Config,
command_line: bool,
) ->Self {
@@ -3153,16 +3144,13 @@ only ignore '.' and '..'.",
// For '..', the filename is Noneletdisplay_name=ifletSome(name) =file_name {
name
+ } elseifcommand_line {
+ p_buf.clone().into()
} else {
- letdisplay_os_str=ifcommand_line {
- p_buf.as_os_str()
- } else {
- p_buf
- .file_name()
- .unwrap_or_else(||p_buf.iter().next_back().unwrap())
- };
-
- display_os_str.to_string_lossy().into_owned()
+ p_buf
+ .file_name()
+ .unwrap_or_else(||p_buf.iter().next_back().unwrap())
+ .to_owned()
};
letmust_dereference=match&config.dereference {
Dereference::All=>true,
@@ -3207,14 +3195,14 @@ only ignore '.' and '..'.",
}
}
-fnlist(locs: Vec<String>, config: Config) ->UResult<()> {
+fnlist(locs: Vec<&Path>, config: Config) ->UResult<()> {
letmutfiles=Vec::<PathData>::new();
letmutdirs=Vec::<PathData>::new();
letmutout=BufWriter::new(stdout());
forlocin&locs {
- letp=PathBuf::from(&loc);
+ letp=PathBuf::from(loc);
letpath_data=PathData::new(p, None, None, &config, true);
ifpath_data.md().is_none() {
@@ -3244,6 +3232,7 @@ only ignore '.' and '..'.",
sort_entries(&mutdirs, &config);
fordirindirs {
iflocs.len() >1||config.recursive {
+ // FIXME: This should use the quoting style and propagate errorslet_=writeln!(out, "\n{}:", dir.p_buf.display());
}
enter_directory(&dir, &config, &mutout);
@@ -3629,7 +3618,6 @@ only ignore '.' and '..'.",
usestd::sync::Mutex;
#[cfg(unix)]useuucore::entries;
-useuucore::InvalidEncodingHandling;
#[cfg(unix)]fncached_uid2usr(uid: u32) ->String {
diff --git a/src/uu_ls/quoting_style.rs.html b/src/uu_ls/quoting_style.rs.html
index d095c2a21..a7ddde746 100644
--- a/src/uu_ls/quoting_style.rs.html
+++ b/src/uu_ls/quoting_style.rs.html
@@ -693,8 +693,13 @@
691692693
+694
+695
+696
+697
usestd::char::from_digit;
+usestd::ffi::OsStr;
// These are characters with special meaning in the shell (e.g. bash).// The first const contains characters that only have a special meaning when they appear at the beginning of a name.
@@ -951,19 +956,21 @@
(escaped_str, must_quote)
}
-pub(super) fnescape_name(name: &str, style: &QuotingStyle) ->String {
+pub(super) fnescape_name(name: &OsStr, style: &QuotingStyle) ->String {
matchstyle {
QuotingStyle::Literal { show_control } => {
if!show_control {
- name.chars()
+ name.to_string_lossy()
+ .chars()
.flat_map(|c|EscapedChar::new_literal(c).hide_control())
.collect()
} else {
- name.into()
+ name.to_string_lossy().into_owned()
}
}
QuotingStyle::C { quotes } => {
letescaped_str: String=name
+ .to_string_lossy()
.chars()
.flat_map(|c|EscapedChar::new_c(c, *quotes))
.collect();
@@ -979,6 +986,7 @@
always_quote,
show_control,
} => {
+ letname=name.to_string_lossy();
let (quotes, must_quote) =ifname.contains('"') {
(Quotes::Single, true)
} elseifname.contains('\'') {
@@ -990,9 +998,9 @@
};
let (escaped_str, contains_quote_chars) =if*escape {
- shell_with_escape(name, quotes)
+ shell_with_escape(&name, quotes)
} else {
- shell_without_escape(name, quotes, *show_control)
+ shell_without_escape(&name, quotes, *show_control)
};
match (must_quote|contains_quote_chars, quotes) {
@@ -1058,7 +1066,7 @@
fncheck_names(name: &str, map: Vec<(&str, &str)>) {
assert_eq!(
map.iter()
- .map(|(_, style)|escape_name(name, &get_style(style)))
+ .map(|(_, style)|escape_name(name.as_ref(), &get_style(style)))
.collect::<Vec<String>>(),
map.iter()
.map(|(correct, _)|correct.to_string())
diff --git a/src/uu_pwd/pwd.rs.html b/src/uu_pwd/pwd.rs.html
index d02228c17..369b91a75 100644
--- a/src/uu_pwd/pwd.rs.html
+++ b/src/uu_pwd/pwd.rs.html
@@ -175,27 +175,6 @@
173174175
-176
-177
-178
-179
-180
-181
-182
-183
-184
-185
-186
-187
-188
-189
-190
-191
-192
-193
-194
-195
-196
// * This file is part of the uutils coreutils package.// *
@@ -209,9 +188,10 @@
useclap::{crate_version, App, Arg};
usestd::env;
-usestd::io::{self, Write};
-usestd::path::{Path, PathBuf};
+usestd::io;
+usestd::path::PathBuf;
+useuucore::display::println_verbatim;
useuucore::error::{FromIo, UResult};
staticABOUT: &str="Display the full filename of the current working directory.";
@@ -256,6 +236,7 @@
// POSIX: https://pubs.opengroup.org/onlinepubs/9699919799/utilities/pwd.html#[cfg(not(windows))]
{
+ usestd::path::Path;
fnlooks_reasonable(path: &Path) ->bool {
// First, check if it's an absolute path.if!path.has_root() {
@@ -347,30 +328,7 @@
.map(Into::into)
.unwrap_or(cwd);
- print_path(&cwd).map_err_context(||"failed to print current directory".to_owned())?;
-
- Ok(())
-}
-
-fnprint_path(path: &Path) ->io::Result<()> {
- letstdout=io::stdout();
- letmutstdout=stdout.lock();
-
- // On Unix we print non-lossily.
- #[cfg(unix)]
- {
- usestd::os::unix::ffi::OsStrExt;
- stdout.write_all(path.as_os_str().as_bytes())?;
- stdout.write_all(b"\n")?;
- }
-
- // On other platforms we potentially mangle it.
- // There might be some clever way to do it correctly on Windows, but
- // invalid unicode in filenames is rare there.
- #[cfg(not(unix))]
- {
- writeln!(stdout, "{}", path.display())?;
- }
+ println_verbatim(&cwd).map_err_context(||"failed to print current directory".to_owned())?;
Ok(())
}
diff --git a/src/uu_rmdir/rmdir.rs.html b/src/uu_rmdir/rmdir.rs.html
index 215ee1fb5..0bbc0d96a 100644
--- a/src/uu_rmdir/rmdir.rs.html
+++ b/src/uu_rmdir/rmdir.rs.html
@@ -209,9 +209,6 @@
207208209
-210
-211
-212
// * This file is part of the uutils coreutils package.// *
@@ -229,6 +226,7 @@
usestd::fs::{read_dir, remove_dir};
usestd::io;
usestd::path::Path;
+useuucore::display::Quotable;
useuucore::error::{set_exit_code, strip_errno, UResult};
useuucore::util_name;
@@ -292,27 +290,23 @@
Ok(path.metadata()?.file_type().is_dir())
}
- letpath=path.as_os_str().as_bytes();
- iferror.raw_os_error() ==Some(libc::ENOTDIR) &&path.ends_with(b"/") {
+ letbytes=path.as_os_str().as_bytes();
+ iferror.raw_os_error() ==Some(libc::ENOTDIR) &&bytes.ends_with(b"/") {
// Strip the trailing slash or .symlink_metadata() will follow the symlink
- letpath: &Path=OsStr::from_bytes(&path[..path.len() -1]).as_ref();
- ifis_symlink(path).unwrap_or(false)
- &&points_to_directory(path).unwrap_or(true)
+ letno_slash: &Path=OsStr::from_bytes(&bytes[..bytes.len() -1]).as_ref();
+ ifis_symlink(no_slash).unwrap_or(false)
+ &&points_to_directory(no_slash).unwrap_or(true)
{
show_error!(
- "failed to remove '{}/': Symbolic link not followed",
- path.display()
+ "failed to remove {}: Symbolic link not followed",
+ path.quote()
);
continue;
}
}
}
- show_error!(
- "failed to remove '{}': {}",
- path.display(),
- strip_errno(&error)
- );
+ show_error!("failed to remove {}: {}", path.quote(), strip_errno(&error));
}
}
@@ -340,7 +334,7 @@
fnremove_single(path: &Path, opts: Opts) ->Result<(), Error<'_>> {
ifopts.verbose {
- println!("{}: removing directory, '{}'", util_name(), path.display());
+ println!("{}: removing directory, {}", util_name(), path.quote());
}
remove_dir(path).map_err(|error|Error { error, path })
}
diff --git a/src/uu_wc/wc.rs.html b/src/uu_wc/wc.rs.html
index 1b497bc8c..f398c24c5 100644
--- a/src/uu_wc/wc.rs.html
+++ b/src/uu_wc/wc.rs.html
@@ -535,6 +535,11 @@
533534535
+536
+537
+538
+539
+540
// * This file is part of the uutils coreutils package.// *
@@ -562,6 +567,8 @@
usestd::io::{self, Write};
usestd::path::{Path, PathBuf};
+useuucore::display::{Quotable, Quoted};
+
/// The minimum character width for formatting counts when reading from stdin.constMINIMUM_WIDTH: usize=7;
@@ -660,10 +667,10 @@ more than one FILE is specified.";
}
}
- fnpath_display(&self) ->std::path::Display<'_> {
+ fnpath_display(&self) ->Quoted<'_> {
matchself {
- Input::Path(path) =>path.display(),
- Input::Stdin(_) =>Path::display("'standard input'".as_ref()),
+ Input::Path(path) =>path.maybe_quote(),
+ Input::Stdin(_) =>"standard input".maybe_quote(),
}
}
}
@@ -986,7 +993,10 @@ more than one FILE is specified.";
ifletErr(err) =print_stats(settings, &result, max_width) {
show_warning!(
"failed to print result for {}: {}",
- result.title.unwrap_or_else(||"<stdin>".as_ref()).display(),
+ result
+ .title
+ .unwrap_or_else(||"<stdin>".as_ref())
+ .maybe_quote(),
err
);
failure=true;
@@ -1064,7 +1074,7 @@ more than one FILE is specified.";
}
ifletSome(title) =result.title {
- writeln!(stdout_lock, " {}", title.display())?;
+ writeln!(stdout_lock, " {}", title.maybe_quote())?;
} else {
writeln!(stdout_lock)?;
}
diff --git a/src/uucore/lib.rs.html b/src/uucore/lib.rs.html
index 0ba739360..020857e6c 100644
--- a/src/uucore/lib.rs.html
+++ b/src/uucore/lib.rs.html
@@ -295,6 +295,7 @@
293294295
+296
+/// Utilities for printing paths, with special attention paid to special
+/// characters and invalid unicode.
+///
+/// For displaying paths in informational messages use `Quotable::quote`. This
+/// will wrap quotes around the filename and add the necessary escapes to make
+/// it copy/paste-able into a shell.
+///
+/// For writing raw paths to stdout when the output should not be quoted or escaped,
+/// use `println_verbatim`. This will preserve invalid unicode.
+///
+/// # Examples
+/// ```
+/// use std::path::Path;
+/// use uucore::display::{Quotable, println_verbatim};
+///
+/// let path = Path::new("foo/bar.baz");
+///
+/// println!("Found file {}", path.quote()); // Prints "Found file 'foo/bar.baz'"
+/// println_verbatim(path)?; // Prints "foo/bar.baz"
+/// # Ok::<(), std::io::Error>(())
+/// ```
+// spell-checker:ignore Fbar
+usestd::borrow::Cow;
+usestd::ffi::OsStr;
+#[cfg(any(unix, target_os="wasi", windows))]
+usestd::fmt::WriteasFmtWrite;
+usestd::fmt::{self, Display, Formatter};
+usestd::io::{self, WriteasIoWrite};
+
+#[cfg(unix)]
+usestd::os::unix::ffi::OsStrExt;
+#[cfg(target_os="wasi")]
+usestd::os::wasi::ffi::OsStrExt;
+#[cfg(any(unix, target_os="wasi"))]
+usestd::str::from_utf8;
+
+/// An extension trait for displaying filenames to users.
+pubtraitQuotable {
+ /// Returns an object that implements [`Display`] for printing filenames with
+ /// proper quoting and escaping for the platform.
+ ///
+ /// On Unix this corresponds to sh/bash syntax, on Windows Powershell syntax
+ /// is used.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// use std::path::Path;
+ /// use uucore::display::Quotable;
+ ///
+ /// let path = Path::new("foo/bar.baz");
+ ///
+ /// println!("Found file {}", path.quote()); // Prints "Found file 'foo/bar.baz'"
+ /// ```
+ fnquote(&self) ->Quoted<'_>;
+
+ /// Like `quote()`, but don't actually add quotes unless necessary because of
+ /// whitespace or special characters.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// use std::path::Path;
+ /// use uucore::display::Quotable;
+ /// use uucore::show_error;
+ ///
+ /// let foo = Path::new("foo/bar.baz");
+ /// let bar = Path::new("foo bar");
+ ///
+ /// show_error!("{}: Not found", foo.maybe_quote()); // Prints "util: foo/bar.baz: Not found"
+ /// show_error!("{}: Not found", bar.maybe_quote()); // Prints "util: 'foo bar': Not found"
+ /// ```
+ fnmaybe_quote(&self) ->Quoted<'_> {
+ letmutquoted=self.quote();
+ quoted.force_quote=false;
+ quoted
+ }
+}
+
+macro_rules!impl_as_ref {
+ ($type: ty) => {
+ implQuotablefor$type {
+ fnquote(&self) ->Quoted<'_> {
+ Quoted::new(self.as_ref())
+ }
+ }
+ };
+}
+
+impl_as_ref!(&'_str);
+impl_as_ref!(String);
+impl_as_ref!(&'_std::path::Path);
+impl_as_ref!(std::path::PathBuf);
+impl_as_ref!(std::path::Component<'_>);
+impl_as_ref!(std::path::Components<'_>);
+impl_as_ref!(std::path::Iter<'_>);
+impl_as_ref!(&'_std::ffi::OsStr);
+impl_as_ref!(std::ffi::OsString);
+
+// Cow<'_, str> does not implement AsRef<OsStr> and this is unlikely to be fixed
+// for backward compatibility reasons. Otherwise we'd use a blanket impl.
+implQuotableforCow<'_, str> {
+ fnquote(&self) ->Quoted<'_> {
+ lettext: &str=self.as_ref();
+ Quoted::new(text.as_ref())
+ }
+}
+
+/// A wrapper around [`OsStr`] for printing paths with quoting and escaping applied.
+#[derive(Debug, Copy, Clone)]
+pubstructQuoted<'a> {
+ text: &'aOsStr,
+ force_quote: bool,
+}
+
+impl<'a>Quoted<'a> {
+ fnnew(text: &'aOsStr) ->Self {
+ Quoted {
+ text,
+ force_quote: true,
+ }
+ }
+}
+
+implDisplayforQuoted<'_> {
+ #[cfg(any(windows, unix, target_os="wasi"))]
+ fnfmt(&self, f: &mutFormatter<'_>) ->fmt::Result {
+ // On Unix we emulate sh syntax. On Windows Powershell.
+ // They're just similar enough to share some code.
+
+ /// Characters with special meaning outside quotes.
+ // https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_02
+ // I don't know why % is in there, and GNU doesn't quote it either.
+ // {} were used in a version elsewhere but seem unnecessary, GNU doesn't
+ // quote them. They're used in function definitions but not in a way we
+ // have to worry about.
+ #[cfg(any(unix, target_os="wasi"))]
+ constSPECIAL_SHELL_CHARS: &[u8] =b"|&;<>()$`\\\"'*?[]=";
+ // FIXME: I'm not a PowerShell wizard and don't know if this is correct.
+ // I just copied the Unix version, removed \, and added ,{} based on
+ // experimentation.
+ // I have noticed that ~?*[] only get expanded in some contexts, so watch
+ // out for that if doing your own tests.
+ // Get-ChildItem seems unwilling to quote anything so it doesn't help.
+ // There's the additional wrinkle that Windows has stricter requirements
+ // for filenames: I've been testing using a Linux build of PowerShell, but
+ // this code doesn't even compile on Linux.
+ #[cfg(windows)]
+ constSPECIAL_SHELL_CHARS: &[u8] =b"|&;<>()$`\"'*?[]=,{}";
+
+ /// Characters with a special meaning at the beginning of a name.
+ // ~ expands a home directory.
+ // # starts a comment.
+ // ! is a common extension for expanding the shell history.
+ #[cfg(any(unix, target_os="wasi"))]
+ constSPECIAL_SHELL_CHARS_START: &[char] =&['~', '#', '!'];
+ // Same deal as before, this is possibly incomplete.
+ // A single stand-alone exclamation mark seems to have some special meaning.
+ #[cfg(windows)]
+ constSPECIAL_SHELL_CHARS_START: &[char] =&['~', '#', '@', '!'];
+
+ /// Characters that are interpreted specially in a double-quoted string.
+ #[cfg(any(unix, target_os="wasi"))]
+ constDOUBLE_UNSAFE: &[u8] =&[b'"', b'`', b'$', b'\\'];
+ #[cfg(windows)]
+ constDOUBLE_UNSAFE: &[u8] =&[b'"', b'`', b'$'];
+
+ lettext=matchself.text.to_str() {
+ None=>returnwrite_escaped(f, self.text),
+ Some(text) =>text,
+ };
+
+ letmutis_single_safe=true;
+ letmutis_double_safe=true;
+ letmutrequires_quote=self.force_quote;
+
+ ifletSome(first) =text.chars().next() {
+ ifSPECIAL_SHELL_CHARS_START.contains(&first) {
+ requires_quote=true;
+ }
+ // Unlike in Unix, quoting an argument may stop it
+ // from being recognized as an option. I like that very much.
+ // But we don't want to quote "-" because that's a common
+ // special argument and PowerShell doesn't mind it.
+ #[cfg(windows)]
+ iffirst=='-'&&text.len() >1 {
+ requires_quote=true;
+ }
+ } else {
+ // Empty string
+ requires_quote=true;
+ }
+
+ forchintext.chars() {
+ ifch.is_ascii() {
+ letch=chasu8;
+ ifch==b'\'' {
+ is_single_safe=false;
+ }
+ ifDOUBLE_UNSAFE.contains(&ch) {
+ is_double_safe=false;
+ }
+ if!requires_quote&&SPECIAL_SHELL_CHARS.contains(&ch) {
+ requires_quote=true;
+ }
+ ifch.is_ascii_control() {
+ returnwrite_escaped(f, self.text);
+ }
+ }
+ if!requires_quote&&ch.is_whitespace() {
+ // This includes unicode whitespace.
+ // We maybe don't have to escape it, we don't escape other lookalike
+ // characters either, but it's confusing if it goes unquoted.
+ requires_quote=true;
+ }
+ }
+
+ if!requires_quote {
+ returnf.write_str(text);
+ } elseifis_single_safe {
+ returnwrite_simple(f, text, '\'');
+ } elseifis_double_safe {
+ returnwrite_simple(f, text, '\"');
+ } else {
+ returnwrite_single_escaped(f, text);
+ }
+
+ fnwrite_simple(f: &mutFormatter<'_>, text: &str, quote: char) ->fmt::Result {
+ f.write_char(quote)?;
+ f.write_str(text)?;
+ f.write_char(quote)?;
+ Ok(())
+ }
+
+ #[cfg(any(unix, target_os="wasi"))]
+ fnwrite_single_escaped(f: &mutFormatter<'_>, text: &str) ->fmt::Result {
+ letmutiter=text.split('\'');
+ ifletSome(chunk) =iter.next() {
+ if!chunk.is_empty() {
+ write_simple(f, chunk, '\'')?;
+ }
+ }
+ forchunkiniter {
+ f.write_str("\\'")?;
+ if!chunk.is_empty() {
+ write_simple(f, chunk, '\'')?;
+ }
+ }
+ Ok(())
+ }
+
+ /// Write using the syntax described here:
+ /// https://www.gnu.org/software/bash/manual/html_node/ANSI_002dC-Quoting.html
+ ///
+ /// Supported by these shells:
+ /// - bash
+ /// - zsh
+ /// - busybox sh
+ /// - mksh
+ ///
+ /// Not supported by these:
+ /// - fish
+ /// - dash
+ /// - tcsh
+ #[cfg(any(unix, target_os="wasi"))]
+ fnwrite_escaped(f: &mutFormatter<'_>, text: &OsStr) ->fmt::Result {
+ f.write_str("$'")?;
+ forchunkinfrom_utf8_iter(text.as_bytes()) {
+ matchchunk {
+ Ok(chunk) => {
+ forchinchunk.chars() {
+ matchch {
+ '\n'=>f.write_str("\\n")?,
+ '\t'=>f.write_str("\\t")?,
+ '\r'=>f.write_str("\\r")?,
+ // We could do \b, \f, \v, etc., but those are
+ // rare enough to be confusing.
+ // \0 doesn't work consistently because of the
+ // octal \nnn syntax, and null bytes can't appear
+ // in filenames anyway.
+ chifch.is_ascii_control() =>write!(f, "\\x{:02X}", chasu8)?,
+ '\\'|'\''=> {
+ // '?' and '"' can also be escaped this way
+ // but AFAICT there's no reason to do so
+ f.write_char('\\')?;
+ f.write_char(ch)?;
+ }
+ ch=> {
+ f.write_char(ch)?;
+ }
+ }
+ }
+ }
+ Err(unit) =>write!(f, "\\x{:02X}", unit)?,
+ }
+ }
+ f.write_char('\'')?;
+ Ok(())
+ }
+
+ #[cfg(windows)]
+ fnwrite_single_escaped(f: &mutFormatter<'_>, text: &str) ->fmt::Result {
+ // Quotes in Powershell can be escaped by doubling them
+ f.write_char('\'')?;
+ letmutiter=text.split('\'');
+ ifletSome(chunk) =iter.next() {
+ f.write_str(chunk)?;
+ }
+ forchunkiniter {
+ f.write_str("''")?;
+ f.write_str(chunk)?;
+ }
+ f.write_char('\'')?;
+ Ok(())
+ }
+
+ #[cfg(windows)]
+ fnwrite_escaped(f: &mutFormatter<'_>, text: &OsStr) ->fmt::Result {
+ // ` takes the role of \ since \ is already used as the path separator.
+ // Things are UTF-16-oriented, so we escape code units as "`u{1234}".
+ usestd::char::decode_utf16;
+ usestd::os::windows::ffi::OsStrExt;
+
+ f.write_char('"')?;
+ forchindecode_utf16(text.encode_wide()) {
+ matchch {
+ Ok(ch) =>matchch {
+ '\0'=>f.write_str("`0")?,
+ '\r'=>f.write_str("`r")?,
+ '\n'=>f.write_str("`n")?,
+ '\t'=>f.write_str("`t")?,
+ chifch.is_ascii_control() =>write!(f, "`u{{{:04X}}}", chasu8)?,
+ '`'=>f.write_str("``")?,
+ '$'=>f.write_str("`$")?,
+ '"'=>f.write_str("\"\"")?,
+ ch=>f.write_char(ch)?,
+ },
+ Err(err) =>write!(f, "`u{{{:04X}}}", err.unpaired_surrogate())?,
+ }
+ }
+ f.write_char('"')?;
+ Ok(())
+ }
+ }
+
+ #[cfg(not(any(unix, target_os="wasi", windows)))]
+ fnfmt(&self, f: &mutFormatter<'_>) ->fmt::Result {
+ // As a fallback, we use Rust's own escaping rules.
+ // This is reasonably sane and very easy to implement.
+ // We use single quotes because that's hardcoded in a lot of tests.
+ lettext=self.text.to_string_lossy();
+ ifself.force_quote||!text.chars().all(|ch|ch.is_alphanumeric() ||ch=='.') {
+ write!(f, "'{}'", text.escape_debug())
+ } else {
+ f.write_str(&text)
+ }
+ }
+}
+
+#[cfg(any(unix, target_os="wasi"))]
+fnfrom_utf8_iter(mutbytes: &[u8]) ->implIterator<Item=Result<&str, u8>> {
+ std::iter::from_fn(move|| {
+ ifbytes.is_empty() {
+ returnNone;
+ }
+ matchfrom_utf8(bytes) {
+ Ok(text) => {
+ bytes=&[];
+ Some(Ok(text))
+ }
+ Err(err) iferr.valid_up_to() ==0=> {
+ letres=bytes[0];
+ bytes=&bytes[1..];
+ Some(Err(res))
+ }
+ Err(err) => {
+ let (valid, rest) =bytes.split_at(err.valid_up_to());
+ bytes=rest;
+ Some(Ok(from_utf8(valid).unwrap()))
+ }
+ }
+ })
+}
+
+/// Print a path (or `OsStr`-like object) directly to stdout, with a trailing newline,
+/// without losing any information if its encoding is invalid.
+///
+/// This function is appropriate for commands where printing paths is the point and the
+/// output is likely to be captured, like `pwd` and `basename`. For informational output
+/// use `Quotable::quote`.
+///
+/// FIXME: This is lossy on Windows. It could probably be implemented using some low-level
+/// API that takes UTF-16, without going through io::Write. This is not a big priority
+/// because broken filenames are much rarer on Windows than on Unix.
+pubfnprintln_verbatim<S: AsRef<OsStr>>(text: S) ->io::Result<()> {
+ letstdout=io::stdout();
+ letmutstdout=stdout.lock();
+ #[cfg(any(unix, target_os="wasi"))]
+ {
+ stdout.write_all(text.as_ref().as_bytes())?;
+ stdout.write_all(b"\n")?;
+ }
+ #[cfg(not(any(unix, target_os="wasi")))]
+ {
+ writeln!(stdout, "{}", std::path::Path::new(text.as_ref()).display())?;
+ }
+ Ok(())
+}
+
+#[cfg(test)]
+modtests {
+ usesuper::*;
+
+ fnverify_quote(cases: &[(implQuotable, &str)]) {
+ for (case, expected) incases {
+ assert_eq!(case.quote().to_string(), *expected);
+ }
+ }
+
+ fnverify_maybe(cases: &[(implQuotable, &str)]) {
+ for (case, expected) incases {
+ assert_eq!(case.maybe_quote().to_string(), *expected);
+ }
+ }
+
+ /// This should hold on any platform, or else other tests fail.
+ #[test]
+ fntest_basic() {
+ verify_quote(&[
+ ("foo", "'foo'"),
+ ("", "''"),
+ ("foo/bar.baz", "'foo/bar.baz'"),
+ ]);
+ verify_maybe(&[
+ ("foo", "foo"),
+ ("", "''"),
+ ("foo bar", "'foo bar'"),
+ ("$foo", "'$foo'"),
+ ("-", "-"),
+ ]);
+ }
+
+ #[cfg(any(unix, target_os="wasi", windows))]
+ #[test]
+ fntest_common() {
+ verify_maybe(&[
+ ("a#b", "a#b"),
+ ("#ab", "'#ab'"),
+ ("a~b", "a~b"),
+ ("!", "'!'"),
+ ]);
+ }
+
+ #[cfg(any(unix, target_os="wasi"))]
+ #[test]
+ fntest_unix() {
+ verify_quote(&[
+ ("can't", r#""can't""#),
+ (r#"can'"t"#, r#"'can'\''"t'"#),
+ (r#"can'$t"#, r#"'can'\''$t'"#),
+ ("foo\nb\ta\r\\\0`r", r#"$'foo\nb\ta\r\\\x00`r'"#),
+ ("foo\x02", r#"$'foo\x02'"#),
+ (r#"'$''"#, r#"\''$'\'\'"#),
+ ]);
+ verify_quote(&[(OsStr::from_bytes(b"foo\xFF"), r#"$'foo\xFF'"#)]);
+ verify_maybe(&[
+ ("-x", "-x"),
+ ("a,b", "a,b"),
+ ("a\\b", "'a\\b'"),
+ ("}", ("}")),
+ ]);
+ }
+
+ #[cfg(windows)]
+ #[test]
+ fntest_windows() {
+ usestd::ffi::OsString;
+ usestd::os::windows::ffi::OsStringExt;
+ verify_quote(&[
+ (r#"foo\bar"#, r#"'foo\bar'"#),
+ ("can't", r#""can't""#),
+ (r#"can'"t"#, r#"'can''"t'"#),
+ (r#"can'$t"#, r#"'can''$t'"#),
+ ("foo\nb\ta\r\\\0`r", r#""foo`nb`ta`r\`0``r""#),
+ ("foo\x02", r#""foo`u{0002}""#),
+ (r#"'$''"#, r#"'''$'''''"#),
+ ]);
+ verify_quote(&[(
+ OsString::from_wide(&[b'x'asu16, 0xD800]),
+ r#""x`u{D800}""#,
+ )]);
+ verify_maybe(&[
+ ("-x", "'-x'"),
+ ("a,b", "'a,b'"),
+ ("a\\b", "a\\b"),
+ ("}", "'}'"),
+ ]);
+ }
+
+ #[cfg(any(unix, target_os="wasi"))]
+ #[test]
+ fntest_utf8_iter() {
+ typeByteStr=&'static [u8];
+ typeChunk=Result<&'staticstr, u8>;
+ constCASES: &[(ByteStr, &[Chunk])] =&[
+ (b"", &[]),
+ (b"hello", &[Ok("hello")]),
+ // Immediately invalid
+ (b"\xFF", &[Err(b'\xFF')]),
+ // Incomplete UTF-8
+ (b"\xC2", &[Err(b'\xC2')]),
+ (b"\xF4\x8F", &[Err(b'\xF4'), Err(b'\x8F')]),
+ (b"\xFF\xFF", &[Err(b'\xFF'), Err(b'\xFF')]),
+ (b"hello\xC2", &[Ok("hello"), Err(b'\xC2')]),
+ (b"\xFFhello", &[Err(b'\xFF'), Ok("hello")]),
+ (b"\xFF\xC2hello", &[Err(b'\xFF'), Err(b'\xC2'), Ok("hello")]),
+ (b"foo\xFFbar", &[Ok("foo"), Err(b'\xFF'), Ok("bar")]),
+ (
+ b"foo\xF4\x8Fbar",
+ &[Ok("foo"), Err(b'\xF4'), Err(b'\x8F'), Ok("bar")],
+ ),
+ (
+ b"foo\xFF\xC2bar",
+ &[Ok("foo"), Err(b'\xFF'), Err(b'\xC2'), Ok("bar")],
+ ),
+ ];
+ for&(case, expected) inCASES {
+ assert_eq!(
+ from_utf8_iter(case).collect::<Vec<_>>().as_slice(),
+ expected
+ );
+ }
+ }
+}
+
+
\ No newline at end of file
diff --git a/uu_ls/fn.uu_app.html b/uu_ls/fn.uu_app.html
index b7ba276c9..725344eac 100644
--- a/uu_ls/fn.uu_app.html
+++ b/uu_ls/fn.uu_app.html
@@ -1,3 +1,3 @@
uu_app in uu_ls - Rust
-
\ No newline at end of file
diff --git a/uu_ls/options/dereference/static.ALL.html b/uu_ls/options/dereference/static.ALL.html
index 93bf871fe..8a0cc1cbe 100644
--- a/uu_ls/options/dereference/static.ALL.html
+++ b/uu_ls/options/dereference/static.ALL.html
@@ -1,3 +1,3 @@
ALL in uu_ls::options::dereference - Rust
-