diff options
-rw-r--r-- | ChangeLog | 7 | ||||
-rwxr-xr-x | Config/installfns.sh | 13 | ||||
-rwxr-xr-x | Config/uninstallfns.sh | 47 | ||||
-rw-r--r-- | Functions/Newuser/zsh-install-newuser | 11 | ||||
-rw-r--r-- | Makefile.in | 2 | ||||
-rw-r--r-- | Scripts/newuser | 6 | ||||
-rw-r--r-- | Src/Modules/newuser.mdd | 5 |
7 files changed, 75 insertions, 16 deletions
diff --git a/ChangeLog b/ChangeLog index 092d87b3b..957135c0f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2005-07-20 Peter Stephenson <pws@csr.com> + + * 21500: Makefile.in, Config/installfns.sh, + Config/uninstallfns.sh, Functions/Newuser/zsh-install-newuser, + Scripts/newuser, Src/Modules/newuser.mdd: Add framework for + function to be edited to provide new user startup files. + 2005-07-20 Clint Adams <clint@zsh.org> * 21499: Doc/Makefile.in: use newer texi2html syntax. diff --git a/Config/installfns.sh b/Config/installfns.sh index 8dc1214b0..83f3cb6c1 100755 --- a/Config/installfns.sh +++ b/Config/installfns.sh @@ -1,6 +1,7 @@ #!/bin/sh fndir=$DESTDIR$fndir +scriptdir=$DESTDIR$scriptdir /bin/sh $sdir_top/mkinstalldirs $fndir || exit 1; @@ -25,13 +26,23 @@ for file in $allfuncs; do Completion/*) instdir="$fndir/Completion" ;; + Scripts/*) + instdir="$scriptdir" + ;; *) subdir="`echo $file | sed -e 's%/[^/]*$%%' -e 's%^Functions/%%'`" instdir="$fndir/$subdir" ;; esac else - instdir="$fndir" + case "$file" in + Scripts/*) + instdir="$scriptdir" + ;; + *) + instdir="$fndir" + ;; + esac fi test -d $instdir || /bin/sh $sdir_top/mkinstalldirs $instdir || exit 1 $INSTALL_DATA $sdir_top/$file $instdir || exit 1 diff --git a/Config/uninstallfns.sh b/Config/uninstallfns.sh index c45c58b09..7c223889c 100755 --- a/Config/uninstallfns.sh +++ b/Config/uninstallfns.sh @@ -1,6 +1,7 @@ #!/bin/sh fndir=$DESTDIR$fndir +scriptdir=$DESTDIR$scriptdir allfuncs="`grep ' functions=' ${dir_top}/config.modules | sed -e '/^#/d' -e '/ link=no/d' -e 's/^.* functions=//'`" @@ -10,10 +11,6 @@ allfuncs="`cd ${sdir_top}; echo ${allfuncs}`" case $fndir in *$VERSION*) # Version specific function directory, safe to remove completely. - # However, we don't remove the top-level version directory since - # it could have other things than functions in it. We could - # do that instead in the top-level Makefile on a full uninstall, - # if we wanted. rm -rf $fndir ;; *) # The following will only apply with a custom install directory @@ -22,15 +19,39 @@ case $fndir in # We now have a list of files, but we need to use `test -f' to check # (1) the glob got expanded (2) we are not looking at directories. for file in $allfuncs; do - if test -f $sdir_top/$file; then - if test x$FUNCTIONS_SUBDIRS != x -a x$FUNCTIONS_SUBDIRS != xno; then - file=`echo $file | sed -e 's%%^Functions/%'` - rm -f $fndir/$file; - else - bfile="`echo $file | sed -e 's%^.*/%%'`" - rm -f "$fndir/$bfile"; \ - fi - fi + case $file in + Scripts/*) + ;; + *) + if test -f $sdir_top/$file; then + if test x$FUNCTIONS_SUBDIRS != x -a x$FUNCTIONS_SUBDIRS != xno; then + file=`echo $file | sed -e 's%%^(Functions|Completion)/%'` + rm -f $fndir/$file + else + bfile="`echo $file | sed -e 's%^.*/%%'`" + rm -f "$fndir/$bfile" + fi + fi + ;; + esac + done + ;; +esac + +case $scriptdir in + *$VERSION*) + # $scriptdir might be the parent of fndir. + rm -rf $scriptdir + ;; + *) for file in $allfuncs; do + case $file in + Scripts/*) + if test -f $sdir_top/$file; then + bfile="`echo $file | sed -e 's%^.*/%%'`" + rm -f "$scriptdir/$bfile" + fi + ;; + esac done ;; esac diff --git a/Functions/Newuser/zsh-install-newuser b/Functions/Newuser/zsh-install-newuser new file mode 100644 index 000000000..40bba720d --- /dev/null +++ b/Functions/Newuser/zsh-install-newuser @@ -0,0 +1,11 @@ +# Function to install startup files for a new user. +# This dummy version simply creates a new .zshrc with a comment. +# FIXME: we don't want to distribute a file that does that, it +# would be preferable to do nothing at all. + +# Sanitize environment. +emulate -L zsh + +echo "# Created by newuser for $ZSH_VERSION" >${ZDOTDIR:-$HOME}/.zshrc + +unfunction zsh-install-newuser diff --git a/Makefile.in b/Makefile.in index 3521afa5e..75f951081 100644 --- a/Makefile.in +++ b/Makefile.in @@ -84,6 +84,7 @@ install.fns: test x$(sitefndir) != xno && \ $(SHELL) $(sdir_top)/mkinstalldirs $(DESTDIR)$(sitefndir); \ sdir_top="$(sdir_top)" fndir="$(fndir)" dir_top="$(dir_top)" \ + scriptdir="$(scriptdir)" \ FUNCTIONS_SUBDIRS="$(FUNCTIONS_SUBDIRS)" \ INSTALL_DATA="$(INSTALL_DATA)" \ DESTDIR="$(DESTDIR)" VERSION="$(VERSION)" \ @@ -94,6 +95,7 @@ install.fns: uninstall.fns: if test x$(fndir) != x && test x$(fndir) != xno; then \ fndir="$(fndir)" dir_top="$(dir_top)" \ + scriptdir="$(scriptdir)" \ FUNCTIONS_SUBDIRS="$(FUNCTIONS_SUBDIRS)" \ DESTDIR="$(DESTDIR)" VERSION="$(VERSION)" \ $(SHELL) $(sdir_top)/Config/uninstallfns.sh || exit 1; \ diff --git a/Scripts/newuser b/Scripts/newuser new file mode 100644 index 000000000..47add8ed1 --- /dev/null +++ b/Scripts/newuser @@ -0,0 +1,6 @@ +# zsh script sourced at startup when a user is found to have +# no startup files. See the documentation for the zsh/newuser +# module in zshmodules(1). + +autoload -U zsh-install-newuser +zsh-install-newuser diff --git a/Src/Modules/newuser.mdd b/Src/Modules/newuser.mdd index 419511dc3..82a08a52e 100644 --- a/Src/Modules/newuser.mdd +++ b/Src/Modules/newuser.mdd @@ -1,8 +1,9 @@ name=zsh/newuser link=dynamic -# We will always try to load newuser, but there is -# no error if it fails. +# We will always try to load newuser, but there should +# be no error if it fails, so don't use the standard mechanism. load=no +functions='Scripts/newuser Functions/Newuser/*' objects="newuser.o" |