summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrank Terbeck <bewater@users.sourceforge.net>2011-04-18 20:36:31 +0000
committerFrank Terbeck <bewater@users.sourceforge.net>2011-04-18 20:36:31 +0000
commit32974286d41f0041aa6c26157e1a69e193d3b1fa (patch)
tree9c551b43c30b125b2dad0c5ed72dc654f679bd6f
parent95b83f217d7ec89be0a05437b8dccf96f7d15dd8 (diff)
downloadzsh-32974286d41f0041aa6c26157e1a69e193d3b1fa.tar.gz
zsh-32974286d41f0041aa6c26157e1a69e193d3b1fa.zip
29008, 29012: Add `--enable-additional-fpath' option to add arbitrary directories to the default `$fpath'.
-rw-r--r--ChangeLog8
-rw-r--r--Config/defs.mk.in3
-rw-r--r--INSTALL7
-rw-r--r--Src/init.c21
-rw-r--r--Src/zsh.mdd4
-rw-r--r--configure.ac13
6 files changed, 53 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index e8caf4a6f..cd47dacd8 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2011-04-18 Frank Terbeck <ft@bewatermyfriend.org>
+
+ * 29008, 29012: Config/defs.mk.in, Src/init.c, Src/zsh.mdd,
+ configure.ac, INSTALL: Add `--enable-additional-fpath' option to
+ add arbitrary directories to the default `$fpath'.
+
2011-04-18 Peter Stephenson <pws@csr.com>
* Simon Ruderich: 29004: M Doc/Zsh/compsys.yo,
@@ -14471,5 +14477,5 @@
*****************************************************
* This is used by the shell to define $ZSH_PATCHLEVEL
-* $Revision: 1.5251 $
+* $Revision: 1.5252 $
*****************************************************
diff --git a/Config/defs.mk.in b/Config/defs.mk.in
index cd3afa6c4..58ef11066 100644
--- a/Config/defs.mk.in
+++ b/Config/defs.mk.in
@@ -86,6 +86,9 @@ INSTALL_DATA = @INSTALL_DATA@
# variables used in determining what to install
FUNCTIONS_SUBDIRS = @FUNCTIONS_SUBDIRS@
+# Additional fpath entries (eg. for vendor specific directories).
+additionalfpath = @additionalfpath@
+
# flags passed to recursive makes in subdirectories
MAKEDEFS = \
prefix='$(prefix)' exec_prefix='$(exec_prefix)' bindir='$(bindir)' \
diff --git a/INSTALL b/INSTALL
index 9829ea370..fe03c8de0 100644
--- a/INSTALL
+++ b/INSTALL
@@ -472,6 +472,12 @@ $fpath array on shell startup. This directory will not be affected by
`make uninstall' or `make uninstall.fns', although the version-specific
directory and its contents will be deleted.
+The --enable-additional-fpath option may be used to add arbitrary
+directories to the shell's default $fpath array. This may be useful to
+have vendor specific function directories available for vendor specific
+addons. You may add more than one directory this way by listing them with
+the option separated by commas.
+
Function depth
--------------
@@ -593,6 +599,7 @@ fndir=directory # the directory where shell functions will go
# [DATADIR/zsh/VERSION/functions]
site-fndir=directory # the directory where site-specific functions can go
# [DATADIR/zsh/site-functions]
+additional-path # add directories to default function path [<none>]
function-subdirs # if functions will be installed into subdirectories [no]
dynamic # allow dynamically loaded binary modules [yes]
largefile # allow configure check for large files [yes]
diff --git a/Src/init.c b/Src/init.c
index aa052d834..0fcecef1a 100644
--- a/Src/init.c
+++ b/Src/init.c
@@ -676,11 +676,15 @@ setupvals(void)
struct timezone dummy_tz;
char *ptr;
int i, j;
-#if defined(SITEFPATH_DIR) || defined(FPATH_DIR)
+#if defined(SITEFPATH_DIR) || defined(FPATH_DIR) || defined (ADDITIONAL_FPATH)
char **fpathptr;
# if defined(FPATH_DIR) && defined(FPATH_SUBDIRS)
char *fpath_subdirs[] = FPATH_SUBDIRS;
# endif
+# if defined(ADDITIONAL_FPATH)
+ char *more_fndirs[] = ADDITIONAL_FPATH;
+ int more_fndirs_len;
+# endif
# ifdef SITEFPATH_DIR
int fpathlen = 1;
# else
@@ -764,7 +768,7 @@ setupvals(void)
manpath = mkarray(NULL);
fignore = mkarray(NULL);
-#if defined(SITEFPATH_DIR) || defined(FPATH_DIR)
+#if defined(SITEFPATH_DIR) || defined(FPATH_DIR) || defined(ADDITIONAL_FPATH)
# ifdef FPATH_DIR
# ifdef FPATH_SUBDIRS
fpathlen += sizeof(fpath_subdirs)/sizeof(char *);
@@ -772,15 +776,28 @@ setupvals(void)
fpathlen++;
# endif
# endif
+# if defined(ADDITIONAL_FPATH)
+ more_fndirs_len = sizeof(more_fndirs)/sizeof(char *);
+ fpathlen += more_fndirs_len;
+# endif
fpath = fpathptr = (char **)zalloc((fpathlen+1)*sizeof(char *));
# ifdef SITEFPATH_DIR
*fpathptr++ = ztrdup(SITEFPATH_DIR);
fpathlen--;
# endif
+# if defined(ADDITIONAL_FPATH)
+ for (j = 0; j < more_fndirs_len; j++)
+ *fpathptr++ = ztrdup(more_fndirs[j]);
+# endif
# ifdef FPATH_DIR
# ifdef FPATH_SUBDIRS
+# ifdef ADDITIONAL_FPATH
+ for (j = more_fndirs_len; j < fpathlen; j++)
+ *fpathptr++ = tricat(FPATH_DIR, "/", fpath_subdirs[j - more_fndirs_len]);
+# else
for (j = 0; j < fpathlen; j++)
*fpathptr++ = tricat(FPATH_DIR, "/", fpath_subdirs[j]);
+#endif
# else
*fpathptr++ = ztrdup(FPATH_DIR);
# endif
diff --git a/Src/zsh.mdd b/Src/zsh.mdd
index 537aa4d8e..9f19b45da 100644
--- a/Src/zsh.mdd
+++ b/Src/zsh.mdd
@@ -86,6 +86,10 @@ zshpaths.h: Makemod $(CONFIG_INCS)
>>zshpaths.h.tmp; \
fi; \
fi
+ @if test x$(additionalfpath) != x; then \
+ fpath_tmp="`echo $(additionalfpath) | sed -e 's:,:\", \":g'`"; \
+ echo "#define ADDITIONAL_FPATH { \"$$fpath_tmp\" }" >> zshpaths.h.tmp; \
+ fi
@if cmp -s zshpaths.h zshpaths.h.tmp; then \
rm -f zshpaths.h.tmp; \
echo "\`zshpaths.h' is up to date." ; \
diff --git a/configure.ac b/configure.ac
index fca1dd6a2..116de2e4f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -276,6 +276,16 @@ else
FUNCTIONS_SUBDIRS=no
fi
+ifdef([additionalfpath],[undefine([additionalfpath])])dnl
+AC_ARG_ENABLE(additional-fpath,
+AC_HELP_STRING([--enable-additional-fpath=DIR], [add directories to default function path]),
+[if test x$enableval = xyes; then
+ additionalfpath=""
+else
+ additionalfpath="${enableval}"
+fi], [additionalfpath=""])
+
+AC_SUBST(additionalfpath)dnl
AC_SUBST(fndir)dnl
AC_SUBST(sitefndir)dnl
AC_SUBST(FUNCTIONS_SUBDIRS)dnl
@@ -3088,6 +3098,9 @@ info install path : ${zshinfo}"
if test "$zshfndir" != no; then
echo "functions install path : ${zshfndir}"
fi
+if test "x$additionalfpath" != x; then
+ echo "additional fpath entries : ${additionalfpath}"
+fi
echo "See config.modules for installed modules and functions.
"