tangled
alpha
login
or
join now
rockorager.dev
/
lsr
60
fork
atom
ls but with io_uring
60
fork
atom
overview
issues
9
pulls
1
pipelines
build: update for zig 0.15.1
rockorager.dev
5 months ago
a9cfda7e
0251e76c
verified
This commit was signed with the committer's
known signature
.
rockorager.dev
SSH Key Fingerprint:
SHA256:qn/Fjy7CpbcogGEPB14Y53hLnQleZNFY9lkQnuudFLs=
+41
-33
2 changed files
expand all
collapse all
unified
split
build.zig.zon
src
main.zig
+6
-6
build.zig.zon
···
7
7
8
8
.dependencies = .{
9
9
.ourio = .{
10
10
-
.url = "git+https://github.com/rockorager/ourio#c94a93d34c0b0082facdabc12b6b997f7ee8b648",
11
11
-
.hash = "ourio-0.0.0-_s-z0S0XAgB2nng8oxDng5AlACiqMTcFGq77494HMBXw",
10
10
+
.url = "git+https://github.com/rockorager/ourio#07bf94db87a9aea70d6e1a1dd99cac6fb9d38b35",
11
11
+
.hash = "ourio-0.0.0-_s-z0Z0XAgBU_BFjdY8QjGhJ8vcdIONPSErlYRwLoxfg",
12
12
},
13
13
.zeit = .{
14
14
-
.url = "git+https://github.com/rockorager/zeit#4496d1c40b2223c22a1341e175fc2ecd94cc0de9",
15
15
-
.hash = "zeit-0.6.0-5I6bk1J1AgA13rteb6E0steXiOUKBYTzJZMMIuK9oEmb",
14
14
+
.url = "git+https://github.com/rockorager/zeit#74be5a2afb346b2a6a6349abbb609e89ec7e65a6",
15
15
+
.hash = "zeit-0.6.0-5I6bk4t8AgCP0UGGHVF_khlmWZkAF5XtfQWEKCyLoptU",
16
16
},
17
17
.zzdoc = .{
18
18
-
.url = "git+https://github.com/rockorager/zzdoc#57e86eb4e621bc4a96fbe0dd89ad0986db6d0483",
19
19
-
.hash = "zzdoc-0.0.0-tzT1PuPZAACr1jIJxjTrdOsLbfXS6idWFGfTq0gwxJiv",
18
18
+
.url = "git+https://github.com/rockorager/zzdoc#a54223bdc13a80839ccf9f473edf3a171e777946",
19
19
+
.hash = "zzdoc-0.0.0-tzT1Ph7cAAC5YmXQXiBJHAg41_A5AUAC5VOm7ShnUxlz",
20
20
},
21
21
},
22
22
.paths = .{
+35
-27
src/main.zig
···
152
152
153
153
var cmd: Command = .{ .arena = allocator };
154
154
155
155
-
cmd.opts.winsize = getWinsize(std.io.getStdOut().handle);
155
155
+
cmd.opts.winsize = getWinsize(std.fs.File.stdout().handle);
156
156
157
157
cmd.opts.shortview = if (cmd.opts.isatty()) .columns else .oneline;
158
158
159
159
-
const stdout = std.io.getStdOut().writer();
160
160
-
const stderr = std.io.getStdErr().writer();
161
161
-
var bw = std.io.bufferedWriter(stdout);
159
159
+
var stdout_buf: [4096]u8 = undefined;
160
160
+
var stderr_buf: [4096]u8 = undefined;
161
161
+
var stdout_writer = std.fs.File.stdout().writer(&stdout_buf);
162
162
+
var stderr_writer = std.fs.File.stderr().writer(&stderr_buf);
163
163
+
var stdout = &stdout_writer.interface;
164
164
+
var stderr = &stderr_writer.interface;
162
165
163
166
var args = std.process.args();
164
167
// skip binary
···
261
264
} else if (eql(opt, "help")) {
262
265
return stderr.writeAll(usage);
263
266
} else if (eql(opt, "version")) {
264
264
-
try bw.writer().print("lsr {s}\r\n", .{build_options.version});
265
265
-
try bw.flush();
267
267
+
try stdout.print("lsr {s}\r\n", .{build_options.version});
268
268
+
try stdout.flush();
266
269
return;
267
270
} else {
268
271
try stderr.print("Invalid opt: '{s}'\n", .{opt});
···
326
329
327
330
if (cmd.entries.len == 0) {
328
331
if (multiple_dirs and dir_idx < cmd.opts.directories.items.len - 1) {
329
329
-
try bw.writer().writeAll("\r\n");
332
332
+
try stdout.writeAll("\r\n");
330
333
}
331
334
continue;
332
335
}
···
338
341
}
339
342
340
343
if (multiple_dirs and !cmd.opts.tree) {
341
341
-
if (dir_idx > 0) try bw.writer().writeAll("\r\n");
342
342
-
try bw.writer().print("{s}:\r\n", .{directory});
344
344
+
if (dir_idx > 0) try stdout.writeAll("\r\n");
345
345
+
try stdout.print("{s}:\r\n", .{directory});
343
346
}
344
347
345
348
if (cmd.opts.tree) {
346
346
-
if (multiple_dirs and dir_idx > 0) try bw.writer().writeAll("\r\n");
347
347
-
try printTree(cmd, bw.writer());
349
349
+
if (multiple_dirs and dir_idx > 0) try stdout.writeAll("\r\n");
350
350
+
try printTree(cmd, stdout);
348
351
} else if (cmd.opts.long) {
349
349
-
try printLong(&cmd, bw.writer());
352
352
+
try printLong(&cmd, stdout);
350
353
} else switch (cmd.opts.shortview) {
351
351
-
.columns => try printShortColumns(cmd, bw.writer()),
352
352
-
.oneline => try printShortOnePerLine(cmd, bw.writer()),
354
354
+
.columns => try printShortColumns(cmd, stdout),
355
355
+
.oneline => try printShortOnePerLine(cmd, stdout),
353
356
}
354
357
}
355
355
-
try bw.flush();
358
358
+
try stdout.flush();
356
359
}
357
360
358
361
fn printShortColumns(cmd: Command, writer: anytype) !void {
···
429
432
430
433
if (i < columns.items.len - 1) {
431
434
const spaces = column.width - (icon_width + entry.name.len);
432
432
-
try writer.writeByteNTimes(' ', spaces);
435
435
+
var space_buf = [_][]const u8{" "};
436
436
+
try writer.writeSplatAll(&space_buf, spaces);
433
437
}
434
438
}
435
439
try writer.writeAll("\r\n");
···
519
523
try writer.print("{s}\n", .{dir_name});
520
524
521
525
const max_depth = cmd.opts.tree_depth orelse std.math.maxInt(usize);
522
522
-
var prefix_list = std.ArrayList(bool).init(cmd.arena);
526
526
+
var prefix_list: std.ArrayList(bool) = .{};
523
527
524
528
for (cmd.entries, 0..) |entry, i| {
525
529
const is_last = i == cmd.entries.len - 1;
···
531
535
if (entry.kind == .directory and max_depth > 0) {
532
536
const full_path = try std.fs.path.joinZ(cmd.arena, &.{ cmd.current_directory, entry.name });
533
537
534
534
-
try prefix_list.append(is_last);
538
538
+
try prefix_list.append(cmd.arena, is_last);
535
539
try recurseTree(cmd, writer, full_path, &prefix_list, 1, max_depth);
536
540
537
541
_ = prefix_list.pop();
···
545
549
};
546
550
defer dir.close();
547
551
548
548
-
var entries = std.ArrayList(Entry).init(cmd.arena);
552
552
+
var entries: std.ArrayList(Entry) = .{};
549
553
var iter = dir.iterate();
550
554
551
555
while (try iter.next()) |dirent| {
552
556
if (!cmd.opts.showDotfiles() and std.mem.startsWith(u8, dirent.name, ".")) continue;
553
557
554
558
const nameZ = try cmd.arena.dupeZ(u8, dirent.name);
555
555
-
try entries.append(.{
559
559
+
try entries.append(cmd.arena, .{
556
560
.name = nameZ,
557
561
.kind = dirent.kind,
558
562
.statx = undefined,
···
575
579
if (entry.kind == .directory and depth < max_depth) {
576
580
const full_path = try std.fs.path.joinZ(cmd.arena, &.{ dir_path, entry.name });
577
581
578
578
-
try prefix_list.append(is_last);
582
582
+
try prefix_list.append(cmd.arena, is_last);
579
583
try recurseTree(cmd, writer, full_path, prefix_list, depth + 1, max_depth);
580
584
581
585
_ = prefix_list.pop();
···
690
694
try writer.writeAll(&mode);
691
695
try writer.writeByte(' ');
692
696
try writer.writeAll(user.name);
693
693
-
try writer.writeByteNTimes(' ', longest_user - user.name.len);
697
697
+
var space_buf1 = [_][]const u8{" "};
698
698
+
try writer.writeSplatAll(&space_buf1, longest_user - user.name.len);
694
699
try writer.writeByte(' ');
695
700
try writer.writeAll(group.name);
696
696
-
try writer.writeByteNTimes(' ', longest_group - group.name.len);
701
701
+
var space_buf2 = [_][]const u8{" "};
702
702
+
try writer.writeSplatAll(&space_buf2, longest_group - group.name.len);
697
703
try writer.writeByte(' ');
698
704
699
705
var size_buf: [16]u8 = undefined;
700
706
const size = try entry.humanReadableSize(&size_buf);
701
707
const suffix = entry.humanReadableSuffix();
702
708
703
703
-
try writer.writeByteNTimes(' ', longest_size - size.len);
709
709
+
var space_buf3 = [_][]const u8{" "};
710
710
+
try writer.writeSplatAll(&space_buf3, longest_size - size.len);
704
711
try writer.writeAll(size);
705
712
try writer.writeByte(' ');
706
713
try writer.writeAll(suffix);
707
707
-
try writer.writeByteNTimes(' ', longest_suffix - suffix.len);
714
714
+
var space_buf4 = [_][]const u8{" "};
715
715
+
try writer.writeSplatAll(&space_buf4, longest_suffix - suffix.len);
708
716
try writer.writeByte(' ');
709
717
710
718
try writer.print("{d: >2} {s} ", .{
···
1109
1117
const n = try result.read;
1110
1118
_ = try io.close(task.req.read.fd, .{});
1111
1119
const bytes = task.req.read.buffer[0..n];
1112
1112
-
var fbs = std.io.fixedBufferStream(bytes);
1113
1113
-
const tz = try zeit.timezone.TZInfo.parse(cmd.arena, fbs.reader());
1120
1120
+
var reader = std.Io.Reader.fixed(bytes);
1121
1121
+
const tz = try zeit.timezone.TZInfo.parse(cmd.arena, &reader);
1114
1122
cmd.tz = .{ .tzinfo = tz };
1115
1123
},
1116
1124