about summary refs log tree commit diff
diff options
context:
space:
mode:
authorFelix Rosencrantz <f_rosencrantz@users.sourceforge.net>2002-10-09 20:38:24 +0000
committerFelix Rosencrantz <f_rosencrantz@users.sourceforge.net>2002-10-09 20:38:24 +0000
commit114d799efd1463eb1d46c0ee33c5e45948fa9e7d (patch)
tree455193fc28eac7441b132fdf5136416f8e77dabf
parentae8f4db3857a317a2cc2ff1c7533b7e911ec3221 (diff)
downloadzsh-114d799efd1463eb1d46c0ee33c5e45948fa9e7d.tar.gz
zsh-114d799efd1463eb1d46c0ee33c5e45948fa9e7d.tar.xz
zsh-114d799efd1463eb1d46c0ee33c5e45948fa9e7d.zip
Changes to _store_cache to allow cache names to contain slashes "/".
-rw-r--r--ChangeLog5
-rw-r--r--Completion/Base/Utility/_store_cache19
2 files changed, 22 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 80e21405c..2dcf66f34 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2002-10-09  Felix Rosencrantz <f_rosencrantz@yahoo.com>
+
+	* 17793: Completion/Base/Utility/_store_cache: Allow / in cache
+	names.
+
 2002-10-07  Peter Stephenson  <pws@csr.com>
 
 	* 17482 (Karl Tomlinson): Src/Modules/termcap.c,
diff --git a/Completion/Base/Utility/_store_cache b/Completion/Base/Utility/_store_cache
index 962c4f381..cb6e8d3b1 100644
--- a/Completion/Base/Utility/_store_cache
+++ b/Completion/Base/Utility/_store_cache
@@ -2,7 +2,7 @@
 #
 # Storage component of completions caching layer
 
-local _cache_ident
+local _cache_ident _cache_ident_dir
 _cache_ident="$1"
 
 if zstyle -t ":completion:${curcontext}:" use-cache; then
@@ -13,13 +13,28 @@ if zstyle -t ":completion:${curcontext}:" use-cache; then
     if [[ -e "$_cache_dir" ]]; then
       _message "cache-dir style points to a non-directory\!"
     else
-      mkdir -p "$_cache_dir"
+      (zmodload zsh/files 2>/dev/null; mkdir -p "$_cache_dir" )
       if [[ ! -d "$_cache_dir" ]]; then
         _message "couldn't create cache-dir $_cache_dir"
         return 1
       fi
     fi
   fi
+  _cache_ident_dir="$_cache_dir/$_cache_ident"
+  _cache_ident_dir="$_cache_ident_dir:h"
+  
+  if [[ ! -d "$_cache_ident_dir" ]]; then
+    if [[ -e "$_cache_ident_dir" ]]; then
+      _message "cache ident dir points to a non-directory:$_cache_ident_dir"
+    else
+      (zmodload zsh/files 2>/dev/null; mkdir -p "$_cache_ident_dir")
+      if [[ ! -d "$_cache_ident_dir" ]]; then
+        _message "couldn't create cache-ident_dir $_cache_ident_dir"
+        return 1
+      fi
+    fi
+  fi
+  
 
   shift
   for var; do