fish-shell/src
Johannes Altmanninger 3710e98d65 Suppress spurious error when config dir creation fails due to TOCTOU
Our recursive create_dir() first calls stat() to check if the directory
already exists and then mkdir() trying to create it. If another (fish)
process creates the same directory after our stat() but before our
mkdir(), then our mkdir() fails with EEXIST. This error is spurious
if there is already a directory at this path (and permissions are
correct).

Let's switch to the stdlib version, which promises to solve this issue.
They currently do it by running mkdir() first and ask stat() later.

This implies that they will only return success even if we don't have
any of rwx permissions on the directory, but that was already a problem
before this change. We silently don't write history in that case..

Fixes #10813
2024-10-31 08:01:31 +01:00
..
bin Silence unused imports for backports 2024-10-26 22:28:37 +02:00
builtins Fix completion failing on unclosed brace with wildcard 2024-10-19 22:04:54 +02:00
env Import portable_atomic::AtomicU64 when std does not provide it 2024-08-11 14:50:39 +02:00
fork_exec Make SIGTERM handler async-signal-safe again 2024-10-21 09:30:47 +02:00
history Revert "Lock history file before reading it" 2024-10-14 11:13:46 +02:00
tests Make SIGTERM handler async-signal-safe again 2024-10-21 09:30:47 +02:00
universal_notifier Add kqueue-based uvar notifier for BSD (#10674) 2024-08-26 17:10:26 -05:00
widecharwidth Update widecharwidth for Unicode 16 2024-09-24 17:00:13 +02:00
wutil Suppress spurious error when config dir creation fails due to TOCTOU 2024-10-31 08:01:31 +01:00
abbrs.rs Replace C++ doc \return with "Return" 2024-05-06 14:59:36 -05:00
ast.rs Fix some dumb clippies 2024-10-27 18:20:49 -07:00
autoload.rs Replace C++ doc \return with "Return" 2024-05-06 14:59:36 -05:00
color.rs Convert colors::Flags to a bitflags enum 2024-05-07 14:03:38 -05:00
common.rs Make SIGTERM handler async-signal-safe again 2024-10-21 09:30:47 +02:00
complete.rs Do not add a space after completing inside brace expansion 2024-10-19 22:06:05 +02:00
curses.rs Remove yet more dead code 2024-06-29 18:03:52 -07:00
editable_line.rs Silence unused imports for backports 2024-10-26 22:28:37 +02:00
env_dispatch.rs Revert "Resume repainting command line when colors change" 2024-08-25 18:41:31 -07:00
env_universal_common.rs Revert libc time_t changes 2024-08-27 14:28:00 +02:00
event.rs Remove parser library_data_pod_t ffi workaround 2024-06-02 20:27:44 -05:00
exec.rs Also refresh TTY timestamps after external commands from bindings 2024-10-21 12:13:00 +02:00
expand.rs Do not add a space after completing inside brace expansion 2024-10-19 22:06:05 +02:00
fallback.rs Use File instead of OwnedFd in a few places (#10355) 2024-03-17 11:20:44 -05:00
fd_monitor.rs Revert libc time_t changes 2024-08-27 14:28:00 +02:00
fd_readable_set.rs Revert libc time_t changes 2024-08-27 14:28:00 +02:00
fds.rs Fix typo 2024-10-09 12:36:58 +02:00
fish_test_helper.c fish_test_helper: Fix warnings about intentionally unused results 2024-08-31 13:16:51 -05:00
flog.rs Temporarily enable history_file debug category by default 2024-10-09 14:51:54 +02:00
function.rs Relax history autosuggestion and highlighting if cd is wrapped 2024-09-14 08:51:42 +02:00
future.rs Remove backports for 1.67 2024-04-29 22:00:59 +02:00
future_feature_flags.rs Deprecate builtin test's one- and zero-argument modes (#10365) 2024-04-21 14:25:54 +02:00
global_safety.rs Simplify shared-from-this pattern 2024-03-09 10:09:03 +01:00
highlight.rs Relax history autosuggestion and highlighting if cd is wrapped 2024-09-14 08:51:42 +02:00
history.rs Revert "Lock history file before reading it" 2024-10-14 11:13:46 +02:00
input.rs Commands to move by entire tokens 2024-10-05 22:43:39 +02:00
input_common.rs Use kitty keyboard protocol again for recent Midnight Commander 2024-10-26 19:55:48 +02:00
io.rs Clean up fd_monitor getter 2024-09-22 14:02:55 -07:00
job_group.rs Rename printf crate to fish-printf 2024-06-09 12:29:09 -07:00
key.rs fish_key_reader: stop emitting \n for ctrl-j 2024-09-23 20:08:46 +02:00
kill.rs Remove L! from sprintf calls 2024-01-13 08:52:54 +01:00
lib.rs Clean up fish-printf in preparation for publishing 2024-09-21 17:52:11 -07:00
libc.c Revert libc time_t changes 2024-08-27 14:28:00 +02:00
libc.rs Revert libc time_t changes 2024-08-27 14:28:00 +02:00
locale.rs Remove some (hopefully) unnecessary clippy and compiler directives 2024-06-23 17:13:14 -07:00
nix.rs Revert libc time_t changes 2024-08-27 14:28:00 +02:00
null_terminated_array.rs Remove yet more dead code 2024-06-29 18:03:52 -07:00
operation_context.rs Make OperationContext not hold a Parser via Rc 2024-06-23 16:39:39 -07:00
output.rs Replace C++ doc \return with "Return" 2024-05-06 14:59:36 -05:00
pager.rs Also handle overflown screens if editing pager search field 2024-10-27 08:17:56 +01:00
panic.rs Make SIGTERM handler async-signal-safe again 2024-10-21 09:30:47 +02:00
parse_constants.rs Rename printf crate to fish-printf 2024-06-09 12:29:09 -07:00
parse_execution.rs Fix completion failing on unclosed brace with wildcard 2024-10-19 22:04:54 +02:00
parse_tree.rs Use NonZero types for 1-based line numbers 2024-07-07 20:58:09 -05:00
parse_util.rs Fix completion failing on unclosed brace with wildcard 2024-10-19 22:04:54 +02:00
parser.rs Also refresh TTY timestamps after external commands from bindings 2024-10-21 12:13:00 +02:00
parser_keywords.rs Remove widestring-suffix uses 2024-01-13 08:52:54 +01:00
path.rs Suppress spurious error when config dir creation fails due to TOCTOU 2024-10-31 08:01:31 +01:00
print_help.rs Move fish-rust to project root 2024-01-13 03:58:33 +01:00
proc.rs Make SIGTERM handler async-signal-safe again 2024-10-21 09:30:47 +02:00
re.rs Move fish-rust to project root 2024-01-13 03:58:33 +01:00
reader.rs commandline --showing-suggestion to ignore single-space autosuggestion 2024-10-30 06:25:27 +01:00
reader_history_search.rs Replace C++ doc \return with "Return" 2024-05-06 14:59:36 -05:00
redirection.rs Remove yet more dead code 2024-06-29 18:03:52 -07:00
screen.rs Also handle overflown screens if editing pager search field 2024-10-27 08:17:56 +01:00
signal.rs Make SIGTERM handler async-signal-safe again 2024-10-21 09:30:47 +02:00
termsize.rs Remove yet more dead code 2024-06-29 18:03:52 -07:00
threads.rs Update threads::thread_id() documentation 2024-08-31 12:57:13 -05:00
timer.rs Revert libc time_t changes 2024-08-27 14:28:00 +02:00
tinyexpr.rs math: Nicer error for non-ascii-lowercase identifiers 2024-09-18 22:27:00 +02:00
tokenizer.rs Do not add a space after completing inside brace expansion 2024-10-19 22:06:05 +02:00
topic_monitor.rs Rename binary_semaphore_t to BinarySemaphore 2024-06-29 18:07:11 -07:00
trace.rs Remove parser library_data_pod_t ffi workaround 2024-06-02 20:27:44 -05:00
util.rs Stop using the getrandom feature of the rand crate 2024-10-13 12:39:54 -07:00
wait_handle.rs Replace C++ doc \return with "Return" 2024-05-06 14:59:36 -05:00
wchar.rs Clean up fish-printf in preparation for publishing 2024-09-21 17:52:11 -07:00
wchar_ext.rs Replace C++ doc \return with "Return" 2024-05-06 14:59:36 -05:00
wcstringutil.rs Remove wcstringutil::split_string() 2024-05-21 12:54:52 -05:00
wgetopt.rs Reimplement WGetopter::exchange() using rotate_left 2024-04-17 12:41:16 -07:00
wildcard.rs Do not add a space after completing inside brace expansion 2024-10-19 22:06:05 +02:00