|
3050 | 3050 | <span id="3050">3050</span>
|
3051 | 3051 | <span id="3051">3051</span>
|
3052 | 3052 | <span id="3052">3052</span>
|
| 3053 | +<span id="3053">3053</span> |
| 3054 | +<span id="3054">3054</span> |
| 3055 | +<span id="3055">3055</span> |
3053 | 3056 | </pre><pre class="rust"><code><span class="comment">// This file is part of the uutils coreutils package.
|
3054 | 3057 | //
|
3055 | 3058 | // (c) Jeremiah Peschka <jeremiah.peschka@gmail.com>
|
|
3091 | 3094 | };
|
3092 | 3095 | <span class="kw">use </span>term_grid::{Cell, Direction, Filling, Grid, GridOptions};
|
3093 | 3096 | <span class="kw">use </span>unicode_width::UnicodeWidthStr;
|
| 3097 | +<span class="attribute">#[cfg(any( |
| 3098 | + target_os = <span class="string">"linux"</span>, |
| 3099 | + target_os = <span class="string">"macos"</span>, |
| 3100 | + target_os = <span class="string">"android"</span>, |
| 3101 | + target_os = <span class="string">"ios" |
| 3102 | +</span>))] |
| 3103 | +</span><span class="kw">use </span>uucore::libc::{dev_t, major, minor}; |
3094 | 3104 | <span class="attribute">#[cfg(unix)]
|
3095 | 3105 | </span><span class="kw">use </span>uucore::libc::{S_IXGRP, S_IXOTH, S_IXUSR};
|
3096 | 3106 | <span class="kw">use </span>uucore::parse_glob;
|
|
3115 | 3125 | <span class="kw">const </span>USAGE: <span class="kw-2">&</span>str = <span class="string">"{} [OPTION]... [FILE]..."</span>;
|
3116 | 3126 |
|
3117 | 3127 | <span class="kw">pub mod </span>options {
|
3118 |
| - |
3119 | 3128 | <span class="kw">pub mod </span>format {
|
3120 | 3129 | <span class="kw">pub static </span>ONE_LINE: <span class="kw-2">&</span>str = <span class="string">"1"</span>;
|
3121 | 3130 | <span class="kw">pub static </span>LONG: <span class="kw-2">&</span>str = <span class="string">"long"</span>;
|
|
3406 | 3415 | <span class="prelude-val">Ok</span>(TimeStyle::Locale)
|
3407 | 3416 | }
|
3408 | 3417 | }
|
| 3418 | + |
3409 | 3419 | <span class="kw">enum </span>Dereference {
|
3410 | 3420 | <span class="prelude-val">None</span>,
|
3411 | 3421 | DirArgs,
|
|
5435 | 5445 | padding
|
5436 | 5446 | .size
|
5437 | 5447 | .saturating_sub(padding.minor.saturating_add(<span class="number">2usize</span>))
|
5438 |
| - ) |
| 5448 | + ), |
5439 | 5449 | ),
|
5440 | 5450 | pad_left(
|
5441 | 5451 | <span class="kw-2">&</span>minor,
|
|
5695 | 5705 | }
|
5696 | 5706 |
|
5697 | 5707 | <span class="kw">fn </span>display_len_or_rdev(metadata: <span class="kw-2">&</span>Metadata, config: <span class="kw-2">&</span>Config) -> SizeOrDeviceId {
|
5698 |
| - <span class="attribute">#[cfg(any(target_os = <span class="string">"macos"</span>, target_os = <span class="string">"ios"</span>))] |
5699 |
| - </span>{ |
5700 |
| - <span class="kw">let </span>ft = metadata.file_type(); |
5701 |
| - <span class="kw">if </span>ft.is_char_device() || ft.is_block_device() { |
5702 |
| - <span class="kw">let </span>dev: u64 = metadata.rdev(); |
5703 |
| - <span class="kw">let </span>major = (dev >> <span class="number">24</span>) <span class="kw">as </span>u8; |
5704 |
| - <span class="kw">let </span>minor = (dev & <span class="number">0xff</span>) <span class="kw">as </span>u8; |
5705 |
| - <span class="kw">return </span>SizeOrDeviceId::Device(major.to_string(), minor.to_string()); |
5706 |
| - } |
5707 |
| - } |
5708 |
| - <span class="attribute">#[cfg(any(target_os = <span class="string">"linux"</span>, target_os = <span class="string">"android"</span>))] |
| 5708 | + <span class="attribute">#[cfg(any( |
| 5709 | + target_os = <span class="string">"linux"</span>, |
| 5710 | + target_os = <span class="string">"macos"</span>, |
| 5711 | + target_os = <span class="string">"android"</span>, |
| 5712 | + target_os = <span class="string">"ios" |
| 5713 | + </span>))] |
5709 | 5714 | </span>{
|
5710 | 5715 | <span class="kw">let </span>ft = metadata.file_type();
|
5711 | 5716 | <span class="kw">if </span>ft.is_char_device() || ft.is_block_device() {
|
5712 |
| - <span class="kw">let </span>dev: u64 = metadata.rdev(); |
5713 |
| - <span class="kw">let </span>major = (dev >> <span class="number">8</span>) <span class="kw">as </span>u8; |
5714 |
| - <span class="kw">let </span>minor = (dev & <span class="number">0xff</span>) <span class="kw">as </span>u8; |
| 5717 | + <span class="comment">// A type cast is needed here as the `dev_t` type varies across OSes. |
| 5718 | + </span><span class="kw">let </span>dev = metadata.rdev() <span class="kw">as </span>dev_t; |
| 5719 | + <span class="kw">let </span>major = <span class="kw">unsafe </span>{ major(dev) }; |
| 5720 | + <span class="kw">let </span>minor = <span class="kw">unsafe </span>{ minor(dev) }; |
5715 | 5721 | <span class="kw">return </span>SizeOrDeviceId::Device(major.to_string(), minor.to_string());
|
5716 | 5722 | }
|
5717 | 5723 | }
|
|
0 commit comments