|
536 | 536 | <span id="531">531</span>
|
537 | 537 | <span id="532">532</span>
|
538 | 538 | <span id="533">533</span>
|
539 |
| -<span id="534">534</span> |
540 |
| -<span id="535">535</span> |
541 |
| -<span id="536">536</span> |
542 | 539 | </pre><pre class="rust"><code><span class="comment">// * This file is part of the uutils coreutils package.</span>
|
543 | 540 | <span class="comment">// *</span>
|
544 | 541 | <span class="comment">// * (c) Joseph Crail <jbcrail@gmail.com></span>
|
|
555 | 552 | <span class="kw">use</span> <span class="ident">uucore::display::Quotable</span>;
|
556 | 553 | <span class="kw">use</span> <span class="ident">uucore::error</span>::{<span class="ident">UError</span>, <span class="ident">UResult</span>};
|
557 | 554 | <span class="kw">use</span> <span class="ident">uucore::format_usage</span>;
|
558 |
| -<span class="kw">use</span> <span class="ident">uucore::fs::is_symlink</span>; |
| 555 | +<span class="kw">use</span> <span class="ident">uucore::fs</span>::{<span class="ident">is_symlink</span>, <span class="ident">paths_refer_to_same_file</span>}; |
559 | 556 |
|
560 | 557 | <span class="kw">use</span> <span class="ident">std::borrow::Cow</span>;
|
561 | 558 | <span class="kw">use</span> <span class="ident">std::error::Error</span>;
|
|
976 | 973 | };
|
977 | 974 | <span class="kw">if</span> <span class="ident">settings</span>.<span class="ident">backup</span> <span class="op">==</span> <span class="ident">BackupMode::ExistingBackup</span> <span class="op">&&</span> <span class="op">!</span><span class="ident">settings</span>.<span class="ident">symbolic</span> {
|
978 | 975 | <span class="comment">// when ln --backup f f, it should detect that it is the same file</span>
|
979 |
| - <span class="kw">let</span> <span class="ident">dst_abs</span> <span class="op">=</span> <span class="ident">canonicalize</span>(<span class="ident">dst</span>, <span class="ident">MissingHandling::Normal</span>, <span class="ident">ResolveMode::Logical</span>)<span class="question-mark">?</span>; |
980 |
| - <span class="kw">let</span> <span class="ident">source_abs</span> <span class="op">=</span> <span class="ident">canonicalize</span>( |
981 |
| - <span class="ident">source</span>.<span class="ident">clone</span>(), |
982 |
| - <span class="ident">MissingHandling::Normal</span>, |
983 |
| - <span class="ident">ResolveMode::Logical</span>, |
984 |
| - )<span class="question-mark">?</span>; |
985 |
| - <span class="kw">if</span> <span class="ident">dst_abs</span> <span class="op">==</span> <span class="ident">source_abs</span> { |
| 976 | + <span class="kw">if</span> <span class="ident">paths_refer_to_same_file</span>(<span class="ident">src</span>, <span class="ident">dst</span>, <span class="bool-val">true</span>) { |
986 | 977 | <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">LnError::SameFile</span>().<span class="ident">into</span>());
|
987 | 978 | }
|
988 | 979 | }
|
|
1001 | 992 | <span class="comment">// In case of error, don't do anything</span>
|
1002 | 993 | }
|
1003 | 994 | <span class="ident">OverwriteMode::Force</span> => {
|
| 995 | + <span class="kw">if</span> <span class="op">!</span><span class="ident">is_symlink</span>(<span class="ident">dst</span>) <span class="op">&&</span> <span class="ident">paths_refer_to_same_file</span>(<span class="ident">src</span>, <span class="ident">dst</span>, <span class="bool-val">true</span>) { |
| 996 | + <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">LnError::SameFile</span>().<span class="ident">into</span>()); |
| 997 | + } |
1004 | 998 | <span class="kw">if</span> <span class="ident">fs::remove_file</span>(<span class="ident">dst</span>).<span class="ident">is_ok</span>() {};
|
1005 | 999 | <span class="comment">// In case of error, don't do anything</span>
|
1006 | 1000 | }
|
|
0 commit comments