lens

posix system fetch tool
git clone git://brookjeynes.dev/bjeynes/lens.git
Log | Files | Refs | README

commit 90649cbc7763a01477457be256089df8f3143394
parent 9f122c571dcc6aaf0348918103fd66380cb3d7c4
Author: brookjeynes <me@brookjeynes.dev>
Date:   Wed, 28 Jan 2026 14:05:28 +1000

feat: retrieve uptime from syscall instead of file read

Diffstat:
Msrc/stats.zig | 33+++++++++++----------------------
1 file changed, 11 insertions(+), 22 deletions(-)

diff --git a/src/stats.zig b/src/stats.zig @@ -91,7 +91,6 @@ pub fn getMemory(alloc: std.mem.Allocator, options: struct { mb: bool }) ![]cons const suffix = if (options.mb) "MB" else "MiB"; const mem_total = lbl: { - const line = try file_reader.interface.takeDelimiter('\n') orelse return error.MemAvailableIsNotSpecified; var line_it = std.mem.splitScalar(u8, line, ':'); _ = line_it.next(); // Skip "MemTotal:" @@ -133,30 +132,20 @@ pub fn getMemory(alloc: std.mem.Allocator, options: struct { mb: bool }) ![]cons } } -pub fn getUptime() !struct { days: usize, minutes: usize, hours: usize } { +pub fn getUptime() !struct { days: isize, minutes: isize, hours: isize } { switch (builtin.os.tag) { .linux, .openbsd => { - const file = try std.fs.openFileAbsolute( - "/proc/uptime", - .{ .mode = .read_only }, - ); - defer file.close(); - - var uptime_buf: [1024]u8 = undefined; - const bytes = try file.readAll(&uptime_buf); - const uptime_str = uptime_buf[0..bytes]; - - var uptime_it = std.mem.splitScalar(u8, uptime_str, ' '); - const uptime: usize = @intFromFloat( - try std.fmt.parseFloat( - f32, - uptime_it.next() orelse return error.UptimeIsNull, - ), - ); + var info: std.os.linux.Sysinfo = undefined; + const result: usize = std.os.linux.sysinfo(&info); + if (std.os.linux.E.init(result) != .SUCCESS) { + return error.UnknownUptime; + } + std.debug.print("{any}", .{info}); + const uptime = info.uptime; - const uptime_days = uptime / 86400; - const uptime_hours = (uptime % 86400) / 3600; - const uptime_minutes = (uptime % 3600) / 60; + const uptime_days = @divTrunc(uptime, 86400); + const uptime_hours = @divTrunc(@rem(uptime, 86400), 3600); + const uptime_minutes = @divTrunc(@rem(uptime, 3600), 60); return .{ .days = uptime_days,