jay-compositor 1.15.0

The Jay compositor
use crate::utils::str_fmt::StrCtx;
use crate::utils::str_fmt::StrFmt;
use crate::utils::str_fmt::StrFmtFmt;
use uapi::c;

#[derive(Copy, Clone, Debug)]
pub struct MajorMinor {
    pub major: u64,
    pub minor: u64,
}

pub fn major_minor(dev_t: c::dev_t) -> MajorMinor {
    MajorMinor {
        major: uapi::major(dev_t),
        minor: uapi::minor(dev_t),
    }
}

impl StrFmt for MajorMinor {
    fn str_fmt(&self, dst: &mut String, ctx: &StrCtx<'_>) {
        let mut buf = itoa::Buffer::new();
        if ctx.fmt == StrFmtFmt::Jsonl {
            dst.push_str("\"");
        }
        dst.push_str(buf.format(self.major));
        dst.push_str(":");
        dst.push_str(buf.format(self.minor));
        if ctx.fmt == StrFmtFmt::Jsonl {
            dst.push_str("\"");
        }
    }
}