diff --git a/dev/search-index.js b/dev/search-index.js
index 3498b4848..02f4a765b 100644
--- a/dev/search-index.js
+++ b/dev/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,5,5,3,8,3,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,12,12,5,5,11,11,10,11,11,11,11,12,12,11,11,11,11,11,11,11,11,12,5,12,12,12,12,5],"n":["entries","uu_app","uumain","Group","Locate","Passwd","belongs_to","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","fmt","fmt","from","from","get_groups","get_groups_gnu","gid","gid","gid2grp","grp2gid","into","into","locate","locate","locate","locate","locate","name","name","to_owned","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"],"q":["uu_chgrp","","","uu_chgrp::entries","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"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 passwd.pw_gid","AKA group.gr_gid","","","","","","","","","","AKA passwd.pw_name","AKA group.gr_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,1,1,2,1,2,1,2,1,2,1,2,1,2,0,0,1,2,0,0,1,2,3,1,1,2,2,1,2,1,2,1,2,1,2,1,2,1,0,1,1,1,1,0],"f":[null,[[],["app",3]],[[],["i32",15]],null,null,null,[[],["vec",3,[["u32",15],["global",3]]]],[[]],[[]],[[]],[[]],[[],["passwd",3]],[[],["group",3]],[[]],[[]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[]],[[]],[[],["result",4,[["vec",3,[["u32",15],["global",3]]],["error",3]]]],[[["option",4,[["u32",15]]]],["result",4,[["vec",3,[["u32",15],["global",3]]],["error",3]]]],null,null,[[["u32",15]],["result",4,[["string",3],["error",3]]]],[[["str",15]],["result",4,[["u32",15],["error",3]]]],[[]],[[]],[[],["result",4,[["error",3]]]],[[["str",15]],["result",4,[["passwd",3],["error",3]]]],[[["u32",15]],["result",4,[["passwd",3],["error",3]]]],[[["str",15]],["result",4,[["group",3],["error",3]]]],[[["u32",15]],["result",4,[["group",3],["error",3]]]],null,null,[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],null,[[["u32",15]],["result",4,[["string",3],["error",3]]]],null,null,null,null,[[["str",15]],["result",4,[["u32",15],["error",3]]]]],"p":[[3,"Passwd"],[3,"Group"],[8,"Locate"]]},\
+"uu_chgrp":{"doc":"","t":[0,5,5,3,8,3,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,12,12,5,5,11,11,10,11,11,11,11,12,12,11,11,11,11,11,11,11,11,12,5,12,12,12,12,5],"n":["entries","uu_app","uumain","Group","Locate","Passwd","belongs_to","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","fmt","fmt","from","from","get_groups","get_groups_gnu","gid","gid","gid2grp","grp2gid","into","into","locate","locate","locate","locate","locate","name","name","to_owned","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"],"q":["uu_chgrp","","","uu_chgrp::entries","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"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 passwd.pw_gid","AKA group.gr_gid","","","","","","","","","","AKA passwd.pw_name","AKA group.gr_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,1,1,2,1,2,1,2,1,2,1,2,1,2,0,0,1,2,0,0,1,2,3,1,1,2,2,1,2,1,2,1,2,1,2,1,2,1,0,1,1,1,1,0],"f":[null,[[],["app",3]],[[],["i32",15]],null,null,null,[[],["vec",3,[["u32",15],["global",3]]]],[[]],[[]],[[]],[[]],[[],["passwd",3]],[[],["group",3]],[[]],[[]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[]],[[]],[[],["result",4,[["vec",3,[["u32",15],["global",3]]],["error",3]]]],[[["option",4,[["u32",15]]]],["result",4,[["vec",3,[["u32",15],["global",3]]],["error",3]]]],null,null,[[["u32",15]],["result",4,[["string",3],["error",3]]]],[[["str",15]],["result",4,[["u32",15],["error",3]]]],[[]],[[]],[[],["result",4,[["error",3]]]],[[["u32",15]],["result",4,[["passwd",3],["error",3]]]],[[["str",15]],["result",4,[["passwd",3],["error",3]]]],[[["u32",15]],["result",4,[["group",3],["error",3]]]],[[["str",15]],["result",4,[["group",3],["error",3]]]],null,null,[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],null,[[["u32",15]],["result",4,[["string",3],["error",3]]]],null,null,null,null,[[["str",15]],["result",4,[["u32",15],["error",3]]]]],"p":[[3,"Passwd"],[3,"Group"],[8,"Locate"]]},\
"uu_chmod":{"doc":"","t":[5,5,5],"n":["is_symlink","uu_app","uumain"],"q":["uu_chmod","",""],"d":["","",""],"i":[0,0,0],"f":[[[["asref",8,[["path",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,12,12,11,11,10,11,11,11,11,12,12,11,11,11,11,11,11,11,11,12,12,12,12,12,5,5,3,8,3,5,5,12,12,5,5,10,12,12,12,5,12,12,12,12,5],"n":["Group","Locate","Passwd","belongs_to","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","entries","fmt","fmt","from","from","gid","gid","into","into","locate","locate","locate","locate","locate","name","name","to_owned","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","gid","gid","gid2grp","grp2gid","locate","name","name","uid","uid2usr","user_dir","user_info","user_passwd","user_shell","usr2uid"],"q":["uu_chown","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","uu_chown::entries","","","","","","","","","","","","","","","","","",""],"d":["","Fetch desired entry.","","This is a wrapper function for libc::getgrouplist.","","","","","","","","","Get password/group file entry","","","","","AKA passwd.pw_gid","AKA group.gr_gid","","","","","","","","AKA passwd.pw_name","AKA group.gr_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…","AKA passwd.pw_gid","AKA group.gr_gid","","","","AKA passwd.pw_name","AKA group.gr_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,1,1,2,1,2,1,2,1,2,0,1,2,1,2,1,2,1,2,3,1,1,2,2,1,2,1,2,1,2,1,2,1,2,1,1,1,1,1,0,0,0,0,0,0,0,1,2,0,0,3,1,2,1,0,1,1,1,1,0],"f":[null,null,null,[[],["vec",3,[["u32",15],["global",3]]]],[[]],[[]],[[]],[[]],[[],["passwd",3]],[[],["group",3]],[[]],[[]],null,[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[]],[[]],null,null,[[]],[[]],[[],["result",4,[["error",3]]]],[[["u32",15]],["result",4,[["passwd",3],["error",3]]]],[[["str",15]],["result",4,[["passwd",3],["error",3]]]],[[["u32",15]],["result",4,[["group",3],["error",3]]]],[[["str",15]],["result",4,[["group",3],["error",3]]]],null,null,[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],null,null,null,null,null,[[],["app",3]],[[],["i32",15]],null,null,null,[[],["result",4,[["vec",3,[["u32",15],["global",3]]],["error",3]]]],[[["option",4,[["u32",15]]]],["result",4,[["vec",3,[["u32",15],["global",3]]],["error",3]]]],null,null,[[["u32",15]],["result",4,[["string",3],["error",3]]]],[[["str",15]],["result",4,[["u32",15],["error",3]]]],[[],["result",4,[["error",3]]]],null,null,null,[[["u32",15]],["result",4,[["string",3],["error",3]]]],null,null,null,null,[[["str",15]],["result",4,[["u32",15],["error",3]]]]],"p":[[3,"Passwd"],[3,"Group"],[8,"Locate"]]},\
+"uu_chown":{"doc":"","t":[3,8,3,11,11,11,11,11,11,11,11,11,0,11,11,11,11,12,12,11,11,10,11,11,11,11,12,12,11,11,11,11,11,11,11,11,12,12,12,12,12,5,5,3,8,3,5,5,12,12,5,5,10,12,12,12,5,12,12,12,12,5],"n":["Group","Locate","Passwd","belongs_to","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","entries","fmt","fmt","from","from","gid","gid","into","into","locate","locate","locate","locate","locate","name","name","to_owned","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","gid","gid","gid2grp","grp2gid","locate","name","name","uid","uid2usr","user_dir","user_info","user_passwd","user_shell","usr2uid"],"q":["uu_chown","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","uu_chown::entries","","","","","","","","","","","","","","","","","",""],"d":["","Fetch desired entry.","","This is a wrapper function for libc::getgrouplist.","","","","","","","","","Get password/group file entry","","","","","AKA passwd.pw_gid","AKA group.gr_gid","","","","","","","","AKA passwd.pw_name","AKA group.gr_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…","AKA passwd.pw_gid","AKA group.gr_gid","","","","AKA passwd.pw_name","AKA group.gr_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,1,1,2,1,2,1,2,1,2,0,1,2,1,2,1,2,1,2,3,1,1,2,2,1,2,1,2,1,2,1,2,1,2,1,1,1,1,1,0,0,0,0,0,0,0,1,2,0,0,3,1,2,1,0,1,1,1,1,0],"f":[null,null,null,[[],["vec",3,[["u32",15],["global",3]]]],[[]],[[]],[[]],[[]],[[],["passwd",3]],[[],["group",3]],[[]],[[]],null,[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[]],[[]],null,null,[[]],[[]],[[],["result",4,[["error",3]]]],[[["str",15]],["result",4,[["passwd",3],["error",3]]]],[[["u32",15]],["result",4,[["passwd",3],["error",3]]]],[[["u32",15]],["result",4,[["group",3],["error",3]]]],[[["str",15]],["result",4,[["group",3],["error",3]]]],null,null,[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],null,null,null,null,null,[[],["app",3]],[[],["i32",15]],null,null,null,[[],["result",4,[["vec",3,[["u32",15],["global",3]]],["error",3]]]],[[["option",4,[["u32",15]]]],["result",4,[["vec",3,[["u32",15],["global",3]]],["error",3]]]],null,null,[[["u32",15]],["result",4,[["string",3],["error",3]]]],[[["str",15]],["result",4,[["u32",15],["error",3]]]],[[],["result",4,[["error",3]]]],null,null,null,[[["u32",15]],["result",4,[["string",3],["error",3]]]],null,null,null,null,[[["str",15]],["result",4,[["u32",15],["error",3]]]]],"p":[[3,"Passwd"],[3,"Group"],[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],"n":["uu_app","uumain"],"q":["uu_whoami",""],"d":["",""],"i":[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,5,0,14,11,11,11,11,11,11,14,14,0,0,0,0,5,11,11,11,11,0,0,5,14,11,11,0,23,0,0,0,0,0,0,0,0,0,0,0,5,14,14,14,14,14,14,0,11,11,11,11,11,11,14,5,0,0,12,12,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,11,11,5,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,7,7,7,5,5,5,8,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,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,12,12,12,3,8,3,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,12,12,5,5,11,11,10,11,11,11,11,12,12,11,11,11,11,11,11,11,11,12,5,12,12,12,12,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,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,14,11,11,11,13,3,13,13,4,13,13,13,4,11,11,11,11,11,11,5,11,11,11,11,5,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,14,11,11,11,11,5,5,11,11,11,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,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,3,11,11,11,11,11,5,11,11,11,11,3,11,11,11,11,11,11,11,11,11,11,5,5,5,5,5,5,5,5,13,4,13,11,11,11,11,11,11,11,11,11,11,5,11,11,11,11,12,12,5,13,13,13,3,13,13,4,13,13,13,4,13,13,13,3,4,11,11,11,11,11,11,11,11,11,11,5,11,11,11,11,12,12,12,0,11,11,11,11,11,12,12,11,11,11,11,11,11,11,12,11,11,11,11,11,12,11,0,12,12,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,5,12,12,12,12,3,8,3,5,5,12,12,5,5,10,12,12,12,5,12,12,12,12,5,17,17,17,17,17,17,0,0,0,0,17,17,17,17,17,17,17,17,17,17,17,6,6,5,5,5,5,8,13,4,13,11,11,11,11,11,11,11,11,11,11,5,5,5,5,11,11,10,11,11,11,11,11,11,11,10,12,12,3,11,11,11,5,5,11,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,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","args_os","backup_control","bin","borrow","borrow","borrow_mut","borrow_mut","collect_str","collect_str_lossy","crash","crash_if_err","display","encoding","entries","error","execution_phrase","expect_complete","expect_lossy","from","from","fs","fsext","get_utility_is_second_arg","has","into","into","lines","main","memo","mode","os","panic","parse_size","parse_time","perms","pipes","process","ranges","ringbuffer","set_utility_is_second_arg","show","show_error","show_error_custom_description","show_if_err","show_usage_error","show_warning","signals","try_from","try_from","try_into","try_into","type_id","type_id","uio_error","util_name","utmpx","version_cmp","0","0","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","equivalent","equivalent","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","0","0","1","1","OPT_BACKUP","OPT_BACKUP_NO_ARG","OPT_SUFFIX","backup","backup_no_args","suffix","Quotable","Quoted","borrow","borrow_mut","clone","clone_into","fmt","fmt","force","from","from","into","maybe_quote","maybe_quote","native","native_raw","print_verbatim","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","0","0","0","Group","Locate","Passwd","belongs_to","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","fmt","fmt","from","from","get_groups","get_groups_gnu","gid","gid","gid2grp","grp2gid","into","into","locate","locate","locate","locate","locate","name","name","to_owned","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","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","uio_error","usage","usage","usage","Existing","FileInformation","Logical","Missing","MissingHandling","None","Normal","Physical","ResolveMode","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","canonicalize","clone","clone","clone_into","clone_into","display_permissions","display_permissions_unix","eq","eq","eq","equivalent","equivalent","equivalent","file_size","fmt","fmt","from","from","from","from_file","from_path","has","hash","into","into","into","normalize_path","resolve_relative_path","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","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","equivalent","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","Lines","borrow","borrow_mut","from","into","into_iter","lines","next","try_from","try_into","type_id","Memo","apply","borrow","borrow_mut","from","into","new","run_all","try_from","try_into","type_id","get_umask","parse_mode","parse_numeric","parse_symbolic","strip_minus_from_mode","is_wsl_1","is_wsl_2","mute_sigpipe_panic","ParseFailure","ParseSizeError","SizeTooBig","borrow","borrow_mut","description","eq","equivalent","fmt","fmt","from","into","ne","parse_size","to_string","try_from","try_into","type_id","0","0","from_str","All","All","Changes","ChownExecutor","First","Group","IfFrom","None","Normal","Silent","TraverseSymlinks","User","UserGroup","Verbose","Verbosity","VerbosityLevel","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","chown_base","clone","clone","clone_into","clone_into","dereference","dest_gid","dest_uid","entries","eq","eq","eq","equivalent","exec","files","filter","fmt","fmt","from","from","from","from","from","groups_only","into","into","into","into","into","level","ne","options","preserve_root","recursive","to_owned","to_owned","traverse_symlinks","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","verbosity","wrap_chown","0","0","0","1","Group","Locate","Passwd","get_groups","get_groups_gnu","gid","gid","gid2grp","grp2gid","locate","name","name","uid","uid2usr","user_dir","user_info","user_passwd","user_shell","usr2uid","ARG_FILES","ARG_GROUP","ARG_OWNER","FROM","RECURSIVE","REFERENCE","dereference","preserve_root","traverse","verbosity","DEREFERENCE","NO_DEREFERENCE","NO_PRESERVE","PRESERVE","EVERY","NO_TRAVERSE","TRAVERSE","CHANGES","QUIET","SILENT","VERBOSE","Error","Result","pipe","splice","splice_exact","vmsplice","ChildExt","Code","ExitStatus","Signal","borrow","borrow_mut","clone","clone_into","code","eq","equivalent","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","0","0","Range","borrow","borrow_mut","cmp","complement","contain","eq","equivalent","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","drop","endutxent","exit_status","from","from","getutxent","host","into","into","into_inner","into_iter","is_user_process","iter_all_records","iter_all_records_from","login_time","next","pid","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::ConversionResult","","uucore::backup_control","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","uucore::backup_control::BackupError","","","","uucore::backup_control::arguments","","","","","","uucore::display","","","","","","","","","","","","","","","","","","","","","","","","uucore::encoding","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","uucore::encoding::DecodeError","","","uucore::entries","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","uucore::error","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","uucore::fs","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","uucore::fsext","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","uucore::lines","","","","","","","","","","","uucore::memo","","","","","","","","","","","uucore::mode","","","","","uucore::os","","uucore::panic","uucore::parse_size","","","","","","","","","","","","","","","","","","uucore::parse_size::ParseSizeError","","uucore::parse_time","uucore::perms","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","uucore::perms::IfFrom","","","","uucore::perms::entries","","","","","","","","","","","","","","","","","","","uucore::perms::options","","","","","","","","","","uucore::perms::options::dereference","","uucore::perms::options::preserve_root","","uucore::perms::options::traverse","","","uucore::perms::options::verbosity","","","","uucore::pipes","","","","","","uucore::process","","","","","","","","","","","","","","","","","","","","","","","","","","","","","uucore::process::ExitStatus","","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 these …","convenience function for a more slim interface","Display an error and std::process::exit","Unwrap a std::result::Result, crashing instead of …","","","Get password/group file entry","All utils return exit with an exit code. Usually, the …","Derive the complete execution phrase for “usage”.","","","","","Set of functions to manage files and symlinks","Set of functions to manage file systems","","","","","Iterate over lines, including the line ending character(s).","","Memo runner of printf Takes a format string and arguments","Set of functions to parse modes","","Custom panic hooks that allow silencing certain types of …","","","Common functions to manage permissions","","Set of functions to manage IDs","","A fixed-size ring buffer.","","Display a crate::error::UError and set global exit code.","Show an error to stderr in a similar style to GNU …","Show a warning to stderr in a similar style to GNU …","Display an error and set global exit code in error case.","Show a bad invocation help message in a similar style to …","Print a warning message to stderr.","","","","","","","","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 to apply quoting to strings.","A wrapper around string types for displaying with quoting …","","","","","","","Toggle forced quoting. If true, quotes are added even if …","","","","Like quote(), but don’t actually add quotes unless …","Like quote(), but don’t actually add quotes unless …","Quote a string with the default style for the platform.","Quote an OsStr with the default style for the platform.","Like println_verbatim, without the trailing newline.","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 passwd.pw_gid","AKA group.gr_gid","","","","","","","","","","AKA passwd.pw_name","AKA group.gr_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 and …","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 default …","","","","","","","","","","","","Set the exit code for the program if uumain returns Ok(()).","Strip the trailing “ (os error XX)“ from io error …","","","","","","","","","","","","","","","","","Shorthand to construct UIoError-instances.","Print usage help to a custom error.","Print usage help to a custom error.","","Resolve symbolic links, ignoring errors on the final …","Information to uniquely identify a file","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.","","","","","","","","","","","","","","","","","","","Get information from a currently open file","Get information for a given path.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Read file system list.","","","","","","","","","","","","","","","","","","","","","An iterator over the lines of an instance of BufRead.","","","","","","Returns an iterator over the lines, including line ending …","","","","","","","","","","","","","","","","","","","","","Test if the program is running under WSL","","Terminate without error on panics that occur due to broken …","","","","","","","","","","","","","","Parse a size string into a number of bytes.","","","","","","","","","","","","","","","","","","","","","","","The various level of verbosity","","","","","","","","","","","Base implementation for chgrp and chown.","","","","","","","","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…","AKA passwd.pw_gid","AKA group.gr_gid","","","","AKA passwd.pw_name","AKA group.gr_name","AKA passwd.pw_uid","","AKA passwd.pw_dir","AKA passwd.pw_gecos","AKA passwd.pw_passwd","AKA passwd.pw_shell","","","","","","","","","","","","","","","","","","","","","","","Nix’s main error type.","Nix Result Type","A wrapper around nix::unistd::pipe that ensures the pipe …","Less noisy wrapper around nix::fcntl::splice.","Splice wrapper which fully finishes the write.","Copy data from bytes into target, which must be a pipe.","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 specified …","","","","","","","","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 utmpx","","","Iterate through all the utmp records.","Iterate through all the utmp records from a specific file.","A.K.A. ut.ut_tv","","A.K.A. ut.ut_pid","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,2,1,2,1,3,3,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,2,1,2,1,2,1,0,0,0,0,4,5,6,0,0,0,6,0,7,6,7,7,7,0,7,6,7,6,7,7,6,0,0,7,6,7,6,7,6,6,7,6,0,7,6,6,7,6,7,6,7,6,7,6,6,8,9,8,9,0,0,0,0,0,0,0,0,10,10,10,10,10,10,10,10,10,10,11,11,10,10,0,0,11,10,10,10,10,10,12,12,12,12,12,12,12,0,13,0,0,13,0,0,13,12,14,14,15,13,12,14,15,13,12,12,12,0,15,0,15,13,13,14,15,13,13,13,13,12,15,14,15,13,12,15,15,13,12,13,14,15,13,12,14,15,13,12,14,15,13,12,0,0,16,17,18,0,0,0,19,19,20,19,20,19,20,19,20,19,20,19,20,0,0,19,20,0,0,19,20,21,19,19,20,20,19,20,19,20,19,20,19,20,19,20,19,0,19,19,19,19,0,22,0,0,0,0,0,0,0,23,24,25,22,23,24,25,22,26,26,23,24,22,23,24,23,23,24,24,25,25,22,22,23,24,25,25,22,0,23,24,25,22,27,23,24,23,24,25,22,0,0,23,24,25,22,23,24,25,22,23,24,25,22,23,24,25,22,0,26,26,24,28,0,29,28,0,29,28,29,0,30,28,29,30,28,29,0,28,29,28,29,0,0,30,28,29,30,28,29,30,28,29,30,28,29,30,30,0,30,30,28,29,0,0,28,29,30,28,29,30,28,29,30,28,29,0,0,0,0,0,0,31,32,33,33,33,34,31,32,33,33,35,33,32,35,33,32,35,33,32,35,33,32,35,35,35,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,33,33,35,33,32,31,32,31,32,35,33,32,31,32,35,31,32,32,35,33,32,31,32,35,35,35,31,32,32,33,34,0,0,0,0,35,0,0,0,35,33,32,31,32,31,32,35,33,32,35,33,32,35,33,32,0,36,36,36,36,36,0,36,36,36,36,0,37,37,37,37,37,37,37,37,37,37,0,0,0,0,0,0,0,0,38,0,38,38,38,38,38,38,38,38,38,38,38,0,38,38,38,38,39,40,0,41,42,43,0,42,41,0,42,43,43,0,41,41,43,0,0,41,44,43,45,42,41,44,43,45,42,0,43,45,43,45,44,44,44,0,43,45,42,42,44,44,44,43,45,41,44,43,45,42,45,41,44,43,45,42,45,45,0,44,44,43,45,44,41,44,43,45,42,41,44,43,45,42,41,44,43,45,42,44,0,46,47,48,48,0,0,0,0,0,19,20,0,0,21,19,20,19,0,19,19,19,19,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,0,0,49,0,49,49,49,49,49,49,49,49,49,49,49,0,0,0,0,49,49,50,49,49,49,49,49,49,49,50,51,52,0,53,53,53,0,0,53,53,53,53,53,53,53,53,53,53,53,53,53,53,0,54,54,54,54,54,54,54,54,54,54,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,56,55,56,55,56,0,55,55,56,0,55,55,56,55,56,55,55,55,55,56,55,55,0,55,55,56,55,56,55,55,56,55,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,[[],["str",15]],[[["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,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],null,[[],["str",15]],null,null,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]],[[],["bool",15]],[[],["bool",15]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[["backupmode",4],["path",3],["str",15]],["option",4,[["pathbuf",3]]]],[[]],[[]],[[["backuperror",4]],["bool",15]],[[]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["bool",15]],null,null,null,null,null,null,null,[[],["arg",3]],[[],["arg",3]],[[],["arg",3]],null,null,[[]],[[]],[[],["quoted",3]],[[]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["bool",15]],["quoted",3]],[[]],[[],["quoted",3]],[[]],[[],["quoted",3]],[[],["quoted",3]],[[["str",15]],["quoted",3]],[[["osstr",3]],["quoted",3]],[[["asref",8,[["osstr",3]]]],["result",6]],[[["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]],[[]],[[]],[[["error",3]]],[[["decodeerror",4]]],[[["decodeerror",3]]],[[]],[[]],[[["bool",15]]],[[]],[[]],[[]],[[]],[[["usize",15]]],[[["format",4]]],[[],["option",4,[["error",8]]]],[[]],[[],["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],["str",15]]],[[["write",8],["usize",15],["str",15]],["result",6]],null,null,null,null,null,null,[[],["vec",3,[["gid_t",6]]]],[[]],[[]],[[]],[[]],[[],["passwd",3]],[[],["group",3]],[[]],[[]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[],["ioresult",6,[["vec",3,[["gid_t",6]]]]]],[[["option",4,[["u32",15]]]],["ioresult",6,[["vec",3,[["gid_t",6]]]]]],null,null,[[["gid_t",6]],["ioresult",6,[["string",3]]]],[[["str",15]],["ioresult",6,[["gid_t",6]]]],[[]],[[]],[[],["ioresult",6]],[[["uid_t",6]],["ioresult",6]],[[["str",15]],["ioresult",6]],[[["gid_t",6]],["ioresult",6]],[[["str",15]],["ioresult",6]],null,null,[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],null,[[["uid_t",6]],["ioresult",6,[["string",3]]]],null,null,null,null,[[["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",4,[["error",3]]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",4,[["error",3]]]],[[]],[[]],[[]],[[["error",3]]],[[]],[[],["i32",15]],[[]],[[]],[[]],[[]],[[]],null,null,[[["i32",15],["into",8,[["string",3]]]],["box",3,[["uerror",8]]]],[[["i32",15],["into",8,[["string",3]]]],["box",3,[["uerror",8]]]],[[["errorkind",4],["into",8,[["string",3]]]],["box",3,[["uerror",8]]]],[[["i32",15]],["box",3,[["uerror",8]]]],[[["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]],null,[[],["bool",15]],[[],["bool",15]],[[],["bool",15]],null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[["asref",8,[["path",3]]],["missinghandling",4],["resolvemode",4]],["ioresult",6,[["pathbuf",3]]]],[[],["missinghandling",4]],[[],["resolvemode",4]],[[]],[[]],[[["metadata",3],["bool",15]],["string",3]],[[["mode_t",6],["bool",15]],["string",3]],[[],["bool",15]],[[["missinghandling",4]],["bool",15]],[[["resolvemode",4]],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[],["u64",15]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[],["option",4]],[[["bool",15]],["option",4]],null,[[]],[[]],[[]],[[]],[[["path",3]],["pathbuf",3]],[[["path",3]],["cow",4,[["path",3]]]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["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]],[[],["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]],["result",4,[["error",3]]]],[[],["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]]],[[],["string",3]],[[["mode_t",6],["u64",15]],["str",15]],[[["i64",15]],["cow",4,[["str",15]]]],[[["i64",15],["i64",15]],["string",3]],[[],["vec",3,[["mountinfo",3]]]],null,[[["asref",8,[["path",3]]]],["result",4,[["statfs",3],["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]],null,[[]],[[]],[[]],[[]],[[]],[[["u8",15]],["lines",3]],[[],["option",4,[["result",6,[["vec",3,[["u8",15]]]]]]]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],null,[[["peekable",3]]],[[]],[[]],[[]],[[]],[[["str",15],["peekable",3]]],[[["str",15]]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["u32",15]],[[["str",15]],["result",4,[["mode_t",6],["string",3]]]],[[["u32",15],["str",15],["bool",15]],["result",4,[["u32",15],["string",3]]]],[[["u32",15],["str",15],["u32",15],["bool",15]],["result",4,[["u32",15],["string",3]]]],[[["vec",3]],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[]],null,null,null,[[]],[[]],[[],["str",15]],[[["parsesizeerror",4]],["bool",15]],[[],["bool",15]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",4,[["error",3]]]],[[]],[[]],[[["parsesizeerror",4]],["bool",15]],[[["str",15]],["result",4,[["usize",15],["parsesizeerror",4]]]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],null,null,[[["str",15]],["result",4,[["duration",3],["string",3]]]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["app",3],["str",15],["bool",15]],["uresult",6]],[[],["verbositylevel",4]],[[],["verbosity",3]],[[]],[[]],null,null,null,null,[[["verbositylevel",4]],["bool",15]],[[["verbosity",3]],["bool",15]],[[["traversesymlinks",4]],["bool",15]],[[],["bool",15]],[[],["uresult",6]],null,null,[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[]],null,[[]],[[]],[[]],[[]],[[]],null,[[["verbosity",3]],["bool",15]],null,null,null,[[]],[[]],null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],null,[[["asref",8,[["path",3]]],["metadata",3],["option",4,[["u32",15]]],["option",4,[["u32",15]]],["bool",15],["verbosity",3]],["result",4,[["string",3],["string",3]]]],null,null,null,null,null,null,null,[[],["ioresult",6,[["vec",3,[["gid_t",6]]]]]],[[["option",4,[["u32",15]]]],["ioresult",6,[["vec",3,[["gid_t",6]]]]]],null,null,[[["gid_t",6]],["ioresult",6,[["string",3]]]],[[["str",15]],["ioresult",6,[["gid_t",6]]]],[[],["ioresult",6]],null,null,null,[[["uid_t",6]],["ioresult",6,[["string",3]]]],null,null,null,null,[[["str",15]],["ioresult",6,[["uid_t",6]]]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[],["result",6]],[[["usize",15]],["result",6,[["usize",15]]]],[[["usize",15]],["result",6]],[[],["result",6,[["usize",15]]]],null,null,null,null,[[]],[[]],[[],["exitstatus",4]],[[]],[[],["option",4,[["i32",15]]]],[[["exitstatus",4]],["bool",15]],[[],["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,[["exitstatus",4]]]]]],null,null,null,[[]],[[]],[[["range",3]],["ordering",4]],[[],["vec",3,[["range",3]]]],[[["usize",15]],["bool",15]],[[["range",3]],["bool",15]],[[],["bool",15]],[[["formatter",3]],["result",6]],[[]],[[["str",15]],["result",4,[["vec",3],["string",3]]]],[[["str",15]],["result",4,[["str",15]]]],null,[[]],null,[[["range",3]],["bool",15]],[[["range",3]],["option",4,[["ordering",4]]]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],null,[[]],[[]],null,[[]],[[["usize",15]]],[[]],[[["usize",15]]],[[],["option",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],null,null,[[["usize",15]],["bool",15]],[[["str",15]],["option",4,[["usize",15]]]],[[["usize",15]],["option",4,[["str",15]]]],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]],[[["asref",8,[["path",3]]]],["utmpxiter",3]],[[],["tm",3]],[[],["option",4]],[[],["i32",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],["str",15]],["ordering",4]]],"p":[[4,"ConversionResult"],[4,"InvalidEncodingHandling"],[8,"Args"],[13,"Complete"],[13,"Lossy"],[4,"BackupError"],[4,"BackupMode"],[13,"InvalidArgument"],[13,"AmbiguousArgument"],[3,"Quoted"],[8,"Quotable"],[4,"Format"],[4,"DecodeError"],[4,"EncodeError"],[3,"Data"],[13,"Decode"],[13,"DecodeZ85"],[13,"Io"],[3,"Passwd"],[3,"Group"],[8,"Locate"],[3,"ExitCode"],[3,"USimpleError"],[3,"UUsageError"],[3,"UIoError"],[8,"UError"],[8,"FromIo"],[4,"MissingHandling"],[4,"ResolveMode"],[3,"FileInformation"],[8,"FsMeta"],[3,"statfs_fn"],[3,"FsUsage"],[8,"BirthTime"],[3,"MountInfo"],[3,"Lines"],[3,"Memo"],[4,"ParseSizeError"],[13,"ParseFailure"],[13,"SizeTooBig"],[4,"IfFrom"],[4,"TraverseSymlinks"],[4,"VerbosityLevel"],[3,"ChownExecutor"],[3,"Verbosity"],[13,"User"],[13,"Group"],[13,"UserGroup"],[4,"ExitStatus"],[8,"ChildExt"],[13,"Code"],[13,"Signal"],[3,"Range"],[3,"RingBuffer"],[3,"Utmpx"],[3,"UtmpxIter"]]},\
+"uucore":{"doc":"","t":[8,13,4,13,13,4,13,13,11,5,0,14,11,11,11,11,11,11,14,14,0,0,0,0,5,11,11,11,11,0,0,5,14,11,11,0,23,0,0,0,0,0,0,0,0,0,0,0,5,14,14,14,14,14,14,0,11,11,11,11,11,11,14,5,0,0,12,12,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,11,11,5,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,7,7,7,5,5,5,8,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,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,12,12,12,3,8,3,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,12,12,5,5,11,11,10,11,11,11,11,12,12,11,11,11,11,11,11,11,11,12,5,12,12,12,12,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,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,14,11,11,11,13,3,13,13,4,13,13,13,4,11,11,11,11,11,11,5,11,11,11,11,5,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,14,11,11,11,11,5,5,11,11,11,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,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,3,11,11,11,11,11,5,11,11,11,11,3,11,11,11,11,11,11,11,11,11,11,5,5,5,5,5,5,5,5,13,4,13,11,11,11,11,11,11,11,11,11,11,5,11,11,11,11,12,12,5,13,13,13,3,13,13,4,13,13,13,4,13,13,13,3,4,11,11,11,11,11,11,11,11,11,11,5,11,11,11,11,12,12,12,0,11,11,11,11,11,12,12,11,11,11,11,11,11,11,12,11,11,11,11,11,12,11,0,12,12,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,5,12,12,12,12,3,8,3,5,5,12,12,5,5,10,12,12,12,5,12,12,12,12,5,17,17,17,17,17,17,0,0,0,0,17,17,17,17,17,17,17,17,17,17,17,6,6,5,5,5,5,8,13,4,13,11,11,11,11,11,11,11,11,11,11,5,5,5,5,11,11,10,11,11,11,11,11,11,11,10,12,12,3,11,11,11,5,5,11,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,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","args_os","backup_control","bin","borrow","borrow","borrow_mut","borrow_mut","collect_str","collect_str_lossy","crash","crash_if_err","display","encoding","entries","error","execution_phrase","expect_complete","expect_lossy","from","from","fs","fsext","get_utility_is_second_arg","has","into","into","lines","main","memo","mode","os","panic","parse_size","parse_time","perms","pipes","process","ranges","ringbuffer","set_utility_is_second_arg","show","show_error","show_error_custom_description","show_if_err","show_usage_error","show_warning","signals","try_from","try_from","try_into","try_into","type_id","type_id","uio_error","util_name","utmpx","version_cmp","0","0","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","equivalent","equivalent","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","0","0","1","1","OPT_BACKUP","OPT_BACKUP_NO_ARG","OPT_SUFFIX","backup","backup_no_args","suffix","Quotable","Quoted","borrow","borrow_mut","clone","clone_into","fmt","fmt","force","from","from","into","maybe_quote","maybe_quote","native","native_raw","print_verbatim","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","0","0","0","Group","Locate","Passwd","belongs_to","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","fmt","fmt","from","from","get_groups","get_groups_gnu","gid","gid","gid2grp","grp2gid","into","into","locate","locate","locate","locate","locate","name","name","to_owned","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","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","uio_error","usage","usage","usage","Existing","FileInformation","Logical","Missing","MissingHandling","None","Normal","Physical","ResolveMode","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","canonicalize","clone","clone","clone_into","clone_into","display_permissions","display_permissions_unix","eq","eq","eq","equivalent","equivalent","equivalent","file_size","fmt","fmt","from","from","from","from_file","from_path","has","hash","into","into","into","normalize_path","resolve_relative_path","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","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","equivalent","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","Lines","borrow","borrow_mut","from","into","into_iter","lines","next","try_from","try_into","type_id","Memo","apply","borrow","borrow_mut","from","into","new","run_all","try_from","try_into","type_id","get_umask","parse_mode","parse_numeric","parse_symbolic","strip_minus_from_mode","is_wsl_1","is_wsl_2","mute_sigpipe_panic","ParseFailure","ParseSizeError","SizeTooBig","borrow","borrow_mut","description","eq","equivalent","fmt","fmt","from","into","ne","parse_size","to_string","try_from","try_into","type_id","0","0","from_str","All","All","Changes","ChownExecutor","First","Group","IfFrom","None","Normal","Silent","TraverseSymlinks","User","UserGroup","Verbose","Verbosity","VerbosityLevel","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","chown_base","clone","clone","clone_into","clone_into","dereference","dest_gid","dest_uid","entries","eq","eq","eq","equivalent","exec","files","filter","fmt","fmt","from","from","from","from","from","groups_only","into","into","into","into","into","level","ne","options","preserve_root","recursive","to_owned","to_owned","traverse_symlinks","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","verbosity","wrap_chown","0","0","0","1","Group","Locate","Passwd","get_groups","get_groups_gnu","gid","gid","gid2grp","grp2gid","locate","name","name","uid","uid2usr","user_dir","user_info","user_passwd","user_shell","usr2uid","ARG_FILES","ARG_GROUP","ARG_OWNER","FROM","RECURSIVE","REFERENCE","dereference","preserve_root","traverse","verbosity","DEREFERENCE","NO_DEREFERENCE","NO_PRESERVE","PRESERVE","EVERY","NO_TRAVERSE","TRAVERSE","CHANGES","QUIET","SILENT","VERBOSE","Error","Result","pipe","splice","splice_exact","vmsplice","ChildExt","Code","ExitStatus","Signal","borrow","borrow_mut","clone","clone_into","code","eq","equivalent","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","0","0","Range","borrow","borrow_mut","cmp","complement","contain","eq","equivalent","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","drop","endutxent","exit_status","from","from","getutxent","host","into","into","into_inner","into_iter","is_user_process","iter_all_records","iter_all_records_from","login_time","next","pid","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::ConversionResult","","uucore::backup_control","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","uucore::backup_control::BackupError","","","","uucore::backup_control::arguments","","","","","","uucore::display","","","","","","","","","","","","","","","","","","","","","","","","uucore::encoding","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","uucore::encoding::DecodeError","","","uucore::entries","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","uucore::error","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","uucore::fs","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","uucore::fsext","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","uucore::lines","","","","","","","","","","","uucore::memo","","","","","","","","","","","uucore::mode","","","","","uucore::os","","uucore::panic","uucore::parse_size","","","","","","","","","","","","","","","","","","uucore::parse_size::ParseSizeError","","uucore::parse_time","uucore::perms","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","uucore::perms::IfFrom","","","","uucore::perms::entries","","","","","","","","","","","","","","","","","","","uucore::perms::options","","","","","","","","","","uucore::perms::options::dereference","","uucore::perms::options::preserve_root","","uucore::perms::options::traverse","","","uucore::perms::options::verbosity","","","","uucore::pipes","","","","","","uucore::process","","","","","","","","","","","","","","","","","","","","","","","","","","","","","uucore::process::ExitStatus","","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 these …","convenience function for a more slim interface","Display an error and std::process::exit","Unwrap a std::result::Result, crashing instead of …","","","Get password/group file entry","All utils return exit with an exit code. Usually, the …","Derive the complete execution phrase for “usage”.","","","","","Set of functions to manage files and symlinks","Set of functions to manage file systems","","","","","Iterate over lines, including the line ending character(s).","","Memo runner of printf Takes a format string and arguments","Set of functions to parse modes","","Custom panic hooks that allow silencing certain types of …","","","Common functions to manage permissions","","Set of functions to manage IDs","","A fixed-size ring buffer.","","Display a crate::error::UError and set global exit code.","Show an error to stderr in a similar style to GNU …","Show a warning to stderr in a similar style to GNU …","Display an error and set global exit code in error case.","Show a bad invocation help message in a similar style to …","Print a warning message to stderr.","","","","","","","","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 to apply quoting to strings.","A wrapper around string types for displaying with quoting …","","","","","","","Toggle forced quoting. If true, quotes are added even if …","","","","Like quote(), but don’t actually add quotes unless …","Like quote(), but don’t actually add quotes unless …","Quote a string with the default style for the platform.","Quote an OsStr with the default style for the platform.","Like println_verbatim, without the trailing newline.","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 passwd.pw_gid","AKA group.gr_gid","","","","","","","","","","AKA passwd.pw_name","AKA group.gr_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 and …","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 default …","","","","","","","","","","","","Set the exit code for the program if uumain returns Ok(()).","Strip the trailing “ (os error XX)“ from io error …","","","","","","","","","","","","","","","","","Shorthand to construct UIoError-instances.","Print usage help to a custom error.","Print usage help to a custom error.","","Resolve symbolic links, ignoring errors on the final …","Information to uniquely identify a file","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.","","","","","","","","","","","","","","","","","","","Get information from a currently open file","Get information for a given path.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Read file system list.","","","","","","","","","","","","","","","","","","","","","An iterator over the lines of an instance of BufRead.","","","","","","Returns an iterator over the lines, including line ending …","","","","","","","","","","","","","","","","","","","","","Test if the program is running under WSL","","Terminate without error on panics that occur due to broken …","","","","","","","","","","","","","","Parse a size string into a number of bytes.","","","","","","","","","","","","","","","","","","","","","","","The various level of verbosity","","","","","","","","","","","Base implementation for chgrp and chown.","","","","","","","","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…","AKA passwd.pw_gid","AKA group.gr_gid","","","","AKA passwd.pw_name","AKA group.gr_name","AKA passwd.pw_uid","","AKA passwd.pw_dir","AKA passwd.pw_gecos","AKA passwd.pw_passwd","AKA passwd.pw_shell","","","","","","","","","","","","","","","","","","","","","","","Nix’s main error type.","Nix Result Type","A wrapper around nix::unistd::pipe that ensures the pipe …","Less noisy wrapper around nix::fcntl::splice.","Splice wrapper which fully finishes the write.","Copy data from bytes into target, which must be a pipe.","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 specified …","","","","","","","","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 utmpx","","","Iterate through all the utmp records.","Iterate through all the utmp records from a specific file.","A.K.A. ut.ut_tv","","A.K.A. ut.ut_pid","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,2,1,2,1,3,3,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,2,1,2,1,2,1,0,0,0,0,4,5,6,0,0,0,6,0,7,6,7,7,7,0,7,6,7,6,7,7,6,0,0,7,6,7,6,7,6,6,7,6,0,7,6,6,7,6,7,6,7,6,7,6,6,8,9,8,9,0,0,0,0,0,0,0,0,10,10,10,10,10,10,10,10,10,10,11,11,10,10,0,0,11,10,10,10,10,10,12,12,12,12,12,12,12,0,13,0,0,13,0,0,13,12,14,14,15,13,12,14,15,13,12,12,12,0,15,0,15,13,13,14,15,13,13,13,13,12,15,14,15,13,12,15,15,13,12,13,14,15,13,12,14,15,13,12,14,15,13,12,0,0,16,17,18,0,0,0,19,19,20,19,20,19,20,19,20,19,20,19,20,0,0,19,20,0,0,19,20,21,19,19,20,20,19,20,19,20,19,20,19,20,19,20,19,0,19,19,19,19,0,22,0,0,0,0,0,0,0,23,24,25,22,23,24,25,22,26,26,23,24,22,23,24,23,23,24,24,25,25,22,22,23,24,25,25,22,0,23,24,25,22,27,23,24,23,24,25,22,0,0,23,24,25,22,23,24,25,22,23,24,25,22,23,24,25,22,0,26,26,24,28,0,29,28,0,29,28,29,0,30,28,29,30,28,29,0,28,29,28,29,0,0,30,28,29,30,28,29,30,28,29,30,28,29,30,30,0,30,30,28,29,0,0,28,29,30,28,29,30,28,29,30,28,29,0,0,0,0,0,0,31,32,33,33,33,34,31,32,33,33,35,33,32,35,33,32,35,33,32,35,33,32,35,35,35,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,33,33,35,33,32,31,32,31,32,35,33,32,31,32,35,31,32,32,35,33,32,31,32,35,35,35,31,32,32,33,34,0,0,0,0,35,0,0,0,35,33,32,31,32,31,32,35,33,32,35,33,32,35,33,32,0,36,36,36,36,36,0,36,36,36,36,0,37,37,37,37,37,37,37,37,37,37,0,0,0,0,0,0,0,0,38,0,38,38,38,38,38,38,38,38,38,38,38,0,38,38,38,38,39,40,0,41,42,43,0,42,41,0,42,43,43,0,41,41,43,0,0,41,44,43,45,42,41,44,43,45,42,0,43,45,43,45,44,44,44,0,43,45,42,42,44,44,44,43,45,41,44,43,45,42,45,41,44,43,45,42,45,45,0,44,44,43,45,44,41,44,43,45,42,41,44,43,45,42,41,44,43,45,42,44,0,46,47,48,48,0,0,0,0,0,19,20,0,0,21,19,20,19,0,19,19,19,19,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,0,0,49,0,49,49,49,49,49,49,49,49,49,49,49,0,0,0,0,49,49,50,49,49,49,49,49,49,49,50,51,52,0,53,53,53,0,0,53,53,53,53,53,53,53,53,53,53,53,53,53,53,0,54,54,54,54,54,54,54,54,54,54,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,56,55,56,55,56,0,55,55,56,0,55,55,56,55,56,55,55,55,55,56,55,55,0,55,55,56,55,56,55,55,56,55,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,[[],["str",15]],[[["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,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],null,[[],["str",15]],null,null,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]],[[],["bool",15]],[[],["bool",15]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[["backupmode",4],["path",3],["str",15]],["option",4,[["pathbuf",3]]]],[[]],[[]],[[["backuperror",4]],["bool",15]],[[]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["bool",15]],null,null,null,null,null,null,null,[[],["arg",3]],[[],["arg",3]],[[],["arg",3]],null,null,[[]],[[]],[[],["quoted",3]],[[]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["bool",15]],["quoted",3]],[[]],[[],["quoted",3]],[[]],[[],["quoted",3]],[[],["quoted",3]],[[["str",15]],["quoted",3]],[[["osstr",3]],["quoted",3]],[[["asref",8,[["osstr",3]]]],["result",6]],[[["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]],[[]],[[]],[[["error",3]]],[[["decodeerror",4]]],[[["decodeerror",3]]],[[]],[[]],[[["bool",15]]],[[]],[[]],[[]],[[]],[[["usize",15]]],[[["format",4]]],[[],["option",4,[["error",8]]]],[[]],[[],["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],["str",15]]],[[["write",8],["usize",15],["str",15]],["result",6]],null,null,null,null,null,null,[[],["vec",3,[["gid_t",6]]]],[[]],[[]],[[]],[[]],[[],["passwd",3]],[[],["group",3]],[[]],[[]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[],["ioresult",6,[["vec",3,[["gid_t",6]]]]]],[[["option",4,[["u32",15]]]],["ioresult",6,[["vec",3,[["gid_t",6]]]]]],null,null,[[["gid_t",6]],["ioresult",6,[["string",3]]]],[[["str",15]],["ioresult",6,[["gid_t",6]]]],[[]],[[]],[[],["ioresult",6]],[[["uid_t",6]],["ioresult",6]],[[["str",15]],["ioresult",6]],[[["gid_t",6]],["ioresult",6]],[[["str",15]],["ioresult",6]],null,null,[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],null,[[["uid_t",6]],["ioresult",6,[["string",3]]]],null,null,null,null,[[["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",4,[["error",3]]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",4,[["error",3]]]],[[]],[[]],[[]],[[["error",3]]],[[]],[[],["i32",15]],[[]],[[]],[[]],[[]],[[]],null,null,[[["i32",15],["into",8,[["string",3]]]],["box",3,[["uerror",8]]]],[[["i32",15],["into",8,[["string",3]]]],["box",3,[["uerror",8]]]],[[["errorkind",4],["into",8,[["string",3]]]],["box",3,[["uerror",8]]]],[[["i32",15]],["box",3,[["uerror",8]]]],[[["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]],null,[[],["bool",15]],[[],["bool",15]],[[],["bool",15]],null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[["asref",8,[["path",3]]],["missinghandling",4],["resolvemode",4]],["ioresult",6,[["pathbuf",3]]]],[[],["missinghandling",4]],[[],["resolvemode",4]],[[]],[[]],[[["metadata",3],["bool",15]],["string",3]],[[["mode_t",6],["bool",15]],["string",3]],[[],["bool",15]],[[["missinghandling",4]],["bool",15]],[[["resolvemode",4]],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[],["u64",15]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[],["option",4]],[[["bool",15]],["option",4]],null,[[]],[[]],[[]],[[]],[[["path",3]],["pathbuf",3]],[[["path",3]],["cow",4,[["path",3]]]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["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]],[[],["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]],["result",4,[["error",3]]]],[[],["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]]],[[],["string",3]],[[["mode_t",6],["u64",15]],["str",15]],[[["i64",15]],["cow",4,[["str",15]]]],[[["i64",15],["i64",15]],["string",3]],[[],["vec",3,[["mountinfo",3]]]],null,[[["asref",8,[["path",3]]]],["result",4,[["statfs",3],["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]],null,[[]],[[]],[[]],[[]],[[]],[[["u8",15]],["lines",3]],[[],["option",4,[["result",6,[["vec",3,[["u8",15]]]]]]]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],null,[[["peekable",3]]],[[]],[[]],[[]],[[]],[[["str",15],["peekable",3]],["uresult",6]],[[["str",15]],["uresult",6]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["u32",15]],[[["str",15]],["result",4,[["mode_t",6],["string",3]]]],[[["u32",15],["str",15],["bool",15]],["result",4,[["u32",15],["string",3]]]],[[["u32",15],["str",15],["u32",15],["bool",15]],["result",4,[["u32",15],["string",3]]]],[[["vec",3]],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[]],null,null,null,[[]],[[]],[[],["str",15]],[[["parsesizeerror",4]],["bool",15]],[[],["bool",15]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",4,[["error",3]]]],[[]],[[]],[[["parsesizeerror",4]],["bool",15]],[[["str",15]],["result",4,[["usize",15],["parsesizeerror",4]]]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],null,null,[[["str",15]],["result",4,[["duration",3],["string",3]]]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["app",3],["str",15],["bool",15]],["uresult",6]],[[],["verbositylevel",4]],[[],["verbosity",3]],[[]],[[]],null,null,null,null,[[["verbositylevel",4]],["bool",15]],[[["verbosity",3]],["bool",15]],[[["traversesymlinks",4]],["bool",15]],[[],["bool",15]],[[],["uresult",6]],null,null,[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[]],null,[[]],[[]],[[]],[[]],[[]],null,[[["verbosity",3]],["bool",15]],null,null,null,[[]],[[]],null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],null,[[["asref",8,[["path",3]]],["metadata",3],["option",4,[["u32",15]]],["option",4,[["u32",15]]],["bool",15],["verbosity",3]],["result",4,[["string",3],["string",3]]]],null,null,null,null,null,null,null,[[],["ioresult",6,[["vec",3,[["gid_t",6]]]]]],[[["option",4,[["u32",15]]]],["ioresult",6,[["vec",3,[["gid_t",6]]]]]],null,null,[[["gid_t",6]],["ioresult",6,[["string",3]]]],[[["str",15]],["ioresult",6,[["gid_t",6]]]],[[],["ioresult",6]],null,null,null,[[["uid_t",6]],["ioresult",6,[["string",3]]]],null,null,null,null,[[["str",15]],["ioresult",6,[["uid_t",6]]]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[],["result",6]],[[["usize",15]],["result",6,[["usize",15]]]],[[["usize",15]],["result",6]],[[],["result",6,[["usize",15]]]],null,null,null,null,[[]],[[]],[[],["exitstatus",4]],[[]],[[],["option",4,[["i32",15]]]],[[["exitstatus",4]],["bool",15]],[[],["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,[["exitstatus",4]]]]]],null,null,null,[[]],[[]],[[["range",3]],["ordering",4]],[[],["vec",3,[["range",3]]]],[[["usize",15]],["bool",15]],[[["range",3]],["bool",15]],[[],["bool",15]],[[["formatter",3]],["result",6]],[[]],[[["str",15]],["result",4,[["vec",3],["string",3]]]],[[["str",15]],["result",4,[["str",15]]]],null,[[]],null,[[["range",3]],["bool",15]],[[["range",3]],["option",4,[["ordering",4]]]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],null,[[]],[[]],null,[[]],[[["usize",15]]],[[]],[[["usize",15]]],[[],["option",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],null,null,[[["usize",15]],["bool",15]],[[["str",15]],["option",4,[["usize",15]]]],[[["usize",15]],["option",4,[["str",15]]]],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]],[[["asref",8,[["path",3]]]],["utmpxiter",3]],[[],["tm",3]],[[],["option",4]],[[],["i32",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],["str",15]],["ordering",4]]],"p":[[4,"ConversionResult"],[4,"InvalidEncodingHandling"],[8,"Args"],[13,"Complete"],[13,"Lossy"],[4,"BackupError"],[4,"BackupMode"],[13,"InvalidArgument"],[13,"AmbiguousArgument"],[3,"Quoted"],[8,"Quotable"],[4,"Format"],[4,"DecodeError"],[4,"EncodeError"],[3,"Data"],[13,"Decode"],[13,"DecodeZ85"],[13,"Io"],[3,"Passwd"],[3,"Group"],[8,"Locate"],[3,"ExitCode"],[3,"USimpleError"],[3,"UUsageError"],[3,"UIoError"],[8,"UError"],[8,"FromIo"],[4,"MissingHandling"],[4,"ResolveMode"],[3,"FileInformation"],[8,"FsMeta"],[3,"statfs_fn"],[3,"FsUsage"],[8,"BirthTime"],[3,"MountInfo"],[3,"Lines"],[3,"Memo"],[4,"ParseSizeError"],[13,"ParseFailure"],[13,"SizeTooBig"],[4,"IfFrom"],[4,"TraverseSymlinks"],[4,"VerbosityLevel"],[3,"ChownExecutor"],[3,"Verbosity"],[13,"User"],[13,"Group"],[13,"UserGroup"],[4,"ExitStatus"],[8,"ChildExt"],[13,"Code"],[13,"Signal"],[3,"Range"],[3,"RingBuffer"],[3,"Utmpx"],[3,"UtmpxIter"]]},\
"uucore_procs":{"doc":"","t":[23],"n":["main"],"q":["uucore_procs"],"d":[""],"i":[0],"f":[null],"p":[]},\
"uudoc":{"doc":"","t":[6,5,5,5,5,5,5,5],"n":["UtilityMap","main","util_map","write_description","write_markdown","write_options","write_usage","write_version"],"q":["uudoc","","","","","","",""],"d":["","","","","","","",""],"i":[0,0,0,0,0,0,0,0],"f":[null,[[],["result",6]],[[],["map",3,[["str",15]]]],[[["app",3]],["result",6]],[[["app",3],["str",15]],["result",6]],[[["app",3]],["result",6]],[[["app",3],["str",15]],["result",6]],[[["app",3]],["result",6]]],"p":[]},\
"wc":{"doc":"","t":[5],"n":["main"],"q":["wc"],"d":[""],"i":[0],"f":[[[]]],"p":[]},\
diff --git a/dev/src/uu_dd/parseargs.rs.html b/dev/src/uu_dd/parseargs.rs.html
index a8215f9f0..57ab0c50b 100644
--- a/dev/src/uu_dd/parseargs.rs.html
+++ b/dev/src/uu_dd/parseargs.rs.html
@@ -783,6 +783,14 @@
782783784
+785
+786
+787
+788
+789
+790
+791
+792
// This file is part of the uutils coreutils package.//// (c) Tyler Steele <tyler.steele@protonmail.com>
@@ -1110,6 +1118,14 @@
}
}
+fnshow_zero_multiplier_warning() {
+ show_warning!(
+ "{} is a zero multiplier; use {} if that is intended",
+ "0x".quote(),
+ "00x".quote()
+ );
+}
+
/// Parse bytes using str::parse, then map error if needed.fnparse_bytes_only(s: &str) -> Result<usize, ParseError> {
s.parse()
@@ -1142,13 +1158,6 @@
/// assert_eq!(parse_bytes_no_x("2k").unwrap(), 2 * 1024);/// ```fnparse_bytes_no_x(s: &str) -> Result<usize, ParseError> {
- ifs=="0" {
- show_warning!(
- "{} is a zero multiplier; use {} if that is intended",
- "0x".quote(),
- "00x".quote()
- );
- }
let (num, multiplier) =match (s.find('c'), s.rfind('w'), s.rfind('b')) {
(None, None, None) => matchuucore::parse_size::parse_size(s) {
Ok(n) => (n, 1),
@@ -1186,13 +1195,20 @@
// Split on the 'x' characters. Each component will be parsed// individually, then multiplied together.
- letmuttotal=1;
- forpartins.split('x') {
- letnum=parse_bytes_no_x(part).map_err(|e|e.with_arg(s.to_string()))?;
- total*=num;
+ letparts: Vec<&str>=s.split('x').collect();
+ ifparts.len() ==1 {
+ parse_bytes_no_x(parts[0]).map_err(|e|e.with_arg(s.to_string()))
+ } else {
+ letmuttotal=1;
+ forpartinparts {
+ ifpart=="0" {
+ show_zero_multiplier_warning();
+ }
+ letnum=parse_bytes_no_x(part).map_err(|e|e.with_arg(s.to_string()))?;
+ total*=num;
+ }
+ Ok(total)
}
-
- Ok(total)
}
pubfnparse_ibs(matches: &Matches) -> Result<usize, ParseError> {
diff --git a/dev/src/uu_ls/ls.rs.html b/dev/src/uu_ls/ls.rs.html
index 93ca6782a..f75be6fee 100644
--- a/dev/src/uu_ls/ls.rs.html
+++ b/dev/src/uu_ls/ls.rs.html
@@ -2583,6 +2583,16 @@
258225832584
+2585
+2586
+2587
+2588
+2589
+2590
+2591
+2592
+2593
+2594
// This file is part of the uutils coreutils package.//// (c) Jeremiah Peschka <jeremiah.peschka@gmail.com>
@@ -3994,7 +4004,8 @@ only ignore '.' and '..'.",
// if not, check if we can use Path metadatamatchget_metadata(self.p_buf.as_path(), self.must_dereference) {
Err(err) => {
- let_=out.flush();
+ // FIXME: A bit tricky to propagate the result here
+ out.flush().unwrap();
leterrno=err.raw_os_error().unwrap_or(1i32);
// a bad fd will throw an error when dereferenced,// but GNU will not throw an error until a bad fd "dir"
@@ -4058,7 +4069,7 @@ only ignore '.' and '..'.",
sort_entries(&mutfiles, config, &mutout);
sort_entries(&mutdirs, config, &mutout);
- display_items(&files, config, &mutout);
+ display_items(&files, config, &mutout)?;
for (pos, path_data) indirs.iter().enumerate() {
// Do read_dir call here to match GNU semantics by printing
@@ -4066,7 +4077,7 @@ only ignore '.' and '..'.",
letread_dir=matchfs::read_dir(&path_data.p_buf) {
Err(err) => {
// flush stdout buffer before the error to preserve formatting and order
- let_=out.flush();
+ out.flush()?;
show!(LsError::IOErrorContext(err, path_data.p_buf.clone()));
continue;
}
@@ -4076,12 +4087,12 @@ only ignore '.' and '..'.",
// Print dir heading - name... 'total' comes after error displayifinitial_locs_len>1||config.recursive {
ifpos.eq(&0usize) &&files.is_empty() {
- let_=writeln!(out, "{}:", path_data.p_buf.display());
+ writeln!(out, "{}:", path_data.p_buf.display())?;
} else {
- let_=writeln!(out, "\n{}:", path_data.p_buf.display());
+ writeln!(out, "\n{}:", path_data.p_buf.display())?;
}
}
- enter_directory(path_data, read_dir, config, &mutout);
+ enter_directory(path_data, read_dir, config, &mutout)?;
}
Ok(())
@@ -4155,7 +4166,7 @@ only ignore '.' and '..'.",
read_dir: ReadDir,
config: &Config,
out: &mutBufWriter<Stdout>,
-) {
+) -> UResult<()> {
// Create vec of entries with initial dot filesletmutentries: Vec<PathData>=ifconfig.files==Files::All {
vec![
@@ -4185,7 +4196,7 @@ only ignore '.' and '..'.",
letdir_entry=matchraw_entry {
Ok(path) => path,
Err(err) => {
- let_=out.flush();
+ out.flush()?;
show!(LsError::IOError(err));
continue;
}
@@ -4203,10 +4214,10 @@ only ignore '.' and '..'.",
// Print total after any error displayifconfig.format==Format::Long {
- display_total(&entries, config, out);
+ display_total(&entries, config, out)?;
}
- display_items(&entries, config, out);
+ display_items(&entries, config, out)?;
ifconfig.recursive {
foreinentries
@@ -4218,17 +4229,19 @@ only ignore '.' and '..'.",
{
matchfs::read_dir(&e.p_buf) {
Err(err) => {
- let_=out.flush();
+ out.flush()?;
show!(LsError::IOErrorContext(err, e.p_buf.clone()));
continue;
}
Ok(rd) => {
- let_=writeln!(out, "\n{}:", e.p_buf.display());
- enter_directory(e, rd, config, out);
+ writeln!(out, "\n{}:", e.p_buf.display())?;
+ enter_directory(e, rd, config, out)?;
}
}
}
}
+
+ Ok(())
}
fnget_metadata(p_buf: &Path, dereference: bool) -> std::io::Result<Metadata> {
@@ -4276,7 +4289,7 @@ only ignore '.' and '..'.",
format!("{:<width$}", string, width=count)
}
-fndisplay_total(items: &[PathData], config: &Config, out: &mutBufWriter<Stdout>) {
+fndisplay_total(items: &[PathData], config: &Config, out: &mutBufWriter<Stdout>) -> UResult<()> {
letmuttotal_size=0;
foriteminitems {
total_size+=item
@@ -4284,10 +4297,11 @@ only ignore '.' and '..'.",
.as_ref()
.map_or(0, |md|get_block_size(md, config));
}
- let_=writeln!(out, "total {}", display_size(total_size, config));
+ writeln!(out, "total {}", display_size(total_size, config))?;
+ Ok(())
}
-fndisplay_items(items: &[PathData], config: &Config, out: &mutBufWriter<Stdout>) {
+fndisplay_items(items: &[PathData], config: &Config, out: &mutBufWriter<Stdout>) -> UResult<()> {
// `-Z`, `--context`:// Display the SELinux security context or '?' if none is found. When used with the `-l`// option, print the security context to the left of the size column.
@@ -4296,7 +4310,7 @@ only ignore '.' and '..'.",
letpadding_collection=calculate_padding_collection(items, config, out);
foriteminitems {
- display_item_long(item, &padding_collection, config, out);
+ display_item_long(item, &padding_collection, config, out)?;
}
} else {
letmutlongest_context_len=1;
@@ -4333,13 +4347,13 @@ only ignore '.' and '..'.",
.into_iter();
matchconfig.format {
- Format::Columns => display_grid(names, config.width, Direction::TopToBottom, out),
- Format::Across => display_grid(names, config.width, Direction::LeftToRight, out),
+ Format::Columns => display_grid(names, config.width, Direction::TopToBottom, out)?,
+ Format::Across => display_grid(names, config.width, Direction::LeftToRight, out)?,
Format::Commas => {
letmutcurrent_col=0;
letmutnames=names;
ifletSome(name) =names.next() {
- let_=write!(out, "{}", name.contents);
+ write!(out, "{}", name.contents)?;
current_col=name.widthasu16+2;
}
fornameinnames {
@@ -4347,25 +4361,27 @@ only ignore '.' and '..'.",
// If the width is 0 we print one single lineifconfig.width!=0&¤t_col+name_width+1>config.width {
current_col=name_width+2;
- let_=write!(out, ",\n{}", name.contents);
+ write!(out, ",\n{}", name.contents)?;
} else {
current_col+=name_width+2;
- let_=write!(out, ", {}", name.contents);
+ write!(out, ", {}", name.contents)?;
}
}
// Current col is never zero again if names have been printed.// So we print a newline.ifcurrent_col>0 {
- let_=writeln!(out,);
+ writeln!(out,)?;
}
}
_ => {
fornameinnames {
- let_=writeln!(out, "{}", name.contents);
+ writeln!(out, "{}", name.contents)?;
}
}
- }
+ };
}
+
+ Ok(())
}
fnget_block_size(md: &Metadata, config: &Config) -> u64 {
@@ -4384,6 +4400,7 @@ only ignore '.' and '..'.",
#[cfg(not(unix))]
{
+ // Silence linter warning about `config` being unused for windows.let_=config;
// no way to get block size for windows, fall-back to file sizemd.len()
@@ -4395,19 +4412,19 @@ only ignore '.' and '..'.",
width: u16,
direction: Direction,
out: &mutBufWriter<Stdout>,
-) {
+) -> UResult<()> {
ifwidth==0 {
// If the width is 0 we print one single lineletmutprinted_something=false;
fornameinnames {
ifprinted_something {
- let_=write!(out, " ");
+ write!(out, " ")?;
}
printed_something=true;
- let_=write!(out, "{}", name.contents);
+ write!(out, "{}", name.contents)?;
}
ifprinted_something {
- let_=writeln!(out);
+ writeln!(out)?;
}
} else {
letmutgrid=Grid::new(GridOptions {
@@ -4421,14 +4438,15 @@ only ignore '.' and '..'.",
matchgrid.fit_into_width(widthasusize) {
Some(output) => {
- let_=write!(out, "{}", output);
+ write!(out, "{}", output)?;
}
// Width is too small for the grid, so we fit it in one columnNone => {
- let_=write!(out, "{}", grid.fit_into_columns(1));
+ write!(out, "{}", grid.fit_into_columns(1))?;
}
}
}
+ Ok(())
}
/// This writes to the BufWriter out a single string of the output of `ls -l`.
@@ -4464,16 +4482,16 @@ only ignore '.' and '..'.",
padding: &PaddingCollection,
config: &Config,
out: &mutBufWriter<Stdout>,
-) {
+) -> UResult<()> {
ifletSome(md) =item.md(out) {
#[cfg(unix)]
{
ifconfig.inode {
- let_=write!(out, "{} ", pad_left(&get_inode(md), padding.inode),);
+ write!(out, "{} ", pad_left(&get_inode(md), padding.inode))?;
}
}
- let_=write!(
+ write!(
out,
"{}{} {}",
display_permissions(md, true),
@@ -4484,49 +4502,49 @@ only ignore '.' and '..'.",
} else {
""
},
- pad_left(&display_symlink_count(md), padding.link_count),
- );
+ pad_left(&display_symlink_count(md), padding.link_count)
+ )?;
ifconfig.long.owner {
- let_=write!(
+ write!(
out,
" {}",
- pad_right(&display_uname(md, config), padding.uname),
- );
+ pad_right(&display_uname(md, config), padding.uname)
+ )?;
}
ifconfig.long.group {
- let_=write!(
+ write!(
out,
" {}",
- pad_right(&display_group(md, config), padding.group),
- );
+ pad_right(&display_group(md, config), padding.group)
+ )?;
}
ifconfig.context {
- let_=write!(
+ write!(
out,
" {}",
- pad_right(&item.security_context, padding.context),
- );
+ pad_right(&item.security_context, padding.context)
+ )?;
}
// Author is only different from owner on GNU/Hurd, so we reuse// the owner, since GNU/Hurd is not currently supported by Rust.ifconfig.long.author {
- let_=write!(
+ write!(
out,
" {}",
- pad_right(&display_uname(md, config), padding.uname),
- );
+ pad_right(&display_uname(md, config), padding.uname)
+ )?;
}
matchdisplay_size_or_rdev(md, config) {
SizeOrDeviceId::Size(size) => {
- let_=write!(out, " {}", pad_left(&size, padding.size),);
+ write!(out, " {}", pad_left(&size, padding.size))?;
}
SizeOrDeviceId::Device(major, minor) => {
- let_=write!(
+ write!(
out,
" {}, {}",
pad_left(
@@ -4547,19 +4565,19 @@ only ignore '.' and '..'.",
#[cfg(unix)]padding.minor,
),
- );
+ )?;
}
};
letdfn=display_file_name(item, config, None, 0, out).contents;
- let_=writeln!(out, " {} {}", display_date(md, config), dfn);
+ writeln!(out, " {} {}", display_date(md, config), dfn)?;
} else {
// this 'else' is expressly for the case of a dangling symlink/restricted file#[cfg(unix)]
{
ifconfig.inode {
- let_=write!(out, "{} ", pad_left("?", padding.inode),);
+ write!(out, "{} ", pad_left("?", padding.inode))?;
}
}
@@ -4596,7 +4614,7 @@ only ignore '.' and '..'.",
}
};
- let_=write!(
+ write!(
out,
"{}{} {}",
format_args!("{}?????????", leading_char),
@@ -4607,42 +4625,44 @@ only ignore '.' and '..'.",
} else {
""
},
- pad_left("?", padding.link_count),
- );
+ pad_left("?", padding.link_count)
+ )?;
ifconfig.long.owner {
- let_=write!(out, " {}", pad_right("?", padding.uname));
+ write!(out, " {}", pad_right("?", padding.uname))?;
}
ifconfig.long.group {
- let_=write!(out, " {}", pad_right("?", padding.group));
+ write!(out, " {}", pad_right("?", padding.group))?;
}
ifconfig.context {
- let_=write!(
+ write!(
out,
" {}",
pad_right(&item.security_context, padding.context)
- );
+ )?;
}
// Author is only different from owner on GNU/Hurd, so we reuse// the owner, since GNU/Hurd is not currently supported by Rust.ifconfig.long.author {
- let_=write!(out, " {}", pad_right("?", padding.uname));
+ write!(out, " {}", pad_right("?", padding.uname))?;
}
letdfn=display_file_name(item, config, None, 0, out).contents;
letdate_len=12;
- let_=writeln!(
+ writeln!(
out,
" {} {} {}",
pad_left("?", padding.size),
pad_left("?", date_len),
dfn,
- );
+ )?;
}
+
+ Ok(())
}
#[cfg(unix)]
diff --git a/dev/src/uu_printf/printf.rs.html b/dev/src/uu_printf/printf.rs.html
index 6ee163c61..77b51f343 100644
--- a/dev/src/uu_printf/printf.rs.html
+++ b/dev/src/uu_printf/printf.rs.html
@@ -591,7 +591,7 @@ COPYRIGHT :
None => vec![],
};
- memo::Memo::run_all(format_string, &values[..]);
+ memo::Memo::run_all(format_string, &values[..])?;
Ok(())
}
diff --git a/dev/src/uu_seq/seq.rs.html b/dev/src/uu_seq/seq.rs.html
index a66edec01..7ec2cfd8c 100644
--- a/dev/src/uu_seq/seq.rs.html
+++ b/dev/src/uu_seq/seq.rs.html
@@ -364,6 +364,14 @@
363364365
+366
+367
+368
+369
+370
+371
+372
+373
// spell-checker:ignore (vars) charf decf floatf intf scif strf Cninety//! Sub is a token that represents a
@@ -427,8 +451,10 @@
//! it is created by Sub's implementation of the Tokenizer trait//! Subs which have numeric field chars make use of the num_format//! submodule
-usecrate::show_error;
+usecrate::error::{UError, UResult};
useitertools::{put_back_n, PutBackN};
+usestd::error::Error;
+usestd::fmt::Display;
usestd::iter::Peekable;
usestd::process::exit;
usestd::slice::Iter;
@@ -442,11 +468,23 @@
constEXIT_ERR: i32=1;
-fnerr_conv(sofar: &str) {
- show_error!("%{}: invalid conversion specification", sofar);
- exit(EXIT_ERR);
+#[derive(Debug)]
+pubenumSubError {
+ InvalidSpec(String),
}
+implDisplayforSubError {
+ fnfmt(&self, f: &mutstd::fmt::Formatter<'_>) -> Result<(), std::fmt::Error> {
+ matchself {
+ Self::InvalidSpec(s) => write!(f, "%{}: invalid conversion specification", s),
+ }
+ }
+}
+
+implErrorforSubError {}
+
+implUErrorforSubError {}
+
fnconvert_asterisk_arg_int(asterisk_arg: &str) -> isize {
// this is a costly way to parse the// args used for asterisk values into integers
@@ -538,14 +576,14 @@
fnfrom_it(
it: &mutPutBackN<Chars>,
args: &mutPeekable<Iter<String>>,
- ) -> Option<Box<dyntoken::Token>> {
+ ) -> UResult<Option<Box<dyntoken::Token>>> {
letmutparser=Self::new();
- ifparser.sub_vals_retrieved(it) {
+ ifparser.sub_vals_retrieved(it)? {
lett: Box<dyntoken::Token>=Self::build_token(parser);
t.print(args);
- Some(t)
+ Ok(Some(t))
} else {
- None
+ Ok(None)
}
}
fnbuild_token(parser: Self) -> Box<dyntoken::Token> {
@@ -573,9 +611,9 @@
));
t
}
- fnsub_vals_retrieved(&mutself, it: &mutPutBackN<Chars>) -> bool {
- if!Self::successfully_eat_prefix(it, &mutself.text_so_far) {
- returnfalse;
+ fnsub_vals_retrieved(&mutself, it: &mutPutBackN<Chars>) -> UResult<bool> {
+ if!Self::successfully_eat_prefix(it, &mutself.text_so_far)? {
+ returnOk(false);
}
// this fn in particular is much longer than it needs to be// .could get a lot
@@ -599,7 +637,7 @@
'-'|'*'|'0'..='9' => {
if!self.past_decimal {
ifself.min_width_is_asterisk||self.specifiers_found {
- err_conv(&self.text_so_far);
+ returnErr(SubError::InvalidSpec(self.text_so_far.clone()).into());
}
ifself.min_width_tmp.is_none() {
self.min_width_tmp=Some(String::new());
@@ -607,7 +645,9 @@
matchself.min_width_tmp.as_mut() {
Some(x) => {
if (ch=='-'||ch=='*') &&!x.is_empty() {
- err_conv(&self.text_so_far);
+ returnErr(
+ SubError::InvalidSpec(self.text_so_far.clone()).into()
+ );
}
ifch=='*' {
self.min_width_is_asterisk=true;
@@ -622,7 +662,7 @@
// second field should never have a// negative valueifself.second_field_is_asterisk||ch=='-'||self.specifiers_found {
- err_conv(&self.text_so_far);
+ returnErr(SubError::InvalidSpec(self.text_so_far.clone()).into());
}
ifself.second_field_tmp.is_none() {
self.second_field_tmp=Some(String::new());
@@ -630,7 +670,9 @@
matchself.second_field_tmp.as_mut() {
Some(x) => {
ifch=='*'&&!x.is_empty() {
- err_conv(&self.text_so_far);
+ returnErr(
+ SubError::InvalidSpec(self.text_so_far.clone()).into()
+ );
}
ifch=='*' {
self.second_field_is_asterisk=true;
@@ -647,7 +689,7 @@
if!self.past_decimal {
self.past_decimal=true;
} else {
- err_conv(&self.text_so_far);
+ returnErr(SubError::InvalidSpec(self.text_so_far.clone()).into());
}
}
xiflegal_fields.binary_search(&x).is_ok() => {
@@ -664,18 +706,18 @@
}
}
_ => {
- err_conv(&self.text_so_far);
+ returnErr(SubError::InvalidSpec(self.text_so_far.clone()).into());
}
}
}
ifself.field_char.is_none() {
- err_conv(&self.text_so_far);
+ returnErr(SubError::InvalidSpec(self.text_so_far.clone()).into());
}
letfield_char_retrieved=self.field_char.unwrap();
ifself.past_decimal&&self.second_field_tmp.is_none() {
self.second_field_tmp=Some(String::from("0"));
}
- self.validate_field_params(field_char_retrieved);
+ self.validate_field_params(field_char_retrieved)?;
// if the dot is provided without a second field// printf interprets it as 0.ifletSome(x) =self.second_field_tmp.as_mut() {
@@ -684,9 +726,12 @@
}
}
- true
+ Ok(true)
}
- fnsuccessfully_eat_prefix(it: &mutPutBackN<Chars>, text_so_far: &mutString) -> bool {
+ fnsuccessfully_eat_prefix(
+ it: &mutPutBackN<Chars>,
+ text_so_far: &mutString,
+ ) -> UResult<bool> {
// get next two chars,// if they're '%%' we're not tokenizing it// else put chars back
@@ -696,12 +741,11 @@
matchn_ch {
Some(x) => {
it.put_back(x);
- true
+ Ok(true)
}
None => {
text_so_far.push('%');
- err_conv(text_so_far);
- false
+ Err(SubError::InvalidSpec(text_so_far.clone()).into())
}
}
} else {
@@ -711,10 +755,10 @@
ifletSome(x) =preface {
it.put_back(x);
};
- false
+ Ok(false)
}
}
- fnvalidate_field_params(&self, field_char: char) {
+ fnvalidate_field_params(&self, field_char: char) -> UResult<()> {
// check for illegal combinations here when possible vs// on each application so we check less per application// to do: move these checks to Sub::new
@@ -726,8 +770,12 @@
||self.past_decimal||self.second_field_tmp.is_some()))
{
- err_conv(&self.text_so_far);
+ // invalid string substitution
+ // to do: include information about an invalid
+ // string substitution
+ returnErr(SubError::InvalidSpec(self.text_so_far.clone()).into());
}
+ Ok(())
}
}
@@ -735,7 +783,7 @@
fnfrom_it(
it: &mutPutBackN<Chars>,
args: &mutPeekable<Iter<String>>,
- ) -> Option<Box<dyntoken::Token>> {
+ ) -> UResult<Option<Box<dyntoken::Token>>> {
SubParser::from_it(it, args)
}
}
diff --git a/dev/src/uucore/features/tokenize/token.rs.html b/dev/src/uucore/features/tokenize/token.rs.html
index a2d1bfaf8..1fe70eda2 100644
--- a/dev/src/uucore/features/tokenize/token.rs.html
+++ b/dev/src/uucore/features/tokenize/token.rs.html
@@ -30,12 +30,16 @@
293031
+32
+33
//! Traits and enums dealing with Tokenization of printf Format Stringuseitertools::PutBackN;
usestd::iter::Peekable;
usestd::slice::Iter;
usestd::str::Chars;
+usecrate::error::UResult;
+
// A token object is an object that can print the expected output// of a contiguous segment of the format string, and// requires at most 1 argument
@@ -59,7 +63,7 @@
fnfrom_it(
it: &mutPutBackN<Chars>,
args: &mutPeekable<Iter<String>>,
- ) -> Option<Box<dynToken>>;
+ ) -> UResult<Option<Box<dynToken>>>;
}
\ No newline at end of file
diff --git a/dev/uu_seq/fn.uu_app.html b/dev/uu_seq/fn.uu_app.html
index 526390392..3f4da1053 100644
--- a/dev/uu_seq/fn.uu_app.html
+++ b/dev/uu_seq/fn.uu_app.html
@@ -1,3 +1,3 @@
uu_app in uu_seq - Rust
-
\ No newline at end of file
diff --git a/dev/uu_seq/fn.uumain.html b/dev/uu_seq/fn.uumain.html
index f9f4bc767..3854fd1a3 100644
--- a/dev/uu_seq/fn.uumain.html
+++ b/dev/uu_seq/fn.uumain.html
@@ -1,3 +1,3 @@
uumain in uu_seq - Rust
-