From b7d346d46db00f23b5ae97e78cff8a5d6491f3e7 Mon Sep 17 00:00:00 2001 From: Tim Culverhouse Date: Tue, 6 May 2025 11:14:08 -0500 Subject: [PATCH] fmt: user/group fallback to decimal uid/guid --- src/main.zig | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/src/main.zig b/src/main.zig index 4012db6..5c11fb8 100644 --- a/src/main.zig +++ b/src/main.zig @@ -401,8 +401,22 @@ fn printLong(cmd: Command, writer: anytype) !void { var n_size: usize = 0; var n_suff: usize = 0; for (cmd.entries) |entry| { - const group = cmd.getGroup(entry.statx.gid).?; - const user = cmd.getUser(entry.statx.uid).?; + const group = cmd.getGroup(entry.statx.gid) orelse switch (entry.statx.gid) { + 0...9 => "1", + 10...99 => "10", + 100...999 => "100", + 1000...9999 => "1000", + 10000...99999 => "10000", + else => "1000000", + }; + const user = cmd.getUser(entry.statx.uid) orelse switch (entry.statx.uid) { + 0...9 => "1", + 10...99 => "10", + 100...999 => "100", + 1000...9999 => "1000", + 10000...99999 => "10000", + else => "1000000", + }; var buf: [16]u8 = undefined; const size = try entry.humanReadableSize(&buf); n_group = @max(n_group, group.name.len); @@ -414,8 +428,10 @@ fn printLong(cmd: Command, writer: anytype) !void { }; for (cmd.entries) |entry| { - const user = cmd.getUser(entry.statx.uid).?; - const group = cmd.getGroup(entry.statx.gid).?; + const user = cmd.getUser(entry.statx.uid) orelse + try std.fmt.allocPrint(cmd.arena, "{d}", .{entry.statx.uid}); + const group = cmd.getGroup(entry.statx.gid) orelse + try std.fmt.allocPrint(cmd.arena, "{d}", .{entry.statx.gid}); const ts = @as(i128, entry.statx.mtime.sec) * std.time.ns_per_s; const inst: zeit.Instant = .{ .timestamp = ts, .timezone = &tz }; const time = inst.time(); -- 2.51.2