about summary refs log tree commit diff
path: root/Src/init.c
diff options
context:
space:
mode:
authorPeter Stephenson <pws@users.sourceforge.net>2008-08-12 20:25:14 +0000
committerPeter Stephenson <pws@users.sourceforge.net>2008-08-12 20:25:14 +0000
commit01f5d0a2741ed45f3c85493e88daafc2091259a9 (patch)
tree3887eff7596c4da2d3a722216931248078d25ea0 /Src/init.c
parentb2e70921b06eee523071218c8919a27c7f4ce206 (diff)
downloadzsh-01f5d0a2741ed45f3c85493e88daafc2091259a9.tar.gz
zsh-01f5d0a2741ed45f3c85493e88daafc2091259a9.tar.xz
zsh-01f5d0a2741ed45f3c85493e88daafc2091259a9.zip
25443 (tweaked): allow $functrace to show sourced files
Diffstat (limited to 'Src/init.c')
-rw-r--r--Src/init.c23
1 files changed, 12 insertions, 11 deletions
diff --git a/Src/init.c b/Src/init.c
index 2f84fc445..d3c8e2266 100644
--- a/Src/init.c
+++ b/Src/init.c
@@ -1100,16 +1100,17 @@ source(char *s)
     trap_state = TRAP_STATE_INACTIVE;
 
     sourcelevel++;
-    /* { */
-    /*   struct funcstack fstack; */
-    /*   fstack.name = dupstring("source"); */
-    /*   fstack.caller = dupstring(scriptfilename); */
-    /*   fstack.flineno = oldlineno; */
-    /*   fstack.lineno = oldlineno; */
-    /*   fstack.filename = NULL; */
-    /*   fstack.prev = funcstack; */
-    /*   funcstack = &fstack; */
-    /* } */
+    {
+       struct funcstack fstack;
+       fstack.name = dupstring("source");
+       fstack.caller = dupstring(old_scriptfilename ? old_scriptfilename :
+				 "zsh");
+       fstack.flineno = 0;
+       fstack.lineno = oldlineno;
+       fstack.filename = fstack.name;
+       fstack.prev = funcstack;
+       funcstack = &fstack;
+    }
     
     if (prog) {
 	pushheap();
@@ -1118,7 +1119,7 @@ source(char *s)
 	popheap();
     } else
 	loop(0, 0);		     /* loop through the file to be sourced  */
-    /* funcstack = funcstack->prev; */
+    funcstack = funcstack->prev;
     sourcelevel--;
 
     trap_state = otrap_state;