pkgsrc-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

CVS commit: pkgsrc/sysutils/mirador



Module Name:    pkgsrc
Committed By:   pin
Date:           Mon Sep 14 12:14:18 UTC 2026

Modified Files:
        pkgsrc/sysutils/mirador: Makefile distinfo
Added Files:
        pkgsrc/sysutils/mirador/patches:
            patch-.._vendor_starship-battery-0.11.1_src_platform_netbsd_sysmon.rs

Log Message:
sysutils/mirador: fix battery

Fix battery readout using upstreams pull request.
https://github.com/starship/rust-battery/pull/168


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 pkgsrc/sysutils/mirador/Makefile \
    pkgsrc/sysutils/mirador/distinfo
cvs rdiff -u -r0 -r1.1 \
    pkgsrc/sysutils/mirador/patches/patch-.._vendor_starship-battery-0.11.1_src_platform_netbsd_sysmon.rs

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: pkgsrc/sysutils/mirador/Makefile
diff -u pkgsrc/sysutils/mirador/Makefile:1.5 pkgsrc/sysutils/mirador/Makefile:1.6
--- pkgsrc/sysutils/mirador/Makefile:1.5        Sun Sep 13 13:37:34 2026
+++ pkgsrc/sysutils/mirador/Makefile    Mon Sep 14 12:14:18 2026
@@ -1,6 +1,7 @@
-# $NetBSD: Makefile,v 1.5 2026/09/13 13:37:34 pin Exp $
+# $NetBSD: Makefile,v 1.6 2026/09/14 12:14:18 pin Exp $
 
 DISTNAME=      mirador-1.12.0
+PKGREVISION=   1
 CATEGORIES=    sysutils
 MASTER_SITES=  ${MASTER_SITE_GITHUB:=jchultarsky/}
 GITHUB_TAG=    v${PKGVERSION_NOREV}
Index: pkgsrc/sysutils/mirador/distinfo
diff -u pkgsrc/sysutils/mirador/distinfo:1.5 pkgsrc/sysutils/mirador/distinfo:1.6
--- pkgsrc/sysutils/mirador/distinfo:1.5        Sun Sep 13 13:37:34 2026
+++ pkgsrc/sysutils/mirador/distinfo    Mon Sep 14 12:14:18 2026
@@ -1,4 +1,4 @@
-$NetBSD: distinfo,v 1.5 2026/09/13 13:37:34 pin Exp $
+$NetBSD: distinfo,v 1.6 2026/09/14 12:14:18 pin Exp $
 
 BLAKE2s (adler2-2.0.1.crate) = 4d391e0fcde91c7435ee9a5503fee4a5346f549f1b45e482ce3e1e151d90f8f5
 SHA512 (adler2-2.0.1.crate) = 555b2b7ba6f8116acccd0bcd16ed34cc78162c81023cff31a8566ffcd456c03832089fca2d5b668ceaac4fe8f922d31aa9c487f226a36cace294ff4a219bd91d
@@ -804,3 +804,4 @@ Size (zeroize-1.9.0.crate) = 24480 bytes
 BLAKE2s (zmij-1.0.23.crate) = 09f6f3e1ddf6abff21579db43caec1b708ad2de496f17489b16849f016b7ae5e
 SHA512 (zmij-1.0.23.crate) = 12f8d9726b232b6be68cefbe294505debb7a98715c11b95d89682a596fe1a02d9d7b2a6cdba97f2e8d47fa947ffbce9506a18568f2cab749ca3d03121e5fb66d
 Size (zmij-1.0.23.crate) = 28612 bytes
+SHA1 (patch-.._vendor_starship-battery-0.11.1_src_platform_netbsd_sysmon.rs) = 5d0785c63b34e6cf3620dc7e3d8cf84606be0ee0

Added files:

