Fabian Homborg
d73ee4d54b
More using FLOGF when formatting is needed
...
sed-patched, every time a "%" is used in a call to `FLOG`, we use
`FLOGF` instead.
2019-05-30 11:54:09 +02:00
Fabian Homborg
a5b633d3a5
env: Correct type
...
We'd be comparing "int" and "mode_t", and "mode_t" might be unsigned.
Found via GCC warning.
2019-05-29 20:50:35 +02:00
David Adam
ba4f4bfce2
Convert further debug(0) calls to FLOG
...
Follow on from ea9d1ad82f
.
2019-05-28 21:06:42 +08:00
ridiculousfish
ea9d1ad82f
Convert debug(0) calls to FLOG
2019-05-27 17:31:17 -07:00
ridiculousfish
2924751488
Correct priority of universal and global variable setting
...
When setting a variable without a specified scope, we should give priority
to an existing local or global above an existing universal variable with
the same name.
In 16fd780484
there was a regression that
made universal variables have priority.
Fixes #5883
2019-05-25 17:35:19 -07:00
ridiculousfish
7915831939
Wrap setenv() and unsetenv() calls in a lock
2019-05-22 16:13:31 -07:00
ridiculousfish
ad57133c7f
Switch parser_t to hold its variables via shared_ptr
...
Preparation for variable stacks with finite lifetimes.
2019-05-21 10:25:48 -07:00
ridiculousfish
c42eb0eb4f
Remove the process from function_block_t
...
Prior to this fix, a function_block stored a process_t, which was only used
when printing backtraces. Switch this to an array of arguments, and make
various other cleanups around null terminated argument arrays.
2019-05-18 21:09:04 -07:00
ridiculousfish
be41407610
Make have_proc_stat an ordinary function
...
Removes a mutable global variable.
2019-05-18 18:50:28 -07:00
ridiculousfish
234c97e6d2
Remove some unused variables
2019-05-12 18:23:00 -07:00
ridiculousfish
1719d6f136
Make $status and $pipestatus per-parser
...
Another step towards allowing multiple parsers to execute in parallel.
2019-05-12 14:00:44 -07:00
ridiculousfish
1e4ebfa470
Make electric variables a real thing
...
Use an actual struct to describe electric variables and what is special
about each one.
2019-05-11 19:17:33 -07:00
ridiculousfish
16fd780484
Reimplement the whole variable stack
...
The variable stack is a mess - confused locking, surprising callouts, and
unclear division of labor. Just reimplement the whole thing.
2019-05-11 19:17:16 -07:00
ridiculousfish
cfddd881ef
Make PWD a per-processor variable
...
Handle this variable specially.
2019-05-11 17:13:34 -07:00
ridiculousfish
ee250aba82
Factor some environment setting into set_scoped_internal
...
Breaks up a monolith function.
2019-05-11 17:13:34 -07:00
ridiculousfish
15a52d0f0d
Centralize some of the logic for walking the environment stack
...
Prepare to introduce a new node for per-process variables.
2019-05-11 17:13:34 -07:00
Fabian Homborg
c2970f9618
Reformat all files
...
This runs build_tools/style.fish, which runs clang-format on C++, fish_indent on fish and (new) black on python.
If anything is wrong with the formatting, we should fix the tools, but automated formatting is worth it.
2019-05-05 12:09:25 +02:00
ridiculousfish
edab366d3a
Eliminate the "input callback queue"
...
This was a sort of side channel that was only used to propagate redraws
after universal variable changes. We can eliminate it and handle these
more directly.
2019-05-04 20:58:35 -07:00
ridiculousfish
36998eee55
Make more miscellaneous globals thread safe
2019-05-04 20:58:35 -07:00
ridiculousfish
2ce827343e
Universal variables to become a latch variable
2019-05-04 20:58:35 -07:00
ridiculousfish
649d3ac101
Simplify reporting of invalid config paths
...
Do this at a well defined point, instead of randomly the first time they're
queried.
2019-05-01 17:51:51 -07:00
David Adam
665ae3787a
Switch to runtime check for /proc/self/stat
...
Removes a compile-time check that may have affected cross-compilation.
Work on #1067 .
2019-04-30 16:23:28 +08:00
ridiculousfish
6b52b0994c
Attempt to fix the travis build
2019-04-14 17:43:02 -07:00
ridiculousfish
2fac0f0b39
Correctly lock around umask
...
umask can only be set, never just queried. Thus we need to lock around
calls to it.
Also guess the value; if we guess right we don't need to reset it.
2019-04-14 16:08:29 -07:00
ridiculousfish
020d4a2848
Adopt env_scoped_t::snapshot() and remove env_var_snapshot_t
...
Remove the env_var_snapshot_t class and switch everything to the new snapshot
function of env_scoped_t.
Fixes #5658 . Fixes #5571 .
2019-04-14 15:50:38 -07:00
ridiculousfish
64584a6624
Add a snapshot function to env_scoped_t
...
Allow creating lightweight read-only copies of a scoped environment.
2019-04-14 15:50:30 -07:00
ridiculousfish
0ca3ae7c7e
Rejigger var_stack_t's ctors
...
Prepare var_stack_t to support snapshotting.
2019-04-14 15:50:24 -07:00
ridiculousfish
69655ef5c1
Reorganize env.cpp
...
Group functions together more logically
2019-04-14 15:50:19 -07:00
ridiculousfish
1d464da698
Introduce env_scoped_t
...
env_scoped_t lives between environment_t and env_stack_t.
It represents the read-only logic of env_stack_t and will be used to back
the new environment snapshot implementation.
2019-04-14 15:50:12 -07:00
ridiculousfish
cc9386fca9
Clean up some headers in env and env_dispatch.cpp
2019-04-13 14:39:20 -07:00
ridiculousfish
2537fe0f9e
Put back a missing lock in env_stack_t::set_internal
...
Setting a variable could race with getting it.
The lockin^g here needs a serious overhaul.
2019-04-13 12:40:58 -07:00
ridiculousfish
2f1e572756
Minor cleanup of env_node_t
...
Mark some fields const that don't need to change. Trying to get ready to
improve locking here.
2019-04-13 12:40:58 -07:00
ridiculousfish
372291ad02
Collapse a weirdly structured clause in env.cpp
2019-04-13 12:40:57 -07:00
ridiculousfish
a597b0e6e1
Remove get_proc_had_barrier
...
Prior to this change, fish used a global flag to decide if we should check
for changes to universal variables. This flag was then checked at arbitrary
locations, potentially triggering variable updates and event handlers for
those updates; this was very hard to reason about.
Switch to triggering a universal variable update at a fixed location,
after running an external command. The common case is that the variable
file has not changed, which we can identify with just a stat() call, so
this is pretty cheap.
2019-04-13 12:40:57 -07:00
ridiculousfish
341799194e
Factor out fetching electric variables into a separate function
...
This factors env_stack_t::get() a little better
2019-04-13 12:40:57 -07:00
ridiculousfish
f7817a2586
Remove env_node_t::contains_any_of
...
Dead code...
2019-04-10 23:18:30 -07:00
ridiculousfish
3e14f96d40
Eliminate string_set_contains
2019-04-08 16:22:04 -07:00
ridiculousfish
1caf20f7c3
Migrate the read limit into env_dispatch
2019-04-08 16:22:04 -07:00
ridiculousfish
fa0a6ae096
Move locale and curses init from env to env_dispatch
2019-04-08 16:22:04 -07:00
ridiculousfish
11651dec7a
Clean up env_stack_t::pop
...
Use the new dispatch mechanism to reduce duplication
2019-04-08 16:22:04 -07:00
ridiculousfish
987e41de12
Remove the op from env_dispatch
...
Environment dispatch passes strings like "ERASE" and "SET" but nobody
ever looks at those. Just get rid of them.
2019-04-08 16:22:04 -07:00
ridiculousfish
dc729653be
Migrate pop complexity from vars_stack_t to env_stack_t
...
When popping a scope from the environment stack, we currently do a lot of
nonsense like looking for changed curses variables. We want to centralize
this in env_stack_t so that it can be migrated to the env_dispatch logic.
Move this logic up one level in preparation for doing that.
2019-04-08 16:22:04 -07:00
ridiculousfish
59fb5b1849
var_stack_t::pop() to return the popped node
2019-04-08 16:22:04 -07:00
ridiculousfish
0c5809a088
Minor cleanup of env_node_t
2019-04-08 16:22:04 -07:00
ridiculousfish
ab67354192
Migrate fish_use_posix_spawn into env_dispatch
2019-04-08 16:22:04 -07:00
ridiculousfish
e7de9cc371
Migrate some env initialization into env_dispatch
2019-04-08 16:22:04 -07:00
ridiculousfish
b67174b4a3
Clean up env_dispatch_table
2019-04-08 16:22:04 -07:00
ridiculousfish
b7fceddfc8
Refactor some environment code into env_dispatch.cpp
...
This new file is supposed to encapsulate all of the logic around
reacting to variable changes, as opposed to the environment core.
This is to help break up the env.cpp monolith.
2019-04-08 16:22:04 -07:00
Aaron Gyes
b064eaa571
use std::move in a couple spots where things were unsed after copy
2019-04-04 14:16:34 -07:00
ridiculousfish
989f992a75
Rearrange and inline some env code
2019-03-25 00:49:52 -07:00