- Jun 07, 2021
-
-
Yorhel authored
I had used them as a HashSet with mutable keys already in order to avoid padding problems. This is not always necessary anymore now that Zig's new HashMap uses separate arrays for keys and values, but I still need the HashSet trick for the link_count nodes table, as the key itself would otherwise have padding.
-
- Jun 01, 2021
-
-
Yorhel authored
Under the assumption that there are no external references to files mentioned in the dump, i.e. a file's nlink count matches the number of times the file occurs in the dump. This machinery could also be used for regular scans, when you want to scan an individual directory without caring about external hard links. Maybe that should be the default, even? Not sure...
-
- May 29, 2021
-
-
Yorhel authored
-
Yorhel authored
In a similar way to the C version of ncdu: by wrapping malloc(). It's simpler to handle allocation failures at the source to allow for easy retries, pushing the retries up the stack will complicate code somewhat more. Likewise, this is a best-effort approach to handling OOM, allocation failures in ncurses aren't handled and display glitches may occur when we get an OOM inside a drawing function. This is a somewhat un-Zig-like way of handling errors and adds scary-looking 'catch unreachable's all over the code, but that's okay.
-
Yorhel authored
Performance is looking great, but the code is rather ugly and potentially buggy. Also doesn't handle hard links without an "nlink" field yet. Error handling of the import code is different from what I've been doing until now. That's intentional, I'll change error handling of other pieces to call ui.die() directly rather than propagating error enums. The approach is less testable but conceptually simpler, it's perfectly fine for a tiny application like ncdu.
-
- May 24, 2021
-
-
Yorhel authored
-
- May 23, 2021
-
-
Yorhel authored
I plan to add more display options, but ran out of keys to bind. Probably going for a quick-select menu thingy so that we can keep the old key bindings for people accustomed to it. The graph width algorithm is slightly different, but I think this one's a minor improvement.
-
- May 06, 2021
-
-
Yorhel authored
I initially wanted to keep a directory's block count and size as a separate field so that exporting an in-memory tree to a JSON dump would be easier to do, but that doesn't seem like a common operation to optimize for. We'll probably need the algorithms to subtract sub-items from directory counts anyway, so such an export can still be implemented, albeit slower.
-
- May 01, 2021
-
-
Yorhel authored
-
- Apr 30, 2021
-
-
Yorhel authored
Supporting kernfs checking is going to be a bit more annoying. And so is exclude patterns. Ugh.
-
- Apr 29, 2021
-
-
Yorhel authored
The new data model is supposed to solve a few problems with ncdu 1.x's 'struct dir': - Reduce memory overhead, - Fix extremely slow counting of hard links in some scenarios (issue #121) - Add support for counting 'shared' data with other directories (issue #36) Quick memory usage comparison of my root directory with ~3.5 million files (normal / extended mode): ncdu 1.15.1: 379M / 451M new (unaligned): 145M / 178M new (aligned): 155M / 200M There's still a /lot/ of to-do's left before this is usable, however, and there's a bunch of issues I haven't really decided on yet, such as which TUI library to use. Backporting this data model to the C version of ncdu is also possible, but somewhat painful. Let's first see how far I get with Zig.
-