_autoenv_stack_entered_mtime[$env_file]=$(_autoenv_get_file_mtime $env_file)
}
-_autoenv_get_file_mtime() {
- if [[ -f $1 ]]; then
- zstat +mtime $1
- else
- echo 0
- fi
-}
+
+# zstat_mime helper, conditionally defined.
+# Load zstat module, but only its builtin `zstat`.
+if ! zmodload -F zsh/stat b:zstat 2>/dev/null; then
+ # If the module is not available, define a wrapper around `stat`, and use its
+ # terse output instead of format, which is not supported by busybox.
+ # Assume '+mtime' as $1.
+ _autoenv_get_file_mtime() {
+ setopt localoptions pipefail
+ stat -t $1 2>/dev/null | cut -f13 -d ' ' || echo 0
+ }
+else
+ _autoenv_get_file_mtime() {
+ zstat +mtime $1 2>/dev/null || echo 0
+ }
+fi
+
# Remove an entry from the stack.
_autoenv_stack_entered_remove() {
}
# }}}
-# Load zstat module, but only its builtin `zstat`.
-if ! zmodload -F zsh/stat b:zstat 2>/dev/null; then
- # If the module is not available, define a wrapper around `stat`, and use its
- # terse output instead of format, which is not supported by busybox.
- # Assume '+mtime' as $1.
- zstat() {
- stat -t $2 | cut -f13 -d ' '
- }
-fi
-
# Generate hash pair for a given file ($1).
# A fixed hash value can be given as 2nd arg, but is used with tests only.
$ mkdir -p sub/sub2
$ touch -t 201401010101 sub/file
+ $ touch -t 201401010102 sub
+ $ touch -t 201401010103 sub/sub2
$ _autoenv_stack_entered_add sub
$ _autoenv_stack_entered_add sub/file
$ _autoenv_stack_entered_add sub/sub2
sub sub/file sub/sub2 non-existing
$ echo $_autoenv_stack_entered_mtime
- 0 1388538060 0 0 (glob)
+ 1388538180 1388538060 1388538120 0
Touch the file and re-add it.
:/tmp/cramtests-*/_autoenv_utils.t/second:7bee8f3b184e1e141ff76efe369c3b8bfc50e64c:1 (glob)
:/tmp/cramtests-*/_autoenv_utils.t/first:65eb010197b73ddc109b7210080f97a87f53451e:1 (glob)
}}}
+
+
+Explicit calls to _autoenv_get_file_mtime to test alternative implementation
+of _autoenv_get_file_mtime (via ZDOTDIR.invalid-module_path/).
+
+ $ _autoenv_get_file_mtime non-existing
+ 0
+ $ touch -t 201401010101 file
+ $ _autoenv_get_file_mtime file
+ 1388538060
+ $ mkdir dir
+ $ touch -t 201401010102 dir
+ $ _autoenv_get_file_mtime dir
+ 1388538120