|
441 | 441 | <a href="#441" id="441">441</a>
|
442 | 442 | <a href="#442" id="442">442</a>
|
443 | 443 | <a href="#443" id="443">443</a>
|
| 444 | +<a href="#444" id="444">444</a> |
| 445 | +<a href="#445" id="445">445</a> |
| 446 | +<a href="#446" id="446">446</a> |
| 447 | +<a href="#447" id="447">447</a> |
| 448 | +<a href="#448" id="448">448</a> |
| 449 | +<a href="#449" id="449">449</a> |
| 450 | +<a href="#450" id="450">450</a> |
| 451 | +<a href="#451" id="451">451</a> |
| 452 | +<a href="#452" id="452">452</a> |
| 453 | +<a href="#453" id="453">453</a> |
| 454 | +<a href="#454" id="454">454</a> |
444 | 455 | </pre><pre class="rust"><code><span class="comment">// This file is part of the uutils coreutils package.
|
445 | 456 | //
|
446 | 457 | // (c) Jian Zeng <anonymousknight96@gmail.com>
|
|
455 | 466 | <span class="kw">use </span>std::env;
|
456 | 467 | <span class="kw">use </span>std::fs::File;
|
457 | 468 | <span class="kw">use </span>std::io::{BufRead, BufReader};
|
| 469 | +<span class="kw">use </span>std::path::Path; |
458 | 470 |
|
459 | 471 | <span class="kw">use </span>clap::{crate_version, Arg, ArgAction, Command};
|
460 | 472 | <span class="kw">use </span>uucore::display::Quotable;
|
|
485 | 497 | }
|
486 | 498 |
|
487 | 499 | <span class="kw">pub fn </span>guess_syntax() -> OutputFmt {
|
488 |
| - <span class="kw">use </span>std::path::Path; |
489 | 500 | <span class="kw">match </span>env::var(<span class="string">"SHELL"</span>) {
|
490 | 501 | <span class="prelude-val">Ok</span>(<span class="kw-2">ref </span>s) <span class="kw">if </span>!s.is_empty() => {
|
491 | 502 | <span class="kw">let </span>shell_path: <span class="kw-2">&</span>Path = s.as_ref();
|
|
581 | 592 | <span class="kw">let </span>fin = BufReader::new(std::io::stdin());
|
582 | 593 | result = parse(fin.lines().filter_map(Result::ok), <span class="kw-2">&</span>out_format, files[<span class="number">0</span>]);
|
583 | 594 | } <span class="kw">else </span>{
|
584 |
| - <span class="kw">match </span>File::open(files[<span class="number">0</span>]) { |
| 595 | + <span class="kw">let </span>path = Path::new(files[<span class="number">0</span>]); |
| 596 | + <span class="kw">if </span>path.is_dir() { |
| 597 | + <span class="kw">return </span><span class="prelude-val">Err</span>(USimpleError::new( |
| 598 | + <span class="number">2</span>, |
| 599 | + <span class="macro">format!</span>(<span class="string">"expected file, got directory {}"</span>, path.quote()), |
| 600 | + )); |
| 601 | + } |
| 602 | + <span class="kw">match </span>File::open(path) { |
585 | 603 | <span class="prelude-val">Ok</span>(f) => {
|
586 | 604 | <span class="kw">let </span>fin = BufReader::new(f);
|
587 |
| - result = parse(fin.lines().filter_map(Result::ok), <span class="kw-2">&</span>out_format, files[<span class="number">0</span>]); |
| 605 | + result = parse( |
| 606 | + fin.lines().map_while(Result::ok), |
| 607 | + <span class="kw-2">&</span>out_format, |
| 608 | + <span class="kw-2">&</span>path.to_string_lossy(), |
| 609 | + ); |
588 | 610 | }
|
589 | 611 | <span class="prelude-val">Err</span>(e) => {
|
590 | 612 | <span class="kw">return </span><span class="prelude-val">Err</span>(USimpleError::new(
|
591 | 613 | <span class="number">1</span>,
|
592 |
| - <span class="macro">format!</span>(<span class="string">"{}: {}"</span>, files[<span class="number">0</span>].maybe_quote(), e), |
| 614 | + <span class="macro">format!</span>(<span class="string">"{}: {}"</span>, path.maybe_quote(), e), |
593 | 615 | ));
|
594 | 616 | }
|
595 | 617 | }
|
|
0 commit comments