1
Fork 0
mirror of https://github.com/RGBCube/uutils-coreutils synced 2025-07-28 11:37:44 +00:00

printf: remove unneeded Result<> from resolve_asterisk* functions

This commit is contained in:
Dorian Peron 2025-01-31 16:54:01 +01:00
parent 707e346b84
commit dcc2f1b72c

View file

@ -315,7 +315,7 @@ impl Spec {
match self { match self {
Self::Char { width, align_left } => { Self::Char { width, align_left } => {
let (width, neg_width) = let (width, neg_width) =
resolve_asterisk_maybe_negative(*width, &mut args)?.unwrap_or_default(); resolve_asterisk_maybe_negative(*width, &mut args).unwrap_or_default();
write_padded(writer, &[args.get_char()], width, *align_left || neg_width) write_padded(writer, &[args.get_char()], width, *align_left || neg_width)
} }
Self::String { Self::String {
@ -324,7 +324,7 @@ impl Spec {
precision, precision,
} => { } => {
let (width, neg_width) = let (width, neg_width) =
resolve_asterisk_maybe_negative(*width, &mut args)?.unwrap_or_default(); resolve_asterisk_maybe_negative(*width, &mut args).unwrap_or_default();
// GNU does do this truncation on a byte level, see for instance: // GNU does do this truncation on a byte level, see for instance:
// printf "%.1s" 🙃 // printf "%.1s" 🙃
@ -332,7 +332,7 @@ impl Spec {
// For now, we let printf panic when we truncate within a code point. // For now, we let printf panic when we truncate within a code point.
// TODO: We need to not use Rust's formatting for aligning the output, // TODO: We need to not use Rust's formatting for aligning the output,
// so that we can just write bytes to stdout without panicking. // so that we can just write bytes to stdout without panicking.
let precision = resolve_asterisk(*precision, &mut args)?; let precision = resolve_asterisk(*precision, &mut args);
let s = args.get_str(); let s = args.get_str();
let truncated = match precision { let truncated = match precision {
Some(p) if p < s.len() => &s[..p], Some(p) if p < s.len() => &s[..p],
@ -381,8 +381,8 @@ impl Spec {
positive_sign, positive_sign,
alignment, alignment,
} => { } => {
let width = resolve_asterisk(*width, &mut args)?.unwrap_or(0); let width = resolve_asterisk(*width, &mut args).unwrap_or(0);
let precision = resolve_asterisk(*precision, &mut args)?.unwrap_or(0); let precision = resolve_asterisk(*precision, &mut args).unwrap_or(0);
let i = args.get_i64(); let i = args.get_i64();
if precision as u64 > i32::MAX as u64 { if precision as u64 > i32::MAX as u64 {
@ -404,8 +404,8 @@ impl Spec {
precision, precision,
alignment, alignment,
} => { } => {
let width = resolve_asterisk(*width, &mut args)?.unwrap_or(0); let width = resolve_asterisk(*width, &mut args).unwrap_or(0);
let precision = resolve_asterisk(*precision, &mut args)?.unwrap_or(0); let precision = resolve_asterisk(*precision, &mut args).unwrap_or(0);
let i = args.get_u64(); let i = args.get_u64();
if precision as u64 > i32::MAX as u64 { if precision as u64 > i32::MAX as u64 {
@ -430,8 +430,8 @@ impl Spec {
alignment, alignment,
precision, precision,
} => { } => {
let width = resolve_asterisk(*width, &mut args)?.unwrap_or(0); let width = resolve_asterisk(*width, &mut args).unwrap_or(0);
let precision = resolve_asterisk(*precision, &mut args)?.unwrap_or(6); let precision = resolve_asterisk(*precision, &mut args).unwrap_or(6);
let f = args.get_f64(); let f = args.get_f64();
if precision as u64 > i32::MAX as u64 { if precision as u64 > i32::MAX as u64 {
@ -457,19 +457,19 @@ impl Spec {
fn resolve_asterisk<'a>( fn resolve_asterisk<'a>(
option: Option<CanAsterisk<usize>>, option: Option<CanAsterisk<usize>>,
mut args: impl ArgumentIter<'a>, mut args: impl ArgumentIter<'a>,
) -> Result<Option<usize>, FormatError> { ) -> Option<usize> {
Ok(match option { match option {
None => None, None => None,
Some(CanAsterisk::Asterisk) => Some(usize::try_from(args.get_u64()).ok().unwrap_or(0)), Some(CanAsterisk::Asterisk) => Some(usize::try_from(args.get_u64()).ok().unwrap_or(0)),
Some(CanAsterisk::Fixed(w)) => Some(w), Some(CanAsterisk::Fixed(w)) => Some(w),
}) }
} }
fn resolve_asterisk_maybe_negative<'a>( fn resolve_asterisk_maybe_negative<'a>(
option: Option<CanAsterisk<usize>>, option: Option<CanAsterisk<usize>>,
mut args: impl ArgumentIter<'a>, mut args: impl ArgumentIter<'a>,
) -> Result<Option<(usize, bool)>, FormatError> { ) -> Option<(usize, bool)> {
Ok(match option { match option {
None => None, None => None,
Some(CanAsterisk::Asterisk) => { Some(CanAsterisk::Asterisk) => {
let nb = args.get_i64(); let nb = args.get_i64();
@ -480,7 +480,7 @@ fn resolve_asterisk_maybe_negative<'a>(
} }
} }
Some(CanAsterisk::Fixed(w)) => Some((w, false)), Some(CanAsterisk::Fixed(w)) => Some((w, false)),
}) }
} }
fn write_padded( fn write_padded(