Browse Source

Introduce git_etc_gitconfig() that encapsulates access of ETC_GITCONFIG.

In a subsequent patch the path to the system-wide config file will be
computed. This is a preparation for that change. It turns all accesses
of ETC_GITCONFIG into function calls. There is no change in behavior.

As a consequence, config.c is the only file that needs the definition of
ETC_GITCONFIG. Hence, -DETC_GITCONFIG is removed from the CFLAGS and a
special build rule for config.c is introduced. As a side-effect, changing
the defintion of ETC_GITCONFIG (e.g. in config.mak) does not trigger a
complete rebuild anymore.

Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Johannes Sixt 18 years ago committed by Junio C Hamano
parent
commit
506b17b136
  1. 5
      Makefile
  2. 4
      builtin-config.c
  3. 1
      cache.h
  4. 9
      config.c

5
Makefile

@ -754,7 +754,7 @@ TCLTK_PATH_SQ = $(subst ','\'',$(TCLTK_PATH))
LIBS = $(GITLIBS) $(EXTLIBS) LIBS = $(GITLIBS) $(EXTLIBS)


BASIC_CFLAGS += -DSHA1_HEADER='$(SHA1_HEADER_SQ)' \ BASIC_CFLAGS += -DSHA1_HEADER='$(SHA1_HEADER_SQ)' \
-DETC_GITCONFIG='"$(ETC_GITCONFIG_SQ)"' $(COMPAT_CFLAGS) $(COMPAT_CFLAGS)
LIB_OBJS += $(COMPAT_OBJS) LIB_OBJS += $(COMPAT_OBJS)


ALL_CFLAGS += $(BASIC_CFLAGS) ALL_CFLAGS += $(BASIC_CFLAGS)
@ -903,6 +903,9 @@ exec_cmd.o: exec_cmd.c GIT-CFLAGS
builtin-init-db.o: builtin-init-db.c GIT-CFLAGS builtin-init-db.o: builtin-init-db.c GIT-CFLAGS
$(QUIET_CC)$(CC) -o $*.o -c $(ALL_CFLAGS) -DDEFAULT_GIT_TEMPLATE_DIR='"$(template_dir_SQ)"' $< $(QUIET_CC)$(CC) -o $*.o -c $(ALL_CFLAGS) -DDEFAULT_GIT_TEMPLATE_DIR='"$(template_dir_SQ)"' $<


config.o: config.c GIT-CFLAGS
$(QUIET_CC)$(CC) -o $*.o -c $(ALL_CFLAGS) -DETC_GITCONFIG='"$(ETC_GITCONFIG_SQ)"' $<

http.o: http.c GIT-CFLAGS http.o: http.c GIT-CFLAGS
$(QUIET_CC)$(CC) -o $*.o -c $(ALL_CFLAGS) -DGIT_USER_AGENT='"git/$(GIT_VERSION)"' $< $(QUIET_CC)$(CC) -o $*.o -c $(ALL_CFLAGS) -DGIT_USER_AGENT='"git/$(GIT_VERSION)"' $<



4
builtin-config.c

@ -81,7 +81,7 @@ static int get_value(const char* key_, const char* regex_)
local = repo_config = xstrdup(git_path("config")); local = repo_config = xstrdup(git_path("config"));
if (home) if (home)
global = xstrdup(mkpath("%s/.gitconfig", home)); global = xstrdup(mkpath("%s/.gitconfig", home));
system_wide = ETC_GITCONFIG; system_wide = git_etc_gitconfig();
} }


key = xstrdup(key_); key = xstrdup(key_);
@ -191,7 +191,7 @@ int cmd_config(int argc, const char **argv, const char *prefix)
} }
} }
else if (!strcmp(argv[1], "--system")) else if (!strcmp(argv[1], "--system"))
setenv(CONFIG_ENVIRONMENT, ETC_GITCONFIG, 1); setenv(CONFIG_ENVIRONMENT, git_etc_gitconfig(), 1);
else if (!strcmp(argv[1], "--file") || !strcmp(argv[1], "-f")) { else if (!strcmp(argv[1], "--file") || !strcmp(argv[1], "-f")) {
if (argc < 3) if (argc < 3)
usage(git_config_set_usage); usage(git_config_set_usage);

1
cache.h

@ -557,6 +557,7 @@ extern int git_config_bool(const char *, const char *);
extern int git_config_set(const char *, const char *); extern int git_config_set(const char *, const char *);
extern int git_config_set_multivar(const char *, const char *, const char *, int); extern int git_config_set_multivar(const char *, const char *, const char *, int);
extern int git_config_rename_section(const char *, const char *); extern int git_config_rename_section(const char *, const char *);
extern const char *git_etc_gitconfig(void);
extern int check_repository_format_version(const char *var, const char *value); extern int check_repository_format_version(const char *var, const char *value);


#define MAX_GITNAME (1000) #define MAX_GITNAME (1000)

9
config.c

@ -459,6 +459,11 @@ int git_config_from_file(config_fn_t fn, const char *filename)
return ret; return ret;
} }


const char *git_etc_gitconfig(void)
{
return ETC_GITCONFIG;
}

int git_config(config_fn_t fn) int git_config(config_fn_t fn)
{ {
int ret = 0; int ret = 0;
@ -471,8 +476,8 @@ int git_config(config_fn_t fn)
* config file otherwise. */ * config file otherwise. */
filename = getenv(CONFIG_ENVIRONMENT); filename = getenv(CONFIG_ENVIRONMENT);
if (!filename) { if (!filename) {
if (!access(ETC_GITCONFIG, R_OK)) if (!access(git_etc_gitconfig(), R_OK))
ret += git_config_from_file(fn, ETC_GITCONFIG); ret += git_config_from_file(fn, git_etc_gitconfig());
home = getenv("HOME"); home = getenv("HOME");
filename = getenv(CONFIG_LOCAL_ENVIRONMENT); filename = getenv(CONFIG_LOCAL_ENVIRONMENT);
if (!filename) if (!filename)

Loading…
Cancel
Save