[Pkg-wmaker-commits] [wmaker] 31/40: configure: Add option to specify global defaults directory.
Doug Torrance
dtorrance-guest at moszumanska.debian.org
Sat Mar 11 13:08:19 UTC 2017
This is an automated email from the git hooks/post-receive script.
dtorrance-guest pushed a commit to branch upstream
in repository wmaker.
commit 6fa1c0c009c9d414dc59ec90d7d1dfc97841f38c
Author: Doug Torrance <dtorrance at piedmont.edu>
Date: Fri Mar 10 02:39:31 2017 -0500
configure: Add option to specify global defaults directory.
Previously, this was only (partially) possible by redefining the macro
GLOBAL_DEFAULTS_SUBDIR. This told Window Maker to look for the global
config files in a particular subdirectory of SYSCONFDIR.
However:
* This is undocumented.
* GLOBAL_DEFAULTS_SUBDIR is ignored when installing the config files. They
are always installed to SYSCONFDIR/WindowMaker.
To solve these issues, we add a "--with-defsdatadir" option to configure
which allows a user to specify the global defaults directory.
---
Makefile.am | 4 ++--
WINGs/userdefaults.c | 7 ++-----
WindowMaker/Defaults/Makefile.am | 3 ---
configure.ac | 15 +++++++++++++++
src/defaults.c | 11 +++--------
src/main.c | 6 +-----
src/misc.c | 2 +-
7 files changed, 24 insertions(+), 24 deletions(-)
diff --git a/Makefile.am b/Makefile.am
index 638cfed..786d3e8 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -21,8 +21,8 @@ config-paths.h: Makefile
@echo '/* where shared data is stored */' >> $@
@echo '#define PKGDATADIR "$(datadir)/WindowMaker"' >> $@
@echo '' >> $@
- @echo '/* where the configuration is stored */' >> $@
- @echo '#define SYSCONFDIR "$(sysconfdir)"' >> $@
+ @echo '/* where the global defaults are stored */' >> $@
+ @echo '#define DEFSDATADIR "$(defsdatadir)"' >> $@
ACLOCAL_AMFLAGS = -I m4
diff --git a/WINGs/userdefaults.c b/WINGs/userdefaults.c
index 65ed099..3ec776c 100644
--- a/WINGs/userdefaults.c
+++ b/WINGs/userdefaults.c
@@ -103,17 +103,14 @@ char *wdefaultspathfordomain(const char *domain)
}
/* XXX: doesn't quite belong to *user*defaults.c */
-#ifndef GLOBAL_DEFAULTS_SUBDIR
-#define GLOBAL_DEFAULTS_SUBDIR "WindowMaker"
-#endif
char *wglobaldefaultspathfordomain(const char *domain)
{
char *t = NULL;
size_t len;
- len = strlen( SYSCONFDIR ) + strlen( GLOBAL_DEFAULTS_SUBDIR ) + strlen(domain) + 3;
+ len = strlen(DEFSDATADIR) + strlen(domain) + 2;
t = wmalloc(len);
- snprintf(t, len, "%s/%s/%s", SYSCONFDIR, GLOBAL_DEFAULTS_SUBDIR, domain);
+ snprintf(t, len, "%s/%s", DEFSDATADIR, domain);
return t;
}
diff --git a/WindowMaker/Defaults/Makefile.am b/WindowMaker/Defaults/Makefile.am
index e61b41f..182385c 100644
--- a/WindowMaker/Defaults/Makefile.am
+++ b/WindowMaker/Defaults/Makefile.am
@@ -1,6 +1,3 @@
-
-defsdatadir = $(sysconfdir)/WindowMaker
-
defsdata_DATA = WMRootMenu WMWindowAttributes WindowMaker WMState WMGLOBAL
wpexecbindir = @wprefs_bindir@
diff --git a/configure.ac b/configure.ac
index 8439c80..2b43e00 100644
--- a/configure.ac
+++ b/configure.ac
@@ -867,6 +867,21 @@ AS_IF([test "x$with_gnustepdir" = "x"],
AC_SUBST([wprefs_datadir])dnl
AC_SUBST([wprefs_bindir])dnl
+dnl Support for DEFSDATADIR option
+dnl ============================
+AC_ARG_WITH([defsdatadir],
+ [AS_HELP_STRING([--with-defsdatadir=PATH], [specify where global defaults are located [SYSCONFDIR/WindowMaker]])],
+ [AS_CASE([$withval],
+ [yes|no], [AC_MSG_ERROR([bad value '$withval' for --with-defsdatadir, expected a path]) ],
+ [/*], [], dnl Absolute path, ok
+ [\$*], [], dnl Assumes it starts with a reference to $prefix or a similar variable, ok
+ [AC_MSG_ERROR([bad path '$withval' for defsdatadir, expecting an absolute path])])],
+ [with_defsdatadir=""])
+
+AS_IF([test "x$with_defsdatadir" != "x"],
+ [defsdatadir="$with_defsdatadir"],
+ [defsdatadir='${sysconfdir}/WindowMaker'])
+AC_SUBST([defsdatadir])dnl
dnl Enable User Defined Menu thing
dnl ==============================
diff --git a/src/defaults.c b/src/defaults.c
index f295ce1..f83f6a5 100644
--- a/src/defaults.c
+++ b/src/defaults.c
@@ -67,11 +67,6 @@
#define MAX_SHORTCUT_LENGTH 32
-#ifndef GLOBAL_DEFAULTS_SUBDIR
-#define GLOBAL_DEFAULTS_SUBDIR "WindowMaker"
-#endif
-
-
typedef struct _WDefaultEntry WDefaultEntry;
typedef int (WDECallbackConvert) (WScreen *scr, WDefaultEntry *entry, WMPropList *plvalue, void *addr, void **tdata);
typedef int (WDECallbackUpdate) (WScreen *scr, WDefaultEntry *entry, void *tdata, void *extra_data);
@@ -879,7 +874,7 @@ static WMPropList *readGlobalDomain(const char *domainName, Bool requireDictiona
char path[PATH_MAX];
struct stat stbuf;
- snprintf(path, sizeof(path), "%s/%s/%s", SYSCONFDIR, GLOBAL_DEFAULTS_SUBDIR, domainName);
+ snprintf(path, sizeof(path), "%s/%s", DEFSDATADIR, domainName);
if (stat(path, &stbuf) >= 0) {
globalDict = WMReadPropListFromFile(path);
if (globalDict && requireDictionary && !WMIsPLDictionary(globalDict)) {
@@ -929,7 +924,7 @@ void wDefaultsMergeGlobalMenus(WDDomain * menuDomain)
return;
#ifdef GLOBAL_PREAMBLE_MENU_FILE
- submenu = WMReadPropListFromFile(SYSCONFDIR "/" GLOBAL_DEFAULTS_SUBDIR "/" GLOBAL_PREAMBLE_MENU_FILE);
+ submenu = WMReadPropListFromFile(DEFSDATADIR "/" GLOBAL_PREAMBLE_MENU_FILE);
if (submenu && !WMIsPLArray(submenu)) {
wwarning(_("invalid global menu file %s"), GLOBAL_PREAMBLE_MENU_FILE);
@@ -943,7 +938,7 @@ void wDefaultsMergeGlobalMenus(WDDomain * menuDomain)
#endif
#ifdef GLOBAL_EPILOGUE_MENU_FILE
- submenu = WMReadPropListFromFile(SYSCONFDIR "/" GLOBAL_DEFAULTS_SUBDIR "/" GLOBAL_EPILOGUE_MENU_FILE);
+ submenu = WMReadPropListFromFile(DEFSDATADIR "/" GLOBAL_EPILOGUE_MENU_FILE);
if (submenu && !WMIsPLArray(submenu)) {
wwarning(_("invalid global menu file %s"), GLOBAL_EPILOGUE_MENU_FILE);
diff --git a/src/main.c b/src/main.c
index d7aee3d..a00d9c7 100644
--- a/src/main.c
+++ b/src/main.c
@@ -59,10 +59,6 @@
#include <WINGs/WUtil.h>
-#ifndef GLOBAL_DEFAULTS_SUBDIR
-#define GLOBAL_DEFAULTS_SUBDIR "WindowMaker"
-#endif
-
/****** Global Variables ******/
struct wmaker_global_variables w_global;
@@ -662,7 +658,7 @@ static int real_main(int argc, char **argv)
printf("Window Maker %s\n", VERSION);
exit(0);
} else if (strcmp(argv[i], "--global_defaults_path") == 0) {
- printf("%s/%s\n", SYSCONFDIR, GLOBAL_DEFAULTS_SUBDIR);
+ printf("%s\n", DEFSDATADIR);
exit(0);
} else if (strcmp(argv[i], "-locale") == 0 || strcmp(argv[i], "--locale") == 0) {
i++;
diff --git a/src/misc.c b/src/misc.c
index 02aa401..502f2b5 100644
--- a/src/misc.c
+++ b/src/misc.c
@@ -1017,7 +1017,7 @@ Bool UpdateDomainFile(WDDomain * domain)
dict = domain->dictionary;
if (WMIsPLDictionary(domain->dictionary)) {
/* retrieve global system dictionary */
- snprintf(path, sizeof(path), "%s/WindowMaker/%s", SYSCONFDIR, domain->domain_name);
+ snprintf(path, sizeof(path), "%s/%s", DEFSDATADIR, domain->domain_name);
if (stat(path, &stbuf) >= 0) {
shared_dict = WMReadPropListFromFile(path);
if (shared_dict) {
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-wmaker/wmaker.git
More information about the Pkg-wmaker-commits
mailing list