Skip to content

Commit f5b5427

Browse files
committed
deploy: f0e8d44
1 parent 5a9be09 commit f5b5427

14 files changed

+260
-96
lines changed

dev/search-index.js

+2-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dev/src/uu_dd/parseargs.rs.html

+3-3
Original file line numberDiff line numberDiff line change
@@ -942,7 +942,7 @@
942942

943943
<span class="attr">#[allow(clippy::cognitive_complexity)]
944944
</span><span class="kw">fn </span>parse_input_flags(<span class="kw-2">&amp;mut </span><span class="self">self</span>, val: <span class="kw-2">&amp;</span>str) -&gt; <span class="prelude-ty">Result</span>&lt;(), ParseError&gt; {
945-
<span class="kw">let </span><span class="kw-2">mut </span>i = <span class="kw-2">&amp;mut </span><span class="self">self</span>.iflag;
945+
<span class="kw">let </span>i = <span class="kw-2">&amp;mut </span><span class="self">self</span>.iflag;
946946
<span class="kw">for </span>f <span class="kw">in </span>val.split(<span class="string">&#39;,&#39;</span>) {
947947
<span class="kw">match </span>f {
948948
<span class="comment">// Common flags
@@ -974,7 +974,7 @@
974974

975975
<span class="attr">#[allow(clippy::cognitive_complexity)]
976976
</span><span class="kw">fn </span>parse_output_flags(<span class="kw-2">&amp;mut </span><span class="self">self</span>, val: <span class="kw-2">&amp;</span>str) -&gt; <span class="prelude-ty">Result</span>&lt;(), ParseError&gt; {
977-
<span class="kw">let </span><span class="kw-2">mut </span>o = <span class="kw-2">&amp;mut </span><span class="self">self</span>.oflag;
977+
<span class="kw">let </span>o = <span class="kw-2">&amp;mut </span><span class="self">self</span>.oflag;
978978
<span class="kw">for </span>f <span class="kw">in </span>val.split(<span class="string">&#39;,&#39;</span>) {
979979
<span class="kw">match </span>f {
980980
<span class="comment">// Common flags
@@ -1004,7 +1004,7 @@
10041004
}
10051005

10061006
<span class="kw">fn </span>parse_conv_flags(<span class="kw-2">&amp;mut </span><span class="self">self</span>, val: <span class="kw-2">&amp;</span>str) -&gt; <span class="prelude-ty">Result</span>&lt;(), ParseError&gt; {
1007-
<span class="kw">let </span><span class="kw-2">mut </span>c = <span class="kw-2">&amp;mut </span><span class="self">self</span>.conv;
1007+
<span class="kw">let </span>c = <span class="kw-2">&amp;mut </span><span class="self">self</span>.conv;
10081008
<span class="kw">for </span>f <span class="kw">in </span>val.split(<span class="string">&#39;,&#39;</span>) {
10091009
<span class="kw">match </span>f {
10101010
<span class="comment">// Conversion

dev/src/uu_mv/mv.rs.html

+75-79
Original file line numberDiff line numberDiff line change
@@ -611,8 +611,6 @@
611611
<a href="#611" id="611">611</a>
612612
<a href="#612" id="612">612</a>
613613
<a href="#613" id="613">613</a>
614-
<a href="#614" id="614">614</a>
615-
<a href="#615" id="615">615</a>
616614
</pre><pre class="rust"><code><span class="comment">// This file is part of the uutils coreutils package.
617615
//
618616
// (c) Orvar Segerström &lt;orvarsegerstrom@gmail.com&gt;
@@ -640,6 +638,7 @@
640638
<span class="kw">use </span>uucore::backup_control::{<span class="self">self</span>, BackupMode};
641639
<span class="kw">use </span>uucore::display::Quotable;
642640
<span class="kw">use </span>uucore::error::{set_exit_code, FromIo, UError, UResult, USimpleError, UUsageError};
641+
<span class="kw">use </span>uucore::fs::are_hardlinks_to_same_file;
643642
<span class="kw">use </span>uucore::update_control::{<span class="self">self</span>, UpdateMode};
644643
<span class="kw">use </span>uucore::{format_usage, help_about, help_section, help_usage, prompt_yes, show};
645644

@@ -852,93 +851,90 @@
852851
}
853852
}
854853

855-
<span class="kw">fn </span>exec(files: <span class="kw-2">&amp;</span>[OsString], b: <span class="kw-2">&amp;</span>Behavior) -&gt; UResult&lt;()&gt; {
856-
<span class="kw">let </span>paths: Vec&lt;PathBuf&gt; = {
857-
<span class="kw">let </span>paths = files.iter().map(Path::new);
854+
<span class="kw">fn </span>parse_paths(files: <span class="kw-2">&amp;</span>[OsString], b: <span class="kw-2">&amp;</span>Behavior) -&gt; Vec&lt;PathBuf&gt; {
855+
<span class="kw">let </span>paths = files.iter().map(Path::new);
858856

859-
<span class="comment">// Strip slashes from path, if strip opt present
860-
</span><span class="kw">if </span>b.strip_slashes {
861-
paths
862-
.map(|p| p.components().as_path().to_owned())
863-
.collect::&lt;Vec&lt;PathBuf&gt;&gt;()
864-
} <span class="kw">else </span>{
865-
paths.map(|p| p.to_owned()).collect::&lt;Vec&lt;PathBuf&gt;&gt;()
866-
}
867-
};
857+
<span class="kw">if </span>b.strip_slashes {
858+
paths
859+
.map(|p| p.components().as_path().to_owned())
860+
.collect::&lt;Vec&lt;PathBuf&gt;&gt;()
861+
} <span class="kw">else </span>{
862+
paths.map(|p| p.to_owned()).collect::&lt;Vec&lt;PathBuf&gt;&gt;()
863+
}
864+
}
868865

869-
<span class="kw">if let </span><span class="prelude-val">Some</span>(<span class="kw-2">ref </span>name) = b.target_dir {
870-
<span class="kw">return </span>move_files_into_dir(<span class="kw-2">&amp;</span>paths, <span class="kw-2">&amp;</span>PathBuf::from(name), b);
866+
<span class="kw">fn </span>handle_two_paths(source: <span class="kw-2">&amp;</span>Path, target: <span class="kw-2">&amp;</span>Path, b: <span class="kw-2">&amp;</span>Behavior) -&gt; UResult&lt;()&gt; {
867+
<span class="kw">if </span>source.symlink_metadata().is_err() {
868+
<span class="kw">return </span><span class="prelude-val">Err</span>(MvError::NoSuchFile(source.quote().to_string()).into());
871869
}
872-
<span class="kw">match </span>paths.len() {
873-
<span class="comment">/* case 0/1 are not possible thanks to clap */
874-
</span><span class="number">2 </span>=&gt; {
875-
<span class="kw">let </span>source = <span class="kw-2">&amp;</span>paths[<span class="number">0</span>];
876-
<span class="kw">let </span>target = <span class="kw-2">&amp;</span>paths[<span class="number">1</span>];
877-
<span class="comment">// Here we use the `symlink_metadata()` method instead of `exists()`,
878-
// since it handles dangling symlinks correctly. The method gives an
879-
// `Ok()` results unless the source does not exist, or the user
880-
// lacks permission to access metadata.
881-
</span><span class="kw">if </span>source.symlink_metadata().is_err() {
882-
<span class="kw">return </span><span class="prelude-val">Err</span>(MvError::NoSuchFile(source.quote().to_string()).into());
883-
}
884870

885-
<span class="comment">// GNU semantics are: if the source and target are the same, no move occurs and we print an error
886-
</span><span class="kw">if </span>source.eq(target) {
887-
<span class="comment">// Done to match GNU semantics for the dot file
888-
</span><span class="kw">if </span>source.eq(Path::new(<span class="string">&quot;.&quot;</span>)) || source.ends_with(<span class="string">&quot;/.&quot;</span>) || source.is_file() {
889-
<span class="kw">return </span><span class="prelude-val">Err</span>(MvError::SameFile(
890-
source.quote().to_string(),
891-
target.quote().to_string(),
892-
)
893-
.into());
894-
} <span class="kw">else </span>{
895-
<span class="kw">return </span><span class="prelude-val">Err</span>(MvError::SelfSubdirectory(source.display().to_string()).into());
896-
}
897-
}
871+
<span class="kw">if </span>(source.eq(target) || are_hardlinks_to_same_file(source, target))
872+
&amp;&amp; b.backup != BackupMode::SimpleBackup
873+
{
874+
<span class="kw">if </span>source.eq(Path::new(<span class="string">&quot;.&quot;</span>)) || source.ends_with(<span class="string">&quot;/.&quot;</span>) || source.is_file() {
875+
<span class="kw">return </span><span class="prelude-val">Err</span>(
876+
MvError::SameFile(source.quote().to_string(), target.quote().to_string()).into(),
877+
);
878+
} <span class="kw">else </span>{
879+
<span class="kw">return </span><span class="prelude-val">Err</span>(MvError::SelfSubdirectory(source.display().to_string()).into());
880+
}
881+
}
898882

899-
<span class="kw">if </span>target.is_dir() {
900-
<span class="kw">if </span>b.no_target_dir {
901-
<span class="kw">if </span>source.is_dir() {
902-
rename(source, target, b, <span class="prelude-val">None</span>).map_err_context(|| {
903-
<span class="macro">format!</span>(<span class="string">&quot;cannot move {} to {}&quot;</span>, source.quote(), target.quote())
904-
})
905-
} <span class="kw">else </span>{
906-
<span class="prelude-val">Err</span>(MvError::DirectoryToNonDirectory(target.quote().to_string()).into())
907-
}
908-
} <span class="kw">else </span>{
909-
move_files_into_dir(<span class="kw-2">&amp;</span>[source.clone()], target, b)
910-
}
911-
} <span class="kw">else if </span>target.exists() &amp;&amp; source.is_dir() {
912-
<span class="kw">match </span>b.overwrite {
913-
OverwriteMode::NoClobber =&gt; <span class="kw">return </span><span class="prelude-val">Ok</span>(()),
914-
OverwriteMode::Interactive =&gt; {
915-
<span class="kw">if </span>!<span class="macro">prompt_yes!</span>(<span class="string">&quot;overwrite {}? &quot;</span>, target.quote()) {
916-
<span class="kw">return </span><span class="prelude-val">Err</span>(io::Error::new(io::ErrorKind::Other, <span class="string">&quot;&quot;</span>).into());
917-
}
918-
}
919-
OverwriteMode::Force =&gt; {}
920-
};
921-
<span class="prelude-val">Err</span>(MvError::NonDirectoryToDirectory(
922-
source.quote().to_string(),
923-
target.quote().to_string(),
924-
)
925-
.into())
883+
<span class="kw">if </span>target.is_dir() {
884+
<span class="kw">if </span>b.no_target_dir {
885+
<span class="kw">if </span>source.is_dir() {
886+
rename(source, target, b, <span class="prelude-val">None</span>).map_err_context(|| {
887+
<span class="macro">format!</span>(<span class="string">&quot;cannot move {} to {}&quot;</span>, source.quote(), target.quote())
888+
})
926889
} <span class="kw">else </span>{
927-
rename(source, target, b, <span class="prelude-val">None</span>).map_err(|e| USimpleError::new(<span class="number">1</span>, <span class="macro">format!</span>(<span class="string">&quot;{e}&quot;</span>)))
890+
<span class="prelude-val">Err</span>(MvError::DirectoryToNonDirectory(target.quote().to_string()).into())
928891
}
892+
} <span class="kw">else </span>{
893+
move_files_into_dir(<span class="kw-2">&amp;</span>[source.to_path_buf()], target, b)
929894
}
930-
<span class="kw">_ </span>=&gt; {
931-
<span class="kw">if </span>b.no_target_dir {
932-
<span class="kw">return </span><span class="prelude-val">Err</span>(UUsageError::new(
933-
<span class="number">1</span>,
934-
<span class="macro">format!</span>(<span class="string">&quot;mv: extra operand {}&quot;</span>, files[<span class="number">2</span>].quote()),
935-
));
895+
} <span class="kw">else if </span>target.exists() &amp;&amp; source.is_dir() {
896+
<span class="kw">match </span>b.overwrite {
897+
OverwriteMode::NoClobber =&gt; <span class="kw">return </span><span class="prelude-val">Ok</span>(()),
898+
OverwriteMode::Interactive =&gt; {
899+
<span class="kw">if </span>!<span class="macro">prompt_yes!</span>(<span class="string">&quot;overwrite {}? &quot;</span>, target.quote()) {
900+
<span class="kw">return </span><span class="prelude-val">Err</span>(io::Error::new(io::ErrorKind::Other, <span class="string">&quot;&quot;</span>).into());
901+
}
936902
}
937-
<span class="kw">let </span>target_dir = paths.last().unwrap();
938-
<span class="kw">let </span>sources = <span class="kw-2">&amp;</span>paths[..paths.len() - <span class="number">1</span>];
903+
OverwriteMode::Force =&gt; {}
904+
};
905+
<span class="prelude-val">Err</span>(MvError::NonDirectoryToDirectory(
906+
source.quote().to_string(),
907+
target.quote().to_string(),
908+
)
909+
.into())
910+
} <span class="kw">else </span>{
911+
rename(source, target, b, <span class="prelude-val">None</span>).map_err(|e| USimpleError::new(<span class="number">1</span>, <span class="macro">format!</span>(<span class="string">&quot;{e}&quot;</span>)))
912+
}
913+
}
939914

940-
move_files_into_dir(sources, target_dir, b)
941-
}
915+
<span class="kw">fn </span>handle_multiple_paths(paths: <span class="kw-2">&amp;</span>[PathBuf], b: <span class="kw-2">&amp;</span>Behavior) -&gt; UResult&lt;()&gt; {
916+
<span class="kw">if </span>b.no_target_dir {
917+
<span class="kw">return </span><span class="prelude-val">Err</span>(UUsageError::new(
918+
<span class="number">1</span>,
919+
<span class="macro">format!</span>(<span class="string">&quot;mv: extra operand {}&quot;</span>, paths[<span class="number">2</span>].quote()),
920+
));
921+
}
922+
<span class="kw">let </span>target_dir = paths.last().unwrap();
923+
<span class="kw">let </span>sources = <span class="kw-2">&amp;</span>paths[..paths.len() - <span class="number">1</span>];
924+
925+
move_files_into_dir(sources, target_dir, b)
926+
}
927+
928+
<span class="kw">fn </span>exec(files: <span class="kw-2">&amp;</span>[OsString], b: <span class="kw-2">&amp;</span>Behavior) -&gt; UResult&lt;()&gt; {
929+
<span class="kw">let </span>paths = parse_paths(files, b);
930+
931+
<span class="kw">if let </span><span class="prelude-val">Some</span>(<span class="kw-2">ref </span>name) = b.target_dir {
932+
<span class="kw">return </span>move_files_into_dir(<span class="kw-2">&amp;</span>paths, <span class="kw-2">&amp;</span>PathBuf::from(name), b);
933+
}
934+
935+
<span class="kw">match </span>paths.len() {
936+
<span class="number">2 </span>=&gt; handle_two_paths(<span class="kw-2">&amp;</span>paths[<span class="number">0</span>], <span class="kw-2">&amp;</span>paths[<span class="number">1</span>], b),
937+
<span class="kw">_ </span>=&gt; handle_multiple_paths(<span class="kw-2">&amp;</span>paths, b),
942938
}
943939
}
944940

0 commit comments

Comments
 (0)