Merge branch 'bc/more-git-var' into next

Add more "git var" for toolsmiths to learn various locations Git is
configured with either via the configuration or hardcoded defaults.

* bc/more-git-var:
  var: add config file locations
  var: add attributes files locations
  attr: expose and rename accessor functions
  var: adjust memory allocation for strings
  var: format variable structure with C99 initializers
  var: add support for listing the shell
  t: add a function to check executable bit
  var: mark unused parameters in git_var callbacks
This commit is contained in:
Junio C Hamano
2023-06-27 14:32:21 -07:00
7 changed files with 303 additions and 27 deletions

14
attr.c
View File

@ -872,7 +872,7 @@ static struct attr_stack *read_attr(struct index_state *istate,
return res;
}
static const char *git_etc_gitattributes(void)
const char *git_attr_system_file(void)
{
static const char *system_wide;
if (!system_wide)
@ -880,7 +880,7 @@ static const char *git_etc_gitattributes(void)
return system_wide;
}
static const char *get_home_gitattributes(void)
const char *git_attr_global_file(void)
{
if (!git_attributes_file)
git_attributes_file = xdg_config_home("attributes");
@ -888,7 +888,7 @@ static const char *get_home_gitattributes(void)
return git_attributes_file;
}
static int git_attr_system(void)
int git_attr_system_is_enabled(void)
{
return !git_env_bool("GIT_ATTR_NOSYSTEM", 0);
}
@ -922,14 +922,14 @@ static void bootstrap_attr_stack(struct index_state *istate,
push_stack(stack, e, NULL, 0);
/* system-wide frame */
if (git_attr_system()) {
e = read_attr_from_file(git_etc_gitattributes(), flags);
if (git_attr_system_is_enabled()) {
e = read_attr_from_file(git_attr_system_file(), flags);
push_stack(stack, e, NULL, 0);
}
/* home directory */
if (get_home_gitattributes()) {
e = read_attr_from_file(get_home_gitattributes(), flags);
if (git_attr_global_file()) {
e = read_attr_from_file(git_attr_global_file(), flags);
push_stack(stack, e, NULL, 0);
}