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