#![allow(non_snake_case)]
#![allow(dead_code)]
pub fn LibSensors_init() {
todo!("port of LibSensors.c:55: needs libsensors FFI (dlopen handle + sym_sensors_init/cleanup/get_* symbols), no-sensors build variant")
}
pub fn LibSensors_cleanup() {
todo!("port of LibSensors.c:106: needs libsensors FFI (dlopen handle + sym_sensors_cleanup), no-sensors build variant")
}
pub fn LibSensors_reload() {
todo!("port of LibSensors.c:123: needs libsensors FFI (dlopen handle + sym_sensors_cleanup/init), no-sensors build variant")
}
pub fn tempDriverPriority() {
todo!("port of LibSensors.c:135: needs libsensors FFI type sensors_chip_name (chip->prefix)")
}
pub fn LibSensors_countCCDs() {
todo!("port of LibSensors.c:177: needs libsensors FFI (sensors_chip_name/sensors_feature + sym_sensors_get_detected_chips/get_features/get_label)")
}
fn LibSensors_stringToID(str: &str) -> i32 {
let bytes = str.as_bytes();
let len = bytes.len();
let mut i = 0;
while i < len && bytes[i].is_ascii_whitespace() {
i += 1;
}
let mut negate = false;
if i < len && (bytes[i] == b'+' || bytes[i] == b'-') {
negate = bytes[i] == b'-';
i += 1;
}
let digitStart = i;
let mut parsedID: u64 = 0;
while i < len && bytes[i].is_ascii_digit() {
parsedID = parsedID
.saturating_mul(10)
.saturating_add((bytes[i] - b'0') as u64);
i += 1;
}
let endptr = if i == digitStart { 0 } else { i };
let value = if negate {
0u64.wrapping_sub(parsedID)
} else {
parsedID
};
if value >= i32::MAX as u64 || endptr < len {
return -1;
}
value as i32
}
pub fn LibSensors_getCPUTemperatures() {
todo!("port of LibSensors.c:217: needs libsensors FFI (sensors_chip_name/feature/subfeature + sym_sensors_*) and the omitted CPUData::temperature field (no-sensors build variant)")
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn LibSensors_stringToID_parses_plain_decimal() {
assert_eq!(LibSensors_stringToID("0"), 0);
assert_eq!(LibSensors_stringToID("7"), 7);
assert_eq!(LibSensors_stringToID("12"), 12);
}
#[test]
fn LibSensors_stringToID_rejects_trailing_garbage() {
assert_eq!(LibSensors_stringToID("12abc"), -1);
assert_eq!(LibSensors_stringToID("1 "), -1);
assert_eq!(LibSensors_stringToID("abc"), -1);
}
#[test]
fn LibSensors_stringToID_rejects_at_or_above_int_max() {
assert_eq!(LibSensors_stringToID(&i32::MAX.to_string()), -1);
assert_eq!(
LibSensors_stringToID(&(i32::MAX as i64 - 1).to_string()),
i32::MAX - 1
);
assert_eq!(LibSensors_stringToID("999999999999999999999999"), -1);
}
#[test]
fn LibSensors_stringToID_empty_string_is_zero() {
assert_eq!(LibSensors_stringToID(""), 0);
}
#[test]
fn LibSensors_stringToID_negative_is_rejected() {
assert_eq!(LibSensors_stringToID("-5"), -1);
}
}