Johannes Schindelin <Johannes.Schindelin@xxxxxx> writes: > So _if_ we need that file ID information, I would be very much in favor of > introducing a proper abstraction, where differentiate between the > intention (think `get_inode(const char *path)`) from the > platform-dependent implementation detail (think `lstat()`, `CreateFile()` > and `GetFileInformationByHandle()`). I agree in principle. Essentially, we need to (1) examine all calls to lstat(2) we make in our codebase, and find out what members of "stat" are really used out of the result for each callsite. This will be different from caller to caller (some callers may want only ino, other callers may want ino, size, and mtime, etc.), and we would learn that there are N patterns. (2) write N abstracted helper functions (or a single helper that takes const char *path, struct stat *, and an enum to tell which one of N patterns this call is about). (3) replace each lstat(2) call with one of these N abstract helper functions. get_inode() might be one of these N functions, but what is important is that the current callers that want ino and something else should not be penalized by making two separte calls get_inode() and get_other_things(), which, when done naively, would result in two lstat(2) calls.