/* * Look up the access of a variable directly from the .flags var. */ enum env_flags_varaccess env_flags_get_varaccess(const char *name) { const char *flags_list = getenv(ENV_FLAGS_VAR); char flags[ENV_FLAGS_ATTR_MAX_LEN + 1]; if (env_flags_lookup(flags_list, name, flags)) return env_flags_varaccess_any; if (strlen(flags) <= ENV_FLAGS_VARACCESS_LOC) return env_flags_varaccess_any; return env_flags_parse_varaccess(flags); }
/* * Look up any flags directly from the .flags variable and the static list * and convert them to the vartype enum. */ enum env_flags_vartype env_flags_get_type(const char *name) { const char *flags_list = getenv(ENV_FLAGS_VAR); char flags[ENV_FLAGS_ATTR_MAX_LEN + 1]; if (env_flags_lookup(flags_list, name, flags)) return env_flags_vartype_string; if (strlen(flags) <= ENV_FLAGS_VARTYPE_LOC) return env_flags_vartype_string; return env_flags_parse_vartype(flags); }
/* * Look for possible flags for a newly added variable * This is called specifically when the variable did not exist in the hash * previously, so the blanket update did not find this variable. */ void env_flags_init(ENTRY *var_entry) { const char *var_name = var_entry->key; const char *flags_list = getenv(ENV_FLAGS_VAR); char flags[ENV_FLAGS_ATTR_MAX_LEN + 1] = ""; int ret = 1; /* look in the ".flags" and static for a reference to this variable */ ret = env_flags_lookup(flags_list, var_name, flags); /* if any flags were found, set the binary form to the entry */ if (!ret && strlen(flags)) var_entry->flags = env_parse_flags_to_bin(flags); }