Eliminate string_set_contains

This commit is contained in:
ridiculousfish 2019-04-08 13:56:00 -07:00
parent 1caf20f7c3
commit 3e14f96d40

View file

@ -216,25 +216,14 @@ static env_universal_t *uvars() { return s_universal_variables; }
// so we don't bother to sort them.
using string_set_t = const wchar_t *const[];
template <typename T>
bool string_set_contains(const T &set, const wchar_t *val) {
for (const wchar_t *entry : set) {
if (!std::wcscmp(val, entry)) return true;
}
return false;
}
/// Check if a variable may not be set using the set command.
static bool is_read_only(const wchar_t *val) {
const string_set_t env_read_only = {
L"PWD", L"SHLVL", L"history", L"pipestatus", L"status", L"version",
static bool is_read_only(const wcstring &key) {
static const string_set_t env_read_only = {
L"PWD", L"SHLVL", L"history", L"pipestatus", L"status", L"version",
L"FISH_VERSION", L"fish_pid", L"hostname", L"_", L"fish_private_mode"};
return string_set_contains(env_read_only, val) ||
(in_private_mode() && std::wcscmp(L"fish_history", val) == 0);
return contains(env_read_only, key) || (in_private_mode() && key == L"fish_history");
}
static bool is_read_only(const wcstring &val) { return is_read_only(val.c_str()); }
/// Return true if a variable should become a path variable by default. See #436.
static bool variable_should_auto_pathvar(const wcstring &name) {
return string_suffixes_string(L"PATH", name);