ls but with io_uring

print newline after errors

authored by chinmay.srht.site and committed by rockorager.dev 0251e76c bbd03ced

+17 -19
+17 -19
src/main.zig
··· 178 178 'r' => cmd.opts.reverse_sort = true, 179 179 't' => cmd.opts.sort_by_mod_time = true, 180 180 else => { 181 - try stderr.print("Invalid opt: '{c}'", .{b}); 181 + try stderr.print("Invalid opt: '{c}'\n", .{b}); 182 182 std.process.exit(1); 183 183 }, 184 184 } ··· 190 190 const val = split.rest(); 191 191 if (eql(opt, "all")) { 192 192 cmd.opts.all = parseArgBool(val) orelse { 193 - try stderr.print("Invalid boolean: '{s}'", .{val}); 193 + try stderr.print("Invalid boolean: '{s}'\n", .{val}); 194 194 std.process.exit(1); 195 195 }; 196 196 } else if (eql(opt, "long")) { 197 197 cmd.opts.long = parseArgBool(val) orelse { 198 - try stderr.print("Invalid boolean: '{s}'", .{val}); 198 + try stderr.print("Invalid boolean: '{s}'\n", .{val}); 199 199 std.process.exit(1); 200 200 }; 201 201 } else if (eql(opt, "almost-all")) { 202 202 cmd.opts.@"almost-all" = parseArgBool(val) orelse { 203 - try stderr.print("Invalid boolean: '{s}'", .{val}); 203 + try stderr.print("Invalid boolean: '{s}'\n", .{val}); 204 204 std.process.exit(1); 205 205 }; 206 206 } else if (eql(opt, "group-directories-first")) { 207 207 cmd.opts.@"group-directories-first" = parseArgBool(val) orelse { 208 - try stderr.print("Invalid boolean: '{s}'", .{val}); 208 + try stderr.print("Invalid boolean: '{s}'\n", .{val}); 209 209 std.process.exit(1); 210 210 }; 211 211 } else if (eql(opt, "color")) { 212 212 cmd.opts.color = std.meta.stringToEnum(Options.When, val) orelse { 213 - try stderr.print("Invalid color option: '{s}'", .{val}); 213 + try stderr.print("Invalid color option: '{s}'\n", .{val}); 214 214 std.process.exit(1); 215 215 }; 216 216 } else if (eql(opt, "human-readable")) { 217 217 // no-op: present for compatibility 218 218 } else if (eql(opt, "hyperlinks")) { 219 219 cmd.opts.hyperlinks = std.meta.stringToEnum(Options.When, val) orelse { 220 - try stderr.print("Invalid hyperlinks option: '{s}'", .{val}); 220 + try stderr.print("Invalid hyperlinks option: '{s}'\n", .{val}); 221 221 std.process.exit(1); 222 222 }; 223 223 } else if (eql(opt, "icons")) { 224 224 cmd.opts.icons = std.meta.stringToEnum(Options.When, val) orelse { 225 - try stderr.print("Invalid color option: '{s}'", .{val}); 225 + try stderr.print("Invalid color option: '{s}'\n", .{val}); 226 226 std.process.exit(1); 227 227 }; 228 228 } else if (eql(opt, "columns")) { 229 229 const c = parseArgBool(val) orelse { 230 - try stderr.print("Invalid columns option: '{s}'", .{val}); 230 + try stderr.print("Invalid columns option: '{s}'\n", .{val}); 231 231 std.process.exit(1); 232 232 }; 233 233 cmd.opts.shortview = if (c) .columns else .oneline; 234 234 } else if (eql(opt, "oneline")) { 235 235 const o = parseArgBool(val) orelse { 236 - try stderr.print("Invalid oneline option: '{s}'", .{val}); 236 + try stderr.print("Invalid oneline option: '{s}'\n", .{val}); 237 237 std.process.exit(1); 238 238 }; 239 239 cmd.opts.shortview = if (o) .oneline else .columns; 240 240 } else if (eql(opt, "time")) { 241 241 cmd.opts.sort_by_mod_time = parseArgBool(val) orelse { 242 - try stderr.print("Invalid boolean: '{s}'", .{val}); 242 + try stderr.print("Invalid boolean: '{s}'\n", .{val}); 243 243 std.process.exit(1); 244 244 }; 245 245 } else if (eql(opt, "reverse")) { 246 246 cmd.opts.reverse_sort = parseArgBool(val) orelse { 247 - try stderr.print("Invalid boolean: '{s}'", .{val}); 247 + try stderr.print("Invalid boolean: '{s}'\n", .{val}); 248 248 std.process.exit(1); 249 249 }; 250 250 } else if (eql(opt, "tree")) { ··· 254 254 } else { 255 255 cmd.opts.tree = true; 256 256 cmd.opts.tree_depth = std.fmt.parseInt(usize, val, 10) catch { 257 - try stderr.print("Invalid tree depth: '{s}'", .{val}); 257 + try stderr.print("Invalid tree depth: '{s}'\n", .{val}); 258 258 std.process.exit(1); 259 259 }; 260 260 } ··· 265 265 try bw.flush(); 266 266 return; 267 267 } else { 268 - try stderr.print("Invalid opt: '{s}'", .{opt}); 268 + try stderr.print("Invalid opt: '{s}'\n", .{opt}); 269 269 std.process.exit(1); 270 270 } 271 271 }, ··· 797 797 for (self.users.items) |user| { 798 798 if (user.uid == uid) return user; 799 799 } 800 - const user_nullable = std.c.getpwuid(uid); 801 - if (user_nullable) |user| { 800 + if (std.c.getpwuid(uid)) |user| { 802 801 if (user.name) |name| { 803 802 const new_user = User{ 804 803 .uid = uid, ··· 815 814 for (self.groups.items) |group| { 816 815 if (group.gid == gid) return group; 817 816 } 818 - const grp_group_nullable = grp.getgrgid(gid); 819 - if (grp_group_nullable) |grp_group_ptr| { 817 + if (grp.getgrgid(gid)) |group| { 820 818 const new_group = Group{ 821 819 .gid = gid, 822 - .name = std.mem.span(grp_group_ptr.*.gr_name), 820 + .name = std.mem.span(group.*.gr_name), 823 821 }; 824 822 try self.groups.append(self.arena, new_group); 825 823 return new_group;