tangled
alpha
login
or
join now
abeestrada.com
/
lsr
forked from
rockorager.dev/lsr
0
fork
atom
this repo has no description
0
fork
atom
overview
issues
pulls
pipelines
opts: add almost-all
rockorager.dev
10 months ago
d110d0b6
79caddcd
+21
1 changed file
expand all
collapse all
unified
split
src
main.zig
+21
src/main.zig
···
7
7
8
8
const Options = struct {
9
9
all: bool = false,
10
10
+
almost_all: bool = false,
10
11
long: bool = false,
11
12
directory: [:0]const u8 = ".",
12
13
};
···
37
38
const str = arg[1..];
38
39
for (str) |b| {
39
40
switch (b) {
41
41
+
'A' => cmd.opts.almost_all = true,
40
42
'a' => cmd.opts.all = true,
41
43
'l' => cmd.opts.long = true,
42
44
else => {
···
53
55
cmd.opts.all = true
54
56
else if (eql(opt, "long"))
55
57
cmd.opts.long = true
58
58
+
else if (eql(opt, "almost-all"))
59
59
+
cmd.opts.almost_all = true
56
60
else {
57
61
const w = std.io.getStdErr().writer();
58
62
try w.print("Invalid opt: '{s}'", .{opt});
···
212
216
const dir: std.fs.Dir = .{ .fd = fd };
213
217
214
218
var results: std.ArrayListUnmanaged(Entry) = .empty;
219
219
+
220
220
+
// Preallocate some memory
221
221
+
try results.ensureUnusedCapacity(cmd.arena, 64);
222
222
+
223
223
+
// zig skips "." and "..", so we manually add them if needed
224
224
+
if (cmd.opts.all) {
225
225
+
results.appendAssumeCapacity(.{
226
226
+
.name = ".",
227
227
+
.kind = .directory,
228
228
+
.statx = undefined,
229
229
+
});
230
230
+
results.appendAssumeCapacity(.{
231
231
+
.name = "..",
232
232
+
.kind = .directory,
233
233
+
.statx = undefined,
234
234
+
});
235
235
+
}
215
236
216
237
var iter = dir.iterate();
217
238
while (try iter.next()) |dirent| {