From 6cc3eda8e409c1c4d47cca01cadda7ee218f98f6 Mon Sep 17 00:00:00 2001 From: Nicolas Boichat Date: Thu, 24 Jul 2025 09:15:22 +0800 Subject: [PATCH] df: table: Print raw bytes Final step, let's just print the raw bytes now. --- src/uu/df/src/table.rs | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/uu/df/src/table.rs b/src/uu/df/src/table.rs index 90a03a9c9..8d8d5af3d 100644 --- a/src/uu/df/src/table.rs +++ b/src/uu/df/src/table.rs @@ -17,6 +17,7 @@ use uucore::fsext::{FsUsage, MountInfo}; use uucore::locale::get_message; use std::ffi::OsString; +use std::iter; use std::ops::AddAssign; /// A row in the filesystem usage data table. @@ -486,28 +487,28 @@ impl Table { for row in &self.rows { let mut col_iter = row.iter().enumerate().peekable(); while let Some((i, elem)) = col_iter.next() { - // TODO: Fix this, and print the bytes directly. - let elem = String::from_utf8(elem.bytes.clone()).unwrap_or("meh?".to_string()); let is_last_col = col_iter.peek().is_none(); + let pad_width = self.widths[i].saturating_sub(elem.width); match self.alignments.get(i) { Some(Alignment::Left) => { - if is_last_col { - // no trailing spaces in last column - write!(writer, "{elem}")?; - } else { - write!(writer, "{elem:>())?; } } Some(Alignment::Right) => { - write!(writer, "{elem:>width$}", width = self.widths[i])?; + writer.write_all(&iter::repeat_n(b' ', pad_width).collect::>())?; + writer.write_all(&elem.bytes)?; } None => break, } if !is_last_col { // column separator - write!(writer, " ")?; + writer.write_all(b" ")?; } }