From 4f3c31a6b63f4489bfc672b510036fd8d9491595 Mon Sep 17 00:00:00 2001 From: Nicholas Marriott Date: Wed, 24 Apr 2013 10:57:03 +0100 Subject: [PATCH] Use sysconfdir for the location of global tmux.conf (but default it to /etc), based on changes from Dagobert Michelsen. --- Makefile.am | 7 ++++--- configure.ac | 3 +++ server.c | 8 ++++---- tmux.1.in | 6 +++--- tmux.c | 2 +- tmux.h | 4 ---- 6 files changed, 15 insertions(+), 15 deletions(-) diff --git a/Makefile.am b/Makefile.am index c131940a..726582a5 100644 --- a/Makefile.am +++ b/Makefile.am @@ -15,7 +15,7 @@ dist-hook: find $(distdir) -name .svn -type d|xargs rm -Rf # Preprocessor flags. -CPPFLAGS += @XOPEN_DEFINES@ +CPPFLAGS += @XOPEN_DEFINES@ -DTMUX_CONF="\"$(sysconfdir)/tmux.conf\"" # glibc as usual does things ass-backwards and hides useful things by default, # so everyone has to add this. @@ -240,9 +240,10 @@ endif # Build tmux.1 in the right format. tmux.1: tmux.1.in if test x@MANFORMAT@ = xmdoc; then \ - cp tmux.1.in tmux.1; \ + sed -e "s|@SYSCONFDIR@|$(sysconfdir)|g" tmux.1.in >tmux.1; \ else \ - $(AWK) -fmdoc2man.awk tmux.1; \ + sed -e "s|@SYSCONFDIR@|$(sysconfdir)|g" tmux.1.in| \ + $(AWK) -fmdoc2man.awk >tmux.1; \ fi # Update SF web site. diff --git a/configure.ac b/configure.ac index 80cf1266..590b9db0 100644 --- a/configure.ac +++ b/configure.ac @@ -18,6 +18,9 @@ AC_PROG_CC AM_PROG_CC_C_O AC_PROG_INSTALL +# Default tmux.conf goes in /etc not ${prefix}/etc. +test "$sysconfdir" = '${prefix}/etc' && sysconfdir=/etc + # Check for various headers. Alternatives included from compat.h. AC_CHECK_HEADERS( [ \ diff --git a/server.c b/server.c index 4bfa9185..bd28d517 100644 --- a/server.c +++ b/server.c @@ -170,13 +170,13 @@ server_start(int lockfd, char *lockfile) cfg_references = 1; ARRAY_INIT(&cfg_causes); - if (access(SYSTEM_CFG, R_OK) == 0) { - if (load_cfg(SYSTEM_CFG, cfg_cmd_q, &cause) == -1) { - xasprintf(&cause, "%s: %s", SYSTEM_CFG, cause); + if (access(TMUX_CONF, R_OK) == 0) { + if (load_cfg(TMUX_CONF, cfg_cmd_q, &cause) == -1) { + xasprintf(&cause, "%s: %s", TMUX_CONF, cause); ARRAY_ADD(&cfg_causes, cause); } } else if (errno != ENOENT) { - xasprintf(&cause, "%s: %s", SYSTEM_CFG, strerror(errno)); + xasprintf(&cause, "%s: %s", TMUX_CONF, strerror(errno)); ARRAY_ADD(&cfg_causes, cause); } if (cfg_file != NULL) { diff --git a/tmux.1.in b/tmux.1.in index 98bf9574..7f783b86 100644 --- a/tmux.1.in +++ b/tmux.1.in @@ -122,7 +122,7 @@ Specify an alternative configuration file. By default, .Nm loads the system configuration file from -.Pa /etc/tmux.conf , +.Pa @SYSCONFDIR@/tmux.conf , if present, then looks for a user configuration file at .Pa ~/.tmux.conf . .Pp @@ -3705,12 +3705,12 @@ was renamed to .Ar name . .El .Sh FILES -.Bl -tag -width "/etc/tmux.confXXX" -compact +.Bl -tag -width "@SYSCONFDIR@/tmux.confXXX" -compact .It Pa ~/.tmux.conf Default .Nm configuration file. -.It Pa /etc/tmux.conf +.It Pa @SYSCONFDIR@/tmux.conf System-wide configuration file. .El .Sh EXAMPLES diff --git a/tmux.c b/tmux.c index 2916bbb5..606c574f 100644 --- a/tmux.c +++ b/tmux.c @@ -363,7 +363,7 @@ main(int argc, char **argv) if (pw != NULL) home = pw->pw_dir; } - xasprintf(&cfg_file, "%s/%s", home, DEFAULT_CFG); + xasprintf(&cfg_file, "%s/.tmux.conf", home); if (access(cfg_file, R_OK) != 0 && errno == ENOENT) { free(cfg_file); cfg_file = NULL; diff --git a/tmux.h b/tmux.h index f0b9edf0..fc5561b5 100644 --- a/tmux.h +++ b/tmux.h @@ -39,10 +39,6 @@ extern char *__progname; extern char **environ; -/* Default configuration files. */ -#define DEFAULT_CFG ".tmux.conf" -#define SYSTEM_CFG "/etc/tmux.conf" - /* Default prompt history length. */ #define PROMPT_HISTORY 100