|
362 | 362 | <span id="362">362</span>
|
363 | 363 | <span id="363">363</span>
|
364 | 364 | <span id="364">364</span>
|
| 365 | +<span id="365">365</span> |
| 366 | +<span id="366">366</span> |
| 367 | +<span id="367">367</span> |
| 368 | +<span id="368">368</span> |
| 369 | +<span id="369">369</span> |
| 370 | +<span id="370">370</span> |
| 371 | +<span id="371">371</span> |
| 372 | +<span id="372">372</span> |
| 373 | +<span id="373">373</span> |
| 374 | +<span id="374">374</span> |
| 375 | +<span id="375">375</span> |
| 376 | +<span id="376">376</span> |
| 377 | +<span id="377">377</span> |
| 378 | +<span id="378">378</span> |
| 379 | +<span id="379">379</span> |
| 380 | +<span id="380">380</span> |
| 381 | +<span id="381">381</span> |
| 382 | +<span id="382">382</span> |
| 383 | +<span id="383">383</span> |
| 384 | +<span id="384">384</span> |
| 385 | +<span id="385">385</span> |
365 | 386 | </pre><pre class="rust"><code><span class="comment">// * This file is part of the uutils coreutils package.</span>
|
366 | 387 | <span class="comment">// *</span>
|
367 | 388 | <span class="comment">// * For the full copyright and license information, please view the LICENSE</span>
|
|
667 | 688 | .<span class="ident">into</span>());
|
668 | 689 | }
|
669 | 690 |
|
| 691 | + <span class="comment">// If in `--parents` mode, create all the necessary ancestor directories.</span> |
| 692 | + <span class="comment">//</span> |
| 693 | + <span class="comment">// For example, if the command is `cp --parents a/b/c d`, that</span> |
| 694 | + <span class="comment">// means we need to copy the two ancestor directories first:</span> |
| 695 | + <span class="comment">//</span> |
| 696 | + <span class="comment">// a -> d/a</span> |
| 697 | + <span class="comment">// a/b -> d/a/b</span> |
| 698 | + <span class="comment">//</span> |
| 699 | + <span class="kw">let</span> <span class="ident">tmp</span> <span class="op">=</span> <span class="kw">if</span> <span class="ident">options</span>.<span class="ident">parents</span> { |
| 700 | + <span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">parent</span>) <span class="op">=</span> <span class="ident">root</span>.<span class="ident">parent</span>() { |
| 701 | + <span class="kw">let</span> <span class="ident">new_target</span> <span class="op">=</span> <span class="ident">target</span>.<span class="ident">join</span>(<span class="ident">parent</span>); |
| 702 | + <span class="ident">std::fs::create_dir_all</span>(<span class="kw-2">&</span><span class="ident">new_target</span>)<span class="question-mark">?</span>; |
| 703 | + <span class="ident">new_target</span> |
| 704 | + } <span class="kw">else</span> { |
| 705 | + <span class="ident">target</span>.<span class="ident">to_path_buf</span>() |
| 706 | + } |
| 707 | + } <span class="kw">else</span> { |
| 708 | + <span class="ident">target</span>.<span class="ident">to_path_buf</span>() |
| 709 | + }; |
| 710 | + <span class="kw">let</span> <span class="ident">target</span> <span class="op">=</span> <span class="ident">tmp</span>.<span class="ident">as_path</span>(); |
| 711 | + |
670 | 712 | <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">hard_links</span>: <span class="ident">Vec</span><span class="op"><</span>(<span class="ident">String</span>, <span class="ident">u64</span>)<span class="op">></span> <span class="op">=</span> <span class="macro">vec!</span>[];
|
671 | 713 | <span class="kw">let</span> <span class="ident">preserve_hard_links</span> <span class="op">=</span> <span class="ident">options</span>.<span class="ident">preserve_hard_links</span>();
|
672 | 714 |
|
|
0 commit comments