From 1452b91032cc4f11a9171c452b7f9fa3cdf3c910 Mon Sep 17 00:00:00 2001 From: Yorhel Date: Mon, 22 Aug 2022 14:21:52 +0200 Subject: [PATCH] Some fixes for building with Zig stage2 Building is currently broken on packed struct alignment issues. :/ --- src/exclude.zig | 8 ++++---- src/main.zig | 6 ++++-- src/ui.zig | 2 +- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/exclude.zig b/src/exclude.zig index 8e2b793..0528f30 100644 --- a/src/exclude.zig +++ b/src/exclude.zig @@ -120,7 +120,7 @@ test "parse" { // the match result is only used to construct the PatternList of the // subdirectory) and patterns without a sub-pointer (where the match result // determines whether the file/dir at this level should be included or not). -fn PatternList(withsub: bool) type { +fn PatternList(comptime withsub: bool) type { return struct { literals: std.HashMapUnmanaged(*const Pattern, Val, Ctx, 80) = .{}, wild: std.ArrayListUnmanaged(*const Pattern) = .{}, @@ -150,7 +150,7 @@ fn PatternList(withsub: bool) type { var e = self.literals.getOrPut(main.allocator, pat) catch unreachable; if (!e.found_existing) { e.key_ptr.* = pat; - e.value_ptr.* = .{}; + e.value_ptr.* = if (withsub) .{} else {}; } if (!withsub and !pat.isdir and e.key_ptr.*.isdir) e.key_ptr.* = pat; if (withsub) { @@ -165,14 +165,14 @@ fn PatternList(withsub: bool) type { if (self.literals.getKey(&.{ .pattern = name })) |p| ret = p.isdir; for (self.wild.items) |p| { if (ret == false) return ret; - if (c.fnmatch(p.pattern, name, 0) == 0) ret = p.isdir; + if (c.fnmatch(p.pattern.ptr, name.ptr, 0) == 0) ret = p.isdir; } return ret; } fn enter(self: *const Self, out: *Patterns, name: [:0]const u8) void { if (self.literals.get(&.{ .pattern = name })) |lst| for (lst.items) |sub| out.append(sub); - for (self.wild.items) |p| if (c.fnmatch(p.pattern, name, 0) == 0) out.append(p.sub.?); + for (self.wild.items) |p| if (c.fnmatch(p.pattern.ptr, name.ptr, 0) == 0) out.append(p.sub.?); } fn deinit(self: *Self) void { diff --git a/src/main.zig b/src/main.zig index 7e2d220..c2dd268 100644 --- a/src/main.zig +++ b/src/main.zig @@ -261,7 +261,8 @@ fn tryReadArgsFile(path: [:0]const u8) void { defer f.close(); var arglist = std.ArrayList([:0]const u8).init(allocator); - var rd = std.io.bufferedReader(f.reader()).reader(); + var rd_ = std.io.bufferedReader(f.reader()); + var rd = rd_.reader(); var linebuf: [4096]u8 = undefined; while ( @@ -379,7 +380,8 @@ fn spawnShell() void { fn readExcludeFile(path: [:0]const u8) !void { const f = try std.fs.cwd().openFileZ(path, .{}); defer f.close(); - var rd = std.io.bufferedReader(f.reader()).reader(); + var rd_ = std.io.bufferedReader(f.reader()); + var rd = rd_.reader(); var buf = std.ArrayList(u8).init(allocator); defer buf.deinit(); while (true) { diff --git a/src/ui.zig b/src/ui.zig index 4e00548..161546d 100644 --- a/src/ui.zig +++ b/src/ui.zig @@ -395,7 +395,7 @@ pub fn move(y: u32, x: u32) void { // (Well, addchstr() does that, but not entirely sure I want to go that way. // Does that even work with UTF-8? Or do I really need to go wchar madness?) pub fn addstr(s: [:0]const u8) void { - _ = c.addstr(s); + _ = c.addstr(s.ptr); } // Not to be used for strings that may end up >256 bytes.