mirror of
https://github.com/fish-shell/fish-shell.git
synced 2024-11-25 18:03:37 +08:00
0f8bcb0414
* wildcard: Remove file size from the description We no longer add descriptions for normal file completions, so this was only ever reached if this was a command completion, and then it was only added if the file wasn't a regular file... in which case it can't be an executable. So this was dead. * Make possible_link() a maybe This gives us the full information, not just "no" or "maybe" * wildcard: Rationalize file/command completions This keeps the entry_t as long as possible, and asks it, so especially on systems with working d_type we can get by without a single stat in most cases. Then it guts file_get_desc, because that is only used for command completions - we have been disabling file descriptions for *years*, and so this is never called there. That means we have no need to print descriptions about e.g. broken symlinks, because those are not executable. Put together, what this means is that we, in most cases, only do an *access(2)* call instead of a stat, because that might be checking more permissions. So we have the following constellations: - If we have d_type: - We need a stat() for every _symlink_ to get the type (e.g. dir or regular) (this is for most symlinks, if we want to know if it's a dir or executable) - We need an access() for every file for executables - If we do not have d_type: - We need a stat() for every file - We need an lstat() for every file if we do descriptions (i.e. just for command completion) - We need an access() for every file for executables As opposed to the current way, where every file gets one lstat whether with d_type or not, and an additional stat() for links, *and* an access. So we go from two syscalls to one for executables. * Some more comments * rust link option * rust remove size * rust accessovaganza * Check for .dll first for WSL This saves quite a few checks if e.g. System32 is in $PATH (which it is if you inherit windows paths, IIRC). Note: Our WSL check currently fails for WSL2, where this would be *more* important because of how abysmal the filesystem performance on that is. |
||
---|---|---|
.. | ||
src | ||
widestring-suffix | ||
build.rs |