|
491 | 491 | <span id="486">486</span>
|
492 | 492 | <span id="487">487</span>
|
493 | 493 | <span id="488">488</span>
|
| 494 | +<span id="489">489</span> |
| 495 | +<span id="490">490</span> |
| 496 | +<span id="491">491</span> |
| 497 | +<span id="492">492</span> |
| 498 | +<span id="493">493</span> |
| 499 | +<span id="494">494</span> |
| 500 | +<span id="495">495</span> |
| 501 | +<span id="496">496</span> |
| 502 | +<span id="497">497</span> |
| 503 | +<span id="498">498</span> |
| 504 | +<span id="499">499</span> |
| 505 | +<span id="500">500</span> |
| 506 | +<span id="501">501</span> |
| 507 | +<span id="502">502</span> |
| 508 | +<span id="503">503</span> |
| 509 | +<span id="504">504</span> |
| 510 | +<span id="505">505</span> |
| 511 | +<span id="506">506</span> |
| 512 | +<span id="507">507</span> |
| 513 | +<span id="508">508</span> |
| 514 | +<span id="509">509</span> |
494 | 515 | </pre><pre class="rust"><code><span class="comment">// This file is part of the uutils coreutils package.</span>
|
495 | 516 | <span class="comment">//</span>
|
496 | 517 | <span class="comment">// (c) Sunrin SHIMURA</span>
|
|
546 | 567 | <span class="doccomment">/// The template suffix contains a path separator (e.g. `"XXXa/b"`).</span>
|
547 | 568 | <span class="ident">SuffixContainsDirSeparator</span>(<span class="ident">String</span>),
|
548 | 569 | <span class="ident">InvalidTemplate</span>(<span class="ident">String</span>),
|
| 570 | + <span class="ident">TooManyTemplates</span>, |
549 | 571 | }
|
550 | 572 |
|
551 |
| -<span class="kw">impl</span> <span class="ident">UError</span> <span class="kw">for</span> <span class="ident">MkTempError</span> {} |
| 573 | +<span class="kw">impl</span> <span class="ident">UError</span> <span class="kw">for</span> <span class="ident">MkTempError</span> { |
| 574 | + <span class="kw">fn</span> <span class="ident">usage</span>(<span class="kw-2">&</span><span class="self">self</span>) -> <span class="ident">bool</span> { |
| 575 | + <span class="macro">matches!</span>(<span class="self">self</span>, <span class="ident"><span class="self">Self</span>::TooManyTemplates</span>) |
| 576 | + } |
| 577 | +} |
552 | 578 |
|
553 | 579 | <span class="kw">impl</span> <span class="ident">Error</span> <span class="kw">for</span> <span class="ident">MkTempError</span> {}
|
554 | 580 |
|
|
578 | 604 | <span class="string">"invalid template, {}; with --tmpdir, it may not be absolute"</span>,
|
579 | 605 | <span class="ident">s</span>.<span class="ident">quote</span>()
|
580 | 606 | ),
|
| 607 | + <span class="ident">TooManyTemplates</span> => { |
| 608 | + <span class="macro">write!</span>(<span class="ident">f</span>, <span class="string">"too many templates"</span>) |
| 609 | + } |
581 | 610 | }
|
582 | 611 | }
|
583 | 612 | }
|
|
801 | 830 |
|
802 | 831 | <span class="attribute">#[<span class="ident">uucore::main</span>]</span>
|
803 | 832 | <span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">uumain</span>(<span class="ident">args</span>: <span class="kw">impl</span> <span class="ident">uucore::Args</span>) -> <span class="ident">UResult</span><span class="op"><</span>()<span class="op">></span> {
|
804 |
| - <span class="kw">let</span> <span class="ident">matches</span> <span class="op">=</span> <span class="ident">uu_app</span>().<span class="ident">try_get_matches_from</span>(<span class="ident">args</span>)<span class="question-mark">?</span>; |
| 833 | + <span class="kw">let</span> <span class="ident">args</span> <span class="op">=</span> <span class="ident">args</span>.<span class="ident">collect_str_lossy</span>().<span class="ident">accept_any</span>(); |
| 834 | + |
| 835 | + <span class="kw">let</span> <span class="ident">matches</span> <span class="op">=</span> <span class="ident">uu_app</span>().<span class="ident">try_get_matches_from</span>(<span class="kw-2">&</span><span class="ident">args</span>)<span class="question-mark">?</span>; |
805 | 836 |
|
806 | 837 | <span class="comment">// Parse command-line options into a format suitable for the</span>
|
807 | 838 | <span class="comment">// application logic.</span>
|
808 | 839 | <span class="kw">let</span> <span class="ident">options</span> <span class="op">=</span> <span class="ident">Options::from</span>(<span class="kw-2">&</span><span class="ident">matches</span>);
|
| 840 | + |
| 841 | + <span class="kw">if</span> <span class="ident">env::var</span>(<span class="string">"POSIXLY_CORRECT"</span>).<span class="ident">is_ok</span>() { |
| 842 | + <span class="comment">// If POSIXLY_CORRECT was set, template MUST be the last argument.</span> |
| 843 | + <span class="kw">if</span> <span class="ident">is_tmpdir_argument_actually_the_template</span>(<span class="kw-2">&</span><span class="ident">matches</span>) <span class="op">|</span><span class="op">|</span> <span class="ident">matches</span>.<span class="ident">is_present</span>(<span class="ident">ARG_TEMPLATE</span>) { |
| 844 | + <span class="comment">// Template argument was provided, check if was the last one.</span> |
| 845 | + <span class="kw">if</span> <span class="ident">args</span>.<span class="ident">last</span>().<span class="ident">unwrap</span>() <span class="op">!</span><span class="op">=</span> <span class="kw-2">&</span><span class="ident">options</span>.<span class="ident">template</span> { |
| 846 | + <span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">Box::new</span>(<span class="ident">MkTempError::TooManyTemplates</span>)); |
| 847 | + } |
| 848 | + } |
| 849 | + } |
| 850 | + |
809 | 851 | <span class="kw">let</span> <span class="ident">dry_run</span> <span class="op">=</span> <span class="ident">options</span>.<span class="ident">dry_run</span>;
|
810 | 852 | <span class="kw">let</span> <span class="ident">suppress_file_err</span> <span class="op">=</span> <span class="ident">options</span>.<span class="ident">quiet</span>;
|
811 | 853 | <span class="kw">let</span> <span class="ident">make_dir</span> <span class="op">=</span> <span class="ident">options</span>.<span class="ident">directory</span>;
|
|
0 commit comments