Support negative padding size in printf and friends

as it seams you can do something like
        printf ("A%*s%s/\n", -5, "B", "CC");
and it will print the padding to the left
This commit is contained in:
oddcoder
2020-05-23 14:59:12 +02:00
parent 1b131b8c60
commit ee5e2bad5a
+9 -3
View File
@@ -660,16 +660,22 @@ unsafe fn inner_printf<W: Write>(w: W, format: *const c_char, mut ap: VaList) ->
};
let alternate = arg.alternate;
let zero = arg.zero;
let left = arg.left;
let mut left = arg.left;
let sign_reserve = arg.sign_reserve;
let sign_always = arg.sign_always;
let min_width = arg.min_width.resolve(&mut varargs, &mut ap);
let precision = arg.precision.map(|n| n.resolve(&mut varargs, &mut ap));
let pad_zero = arg.pad_zero.resolve(&mut varargs, &mut ap);
let pad_space = match pad_zero {
0 => min_width,
let signed_space = match pad_zero {
0 => min_width as isize,
_ => 0,
};
let pad_space = if signed_space < 0 {
left = true;
-signed_space as usize
} else {
signed_space as usize
};
let intkind = arg.intkind;
let fmt = arg.fmt;
let fmtkind = arg.fmtkind;