about summary refs log tree commit diff
diff options
context:
space:
mode:
authorPeter Stephenson <pws@users.sourceforge.net>2006-11-09 11:04:10 +0000
committerPeter Stephenson <pws@users.sourceforge.net>2006-11-09 11:04:10 +0000
commit7929d97254f84932ab79baf613f3f300ca0a5f84 (patch)
tree1f44eab4f8f8ce8792d3bee7a716878abd6948bb
parent434d55da8b2b52da5c22f918cb182839b4b7222d (diff)
downloadzsh-7929d97254f84932ab79baf613f3f300ca0a5f84.tar.gz
zsh-7929d97254f84932ab79baf613f3f300ca0a5f84.tar.xz
zsh-7929d97254f84932ab79baf613f3f300ca0a5f84.zip
22984: add zshexit hook
-rw-r--r--ChangeLog3
-rw-r--r--Doc/Zsh/func.yo8
-rw-r--r--Src/builtin.c1
3 files changed, 12 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 09849a726..d7f38744b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
 2006-11-09  Peter Stephenson  <pws@csr.com>
 
+	* 22984: Doc/Zsh/func.yo, Src/builtin.c: add zshexit hook
+	to 22978.
+
 	* 22988: arno: Completion/Unix/Command/_make: failed on
 	special variable names, so use local -h.  Probably not a
 	complete fix since the function can run recursivesly for
diff --git a/Doc/Zsh/func.yo b/Doc/Zsh/func.yo
index 5fac56aac..74d031fd1 100644
--- a/Doc/Zsh/func.yo
+++ b/Doc/Zsh/func.yo
@@ -203,6 +203,14 @@ size-limited version of the command (with things like function bodies
 elided); the third argument contains the full text that is being
 executed.
 )
+findex(zshexit)
+vindex(zshexit_functions)
+item(tt(zshexit))(
+Executed at the point where the main shell is about to exit normally.
+This is not called by exiting subshells, nor when the tt(exec)
+precommand modifier is used before an external command.  Also, unlike
+tt(TRAPEXIT), it is not called when functions exit.
+)
 item(tt(TRAP)var(NAL))(
 cindex(signals, trapping)
 cindex(trapping signals)
diff --git a/Src/builtin.c b/Src/builtin.c
index ff40c8b70..70de5bcec 100644
--- a/Src/builtin.c
+++ b/Src/builtin.c
@@ -4436,6 +4436,7 @@ zexit(int val, int from_where)
     }
     if (sigtrapped[SIGEXIT])
 	dotrap(SIGEXIT);
+    callhookfunc("zshexit", NULL, 1);
     runhookdef(EXITHOOK, NULL);
     if (opts[MONITOR] && interact && (SHTTY != -1)) {
        release_pgrp();