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();