Merge branch 'pt/xdg-config-path'
Code clean-up for xdg configuration path support. * pt/xdg-config-path: path.c: remove home_config_paths() git-config: replace use of home_config_paths() git-commit: replace use of home_config_paths() credential-store.c: replace home_config_paths() with xdg_config_home() dir.c: replace home_config_paths() with xdg_config_home() attr.c: replace home_config_paths() with xdg_config_home() path.c: implement xdg_config_home()
This commit is contained in:
commit
558e5a8c40
7
attr.c
7
attr.c
@ -493,7 +493,6 @@ static int git_attr_system(void)
|
||||
static void bootstrap_attr_stack(void)
|
||||
{
|
||||
struct attr_stack *elem;
|
||||
char *xdg_attributes_file;
|
||||
|
||||
if (attr_stack)
|
||||
return;
|
||||
@ -512,10 +511,8 @@ static void bootstrap_attr_stack(void)
|
||||
}
|
||||
}
|
||||
|
||||
if (!git_attributes_file) {
|
||||
home_config_paths(NULL, &xdg_attributes_file, "attributes");
|
||||
git_attributes_file = xdg_attributes_file;
|
||||
}
|
||||
if (!git_attributes_file)
|
||||
git_attributes_file = xdg_config_home("attributes");
|
||||
if (git_attributes_file) {
|
||||
elem = read_attr_from_file(git_attributes_file, 1);
|
||||
if (elem) {
|
||||
|
@ -1398,12 +1398,10 @@ int cmd_status(int argc, const char **argv, const char *prefix)
|
||||
|
||||
static const char *implicit_ident_advice(void)
|
||||
{
|
||||
char *user_config = NULL;
|
||||
char *xdg_config = NULL;
|
||||
int config_exists;
|
||||
char *user_config = expand_user_path("~/.gitconfig");
|
||||
char *xdg_config = xdg_config_home("config");
|
||||
int config_exists = file_exists(user_config) || file_exists(xdg_config);
|
||||
|
||||
home_config_paths(&user_config, &xdg_config, "config");
|
||||
config_exists = file_exists(user_config) || file_exists(xdg_config);
|
||||
free(user_config);
|
||||
free(xdg_config);
|
||||
|
||||
|
@ -488,10 +488,8 @@ int cmd_config(int argc, const char **argv, const char *prefix)
|
||||
}
|
||||
|
||||
if (use_global_config) {
|
||||
char *user_config = NULL;
|
||||
char *xdg_config = NULL;
|
||||
|
||||
home_config_paths(&user_config, &xdg_config, "config");
|
||||
char *user_config = expand_user_path("~/.gitconfig");
|
||||
char *xdg_config = xdg_config_home("config");
|
||||
|
||||
if (!user_config)
|
||||
/*
|
||||
|
8
cache.h
8
cache.h
@ -851,7 +851,6 @@ enum scld_error safe_create_leading_directories(char *path);
|
||||
enum scld_error safe_create_leading_directories_const(const char *path);
|
||||
|
||||
int mkdir_in_gitdir(const char *path);
|
||||
extern void home_config_paths(char **global, char **xdg, char *file);
|
||||
extern char *expand_user_path(const char *path);
|
||||
const char *enter_repo(const char *path, int strict);
|
||||
static inline int is_absolute_path(const char *path)
|
||||
@ -871,6 +870,13 @@ char *strip_path_suffix(const char *path, const char *suffix);
|
||||
int daemon_avoid_alias(const char *path);
|
||||
extern int is_ntfs_dotgit(const char *name);
|
||||
|
||||
/**
|
||||
* Return a newly allocated string with the evaluation of
|
||||
* "$XDG_CONFIG_HOME/git/$filename" if $XDG_CONFIG_HOME is non-empty, otherwise
|
||||
* "$HOME/.config/git/$filename". Return NULL upon error.
|
||||
*/
|
||||
extern char *xdg_config_home(const char *filename);
|
||||
|
||||
/* object replacement */
|
||||
#define LOOKUP_REPLACE_OBJECT 1
|
||||
extern void *read_sha1_file_extended(const unsigned char *sha1, enum object_type *type, unsigned long *size, unsigned flag);
|
||||
|
6
config.c
6
config.c
@ -1187,10 +1187,8 @@ int git_config_system(void)
|
||||
int git_config_early(config_fn_t fn, void *data, const char *repo_config)
|
||||
{
|
||||
int ret = 0, found = 0;
|
||||
char *xdg_config = NULL;
|
||||
char *user_config = NULL;
|
||||
|
||||
home_config_paths(&user_config, &xdg_config, "config");
|
||||
char *xdg_config = xdg_config_home("config");
|
||||
char *user_config = expand_user_path("~/.gitconfig");
|
||||
|
||||
if (git_config_system() && !access_or_die(git_etc_gitconfig(), R_OK, 0)) {
|
||||
ret += git_config_from_file(fn, git_etc_gitconfig(),
|
||||
|
@ -170,7 +170,7 @@ int main(int argc, char **argv)
|
||||
} else {
|
||||
if ((file = expand_user_path("~/.git-credentials")))
|
||||
string_list_append_nodup(&fns, file);
|
||||
home_config_paths(NULL, &file, "credentials");
|
||||
file = xdg_config_home("credentials");
|
||||
if (file)
|
||||
string_list_append_nodup(&fns, file);
|
||||
}
|
||||
|
7
dir.c
7
dir.c
@ -1671,14 +1671,11 @@ int remove_dir_recursively(struct strbuf *path, int flag)
|
||||
void setup_standard_excludes(struct dir_struct *dir)
|
||||
{
|
||||
const char *path;
|
||||
char *xdg_path;
|
||||
|
||||
dir->exclude_per_dir = ".gitignore";
|
||||
path = git_path("info/exclude");
|
||||
if (!excludes_file) {
|
||||
home_config_paths(NULL, &xdg_path, "ignore");
|
||||
excludes_file = xdg_path;
|
||||
}
|
||||
if (!excludes_file)
|
||||
excludes_file = xdg_config_home("ignore");
|
||||
if (!access_or_warn(path, R_OK, 0))
|
||||
add_excludes_from_file(dir, path);
|
||||
if (excludes_file && !access_or_warn(excludes_file, R_OK, 0))
|
||||
|
43
path.c
43
path.c
@ -224,34 +224,6 @@ const char *mkpath(const char *fmt, ...)
|
||||
return cleanup_path(pathname->buf);
|
||||
}
|
||||
|
||||
void home_config_paths(char **global, char **xdg, char *file)
|
||||
{
|
||||
char *xdg_home = getenv("XDG_CONFIG_HOME");
|
||||
char *home = getenv("HOME");
|
||||
char *to_free = NULL;
|
||||
|
||||
if (!home) {
|
||||
if (global)
|
||||
*global = NULL;
|
||||
} else {
|
||||
if (!xdg_home) {
|
||||
to_free = mkpathdup("%s/.config", home);
|
||||
xdg_home = to_free;
|
||||
}
|
||||
if (global)
|
||||
*global = mkpathdup("%s/.gitconfig", home);
|
||||
}
|
||||
|
||||
if (xdg) {
|
||||
if (!xdg_home)
|
||||
*xdg = NULL;
|
||||
else
|
||||
*xdg = mkpathdup("%s/git/%s", xdg_home, file);
|
||||
}
|
||||
|
||||
free(to_free);
|
||||
}
|
||||
|
||||
const char *git_path_submodule(const char *path, const char *fmt, ...)
|
||||
{
|
||||
struct strbuf *buf = get_pathname();
|
||||
@ -931,3 +903,18 @@ int is_ntfs_dotgit(const char *name)
|
||||
len = -1;
|
||||
}
|
||||
}
|
||||
|
||||
char *xdg_config_home(const char *filename)
|
||||
{
|
||||
const char *home, *config_home;
|
||||
|
||||
assert(filename);
|
||||
config_home = getenv("XDG_CONFIG_HOME");
|
||||
if (config_home && *config_home)
|
||||
return mkpathdup("%s/git/%s", config_home, filename);
|
||||
|
||||
home = getenv("HOME");
|
||||
if (home)
|
||||
return mkpathdup("%s/.config/git/%s", home, filename);
|
||||
return NULL;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user