Index: pkgsrc/sysutils/mirador/patches/patch-.._vendor_starship-battery-0.11.1_src_platform_netbsd_sysmon.rs
diff -u /dev/null pkgsrc/sysutils/mirador/patches/patch-.._vendor_starship-battery-0.11.1_src_platform_netbsd_sysmon.rs:1.1
--- /dev/null   Mon Sep 14 12:14:18 2026
+++ pkgsrc/sysutils/mirador/patches/patch-.._vendor_starship-battery-0.11.1_src_platform_netbsd_sysmon.rs       Mon Sep 14 12:14:18 2026
@@ -0,0 +1,81 @@
+$NetBSD: patch-.._vendor_starship-battery-0.11.1_src_platform_netbsd_sysmon.rs,v 1.1 2026/09/14 12:14:18 pin Exp $
+
+Fix battery readout using upstreams pull request.
+https://github.com/starship/rust-battery/pull/168
+
+--- ../vendor/starship-battery-0.11.1/src/platform/netbsd/sysmon.rs.orig       2026-09-14 11:26:29.446107617 +0000
++++ ../vendor/starship-battery-0.11.1/src/platform/netbsd/sysmon.rs
+@@ -1,3 +1,4 @@
++use std::ffi::CStr;
+ use std::fs;
+ use std::os::fd::AsRawFd;
+ use std::ptr::{addr_of_mut, null_mut, NonNull};
+@@ -49,9 +50,9 @@ pub fn get_system_envsys_plist() -> Result<plist::Dict
+         return Err(Error::invalid_data("Invalid result of EnvSys ioctl"));
+     }
+ 
+-    let dict = plist::from_bytes(unsafe {
++    let dict = parse_envsys_plist(unsafe {
+         slice::from_raw_parts(plist_ref.pref_plist, plist_ref.pref_len)
+-    })?;
++    });
+ 
+     unsafe {
+         // The netbsd libprop says ioctl returned mmap'ed memory that must be munmap'ed.
+@@ -64,5 +65,55 @@ pub fn get_system_envsys_plist() -> Result<plist::Dict
+         )?;
+     }
+ 
+-    Ok(dict)
++    dict
++}
++
++/// Parse the XML plist the kernel hands back through `ENVSYS_GETDICTIONARY`.
++///
++/// libprop externalizes the dictionary as a C string and reports its length
++/// *including* the terminating NUL (`pref_len = strlen(buf) + 1`, see
++/// `common/lib/libprop/prop_kern.c`). Since plist 1.7.4 the XML reader
++/// rejects any non-whitespace after the closing `</plist>`, so the buffer is
++/// read as the C string it is, or every battery on NetBSD reads as
++/// "Problem while processing plist". A buffer with no NUL is parsed whole.
++fn parse_envsys_plist(bytes: &[u8]) -> Result<plist::Dictionary, Error> {
++    let document = CStr::from_bytes_until_nul(bytes).map_or(bytes, CStr::to_bytes);
++    Ok(plist::from_bytes(document)?)
++}
++
++#[cfg(test)]
++mod tests {
++    use super::parse_envsys_plist;
++
++    const ENVSYS: &str = concat!(
++        "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n",
++        "<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" ",
++        "\"http://www.apple.com/DTDs/PropertyList-1.0.dtd\";>\n",
++        "<plist version=\"1.0\">\n<dict>\n\t<key>acpibat0</key>\n\t<array>\n",
++        "\t\t<dict>\n\t\t\t<key>cur-value</key>\n\t\t\t<integer>1</integer>\n",
++        "\t\t\t<key>description</key>\n\t\t\t<string>present</string>\n",
++        "\t\t\t<key>state</key>\n\t\t\t<string>valid</string>\n",
++        "\t\t\t<key>type</key>\n\t\t\t<string>Indicator</string>\n\t\t</dict>\n",
++        "\t</array>\n</dict>\n</plist>\n"
++    );
++
++    #[test]
++    fn the_kernels_trailing_nul_is_not_part_of_the_document() {
++        let mut bytes = ENVSYS.as_bytes().to_vec();
++        bytes.push(0);
++        let dict = parse_envsys_plist(&bytes).expect("a NUL-terminated envsys plist parses");
++        assert!(dict.contains_key("acpibat0"));
++    }
++
++    #[test]
++    fn a_plist_without_the_nul_still_parses() {
++        let dict = parse_envsys_plist(ENVSYS.as_bytes()).expect("parses");
++        assert!(dict.contains_key("acpibat0"));
++    }
++
++    #[test]
++    fn only_nuls_is_an_error_not_a_panic() {
++        assert!(parse_envsys_plist(&[0, 0]).is_err());
++        assert!(parse_envsys_plist(&[]).is_err());
++    }
+ }



Home | Main Index | Thread Index | Old Index