|
407 | 407 | <span id="406">406</span>
|
408 | 408 | <span id="407">407</span>
|
409 | 409 | <span id="408">408</span>
|
| 410 | +<span id="409">409</span> |
| 411 | +<span id="410">410</span> |
| 412 | +<span id="411">411</span> |
| 413 | +<span id="412">412</span> |
| 414 | +<span id="413">413</span> |
| 415 | +<span id="414">414</span> |
| 416 | +<span id="415">415</span> |
| 417 | +<span id="416">416</span> |
| 418 | +<span id="417">417</span> |
| 419 | +<span id="418">418</span> |
| 420 | +<span id="419">419</span> |
| 421 | +<span id="420">420</span> |
| 422 | +<span id="421">421</span> |
| 423 | +<span id="422">422</span> |
| 424 | +<span id="423">423</span> |
| 425 | +<span id="424">424</span> |
| 426 | +<span id="425">425</span> |
| 427 | +<span id="426">426</span> |
| 428 | +<span id="427">427</span> |
| 429 | +<span id="428">428</span> |
| 430 | +<span id="429">429</span> |
| 431 | +<span id="430">430</span> |
| 432 | +<span id="431">431</span> |
| 433 | +<span id="432">432</span> |
| 434 | +<span id="433">433</span> |
| 435 | +<span id="434">434</span> |
| 436 | +<span id="435">435</span> |
| 437 | +<span id="436">436</span> |
| 438 | +<span id="437">437</span> |
| 439 | +<span id="438">438</span> |
| 440 | +<span id="439">439</span> |
| 441 | +<span id="440">440</span> |
| 442 | +<span id="441">441</span> |
| 443 | +<span id="442">442</span> |
| 444 | +<span id="443">443</span> |
| 445 | +<span id="444">444</span> |
| 446 | +<span id="445">445</span> |
| 447 | +<span id="446">446</span> |
| 448 | +<span id="447">447</span> |
410 | 449 | </pre><pre class="rust"><code><span class="comment">// This file is part of the uutils coreutils package.</span>
|
411 | 450 | <span class="comment">//</span>
|
412 | 451 | <span class="comment">// (c) Fangxu Hu <framlog@gmail.com></span>
|
|
470 | 509 | <span class="ident">exclude</span>: <span class="ident">HashSet</span><span class="op"><</span><span class="ident">String</span><span class="op">></span>,
|
471 | 510 | }
|
472 | 511 |
|
| 512 | +<span class="doccomment">/// A block size to use in condensing the display of a large number of bytes.</span> |
| 513 | +<span class="doccomment">///</span> |
| 514 | +<span class="doccomment">/// The [`Bytes`] variant represents a static block size. The</span> |
| 515 | +<span class="doccomment">/// [`HumanReadableDecimal`] and [`HumanReadableBinary`] variants</span> |
| 516 | +<span class="doccomment">/// represent dynamic block sizes: as the number of bytes increases,</span> |
| 517 | +<span class="doccomment">/// the divisor increases as well (for example, from 1 to 1,000 to</span> |
| 518 | +<span class="doccomment">/// 1,000,000 and so on in the case of [`HumanReadableDecimal`]).</span> |
| 519 | +<span class="doccomment">///</span> |
| 520 | +<span class="doccomment">/// The default variant is `Bytes(1024)`.</span> |
| 521 | +<span class="kw">enum</span> <span class="ident">BlockSize</span> { |
| 522 | + <span class="doccomment">/// A fixed number of bytes.</span> |
| 523 | + <span class="doccomment">///</span> |
| 524 | + <span class="doccomment">/// The number must be positive.</span> |
| 525 | + <span class="ident">Bytes</span>(<span class="ident">u64</span>), |
| 526 | + |
| 527 | + <span class="doccomment">/// Use the largest divisor corresponding to a unit, like B, K, M, G, etc.</span> |
| 528 | + <span class="doccomment">///</span> |
| 529 | + <span class="doccomment">/// This variant represents powers of 1,000. Contrast with</span> |
| 530 | + <span class="doccomment">/// [`HumanReadableBinary`], which represents powers of 1,024.</span> |
| 531 | + <span class="ident">HumanReadableDecimal</span>, |
| 532 | + |
| 533 | + <span class="doccomment">/// Use the largest divisor corresponding to a unit, like B, K, M, G, etc.</span> |
| 534 | + <span class="doccomment">///</span> |
| 535 | + <span class="doccomment">/// This variant represents powers of 1,000. Contrast with</span> |
| 536 | + <span class="doccomment">/// [`HumanReadableBinary`], which represents powers of 1,024.</span> |
| 537 | + <span class="ident">HumanReadableBinary</span>, |
| 538 | +} |
| 539 | + |
| 540 | +<span class="kw">impl</span> <span class="ident">Default</span> <span class="kw">for</span> <span class="ident">BlockSize</span> { |
| 541 | + <span class="kw">fn</span> <span class="ident">default</span>() -> <span class="self">Self</span> { |
| 542 | + <span class="ident"><span class="self">Self</span>::Bytes</span>(<span class="number">1024</span>) |
| 543 | + } |
| 544 | +} |
| 545 | + |
| 546 | +<span class="kw">impl</span> <span class="ident">From</span><span class="op"><</span><span class="kw-2">&</span><span class="ident">ArgMatches</span><span class="op">></span> <span class="kw">for</span> <span class="ident">BlockSize</span> { |
| 547 | + <span class="kw">fn</span> <span class="ident">from</span>(<span class="ident">matches</span>: <span class="kw-2">&</span><span class="ident">ArgMatches</span>) -> <span class="self">Self</span> { |
| 548 | + <span class="kw">if</span> <span class="ident">matches</span>.<span class="ident">is_present</span>(<span class="ident">OPT_HUMAN_READABLE</span>) { |
| 549 | + <span class="ident"><span class="self">Self</span>::HumanReadableBinary</span> |
| 550 | + } <span class="kw">else</span> <span class="kw">if</span> <span class="ident">matches</span>.<span class="ident">is_present</span>(<span class="ident">OPT_HUMAN_READABLE_2</span>) { |
| 551 | + <span class="ident"><span class="self">Self</span>::HumanReadableDecimal</span> |
| 552 | + } <span class="kw">else</span> { |
| 553 | + <span class="ident"><span class="self">Self</span>::default</span>() |
| 554 | + } |
| 555 | + } |
| 556 | +} |
| 557 | + |
473 | 558 | <span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Default</span>)]</span>
|
474 | 559 | <span class="kw">struct</span> <span class="ident">Options</span> {
|
475 | 560 | <span class="ident">show_local_fs</span>: <span class="ident">bool</span>,
|
476 | 561 | <span class="ident">show_all_fs</span>: <span class="ident">bool</span>,
|
477 | 562 | <span class="ident">show_listed_fs</span>: <span class="ident">bool</span>,
|
478 | 563 | <span class="ident">show_fs_type</span>: <span class="ident">bool</span>,
|
479 | 564 | <span class="ident">show_inode_instead</span>: <span class="ident">bool</span>,
|
480 |
| - <span class="comment">// block_size: usize,</span> |
481 |
| - <span class="ident">human_readable_base</span>: <span class="ident">i64</span>, |
| 565 | + <span class="ident">block_size</span>: <span class="ident">BlockSize</span>, |
482 | 566 | <span class="ident">fs_selector</span>: <span class="ident">FsSelector</span>,
|
483 | 567 | }
|
484 | 568 |
|
|
491 | 575 | <span class="ident">show_listed_fs</span>: <span class="bool-val">false</span>,
|
492 | 576 | <span class="ident">show_fs_type</span>: <span class="ident">matches</span>.<span class="ident">is_present</span>(<span class="ident">OPT_PRINT_TYPE</span>),
|
493 | 577 | <span class="ident">show_inode_instead</span>: <span class="ident">matches</span>.<span class="ident">is_present</span>(<span class="ident">OPT_INODES</span>),
|
494 |
| - <span class="ident">human_readable_base</span>: <span class="kw">if</span> <span class="ident">matches</span>.<span class="ident">is_present</span>(<span class="ident">OPT_HUMAN_READABLE</span>) { |
495 |
| - <span class="number">1024</span> |
496 |
| - } <span class="kw">else</span> <span class="kw">if</span> <span class="ident">matches</span>.<span class="ident">is_present</span>(<span class="ident">OPT_HUMAN_READABLE_2</span>) { |
497 |
| - <span class="number">1000</span> |
498 |
| - } <span class="kw">else</span> { |
499 |
| - <span class="op">-</span><span class="number">1</span> |
500 |
| - }, |
| 578 | + <span class="ident">block_size</span>: <span class="ident">BlockSize::from</span>(<span class="ident">matches</span>), |
501 | 579 | <span class="ident">fs_selector</span>: <span class="ident">FsSelector::from</span>(<span class="ident">matches</span>),
|
502 | 580 | }
|
503 | 581 | }
|
|
0 commit comments