summary refs log tree commit diff
path: root/src/var.h
diff options
context:
space:
mode:
authorHarald van Dijk <harald@gigawatt.nl>2011-03-15 15:52:05 +0800
committerHerbert Xu <herbert@gondor.apana.org.au>2011-03-15 15:52:05 +0800
commit5bb39bb1995cb12d8da76b1d482df9be1acc2eb4 (patch)
tree09c088a97971babd2e0dd593d7601e282ed5fc69 /src/var.h
parent[EVAL] Let funcnode refer to a function definition, not its first command (diff)
downloaddash-5bb39bb1995cb12d8da76b1d482df9be1acc2eb4.tar.gz
dash-5bb39bb1995cb12d8da76b1d482df9be1acc2eb4.zip
[SHELL] Improve LINENO support
This patch improves LINENO support by storing line numbers in the parse
tree, for commands as well as for function definitions. It makes LINENO
behaves properly when calling functions, and has the added benefit of
improved line numbers in error messages when the last-parsed command is
not the last-executed one. It removes the earlier LINENO support, and
instead sets LINENO from evaltree when a command is executed

Signed-off-by: Harald van Dijk <harald@gigawatt.nl>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'src/var.h')
-rw-r--r--src/var.h7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/var.h b/src/var.h
index 35dd099..54f7b2d 100644
--- a/src/var.h
+++ b/src/var.h
@@ -88,8 +88,9 @@ extern struct var varinit[];
 #define vps2 (&vps1)[1]
 #define vps4 (&vps2)[1]
 #define voptind (&vps4)[1]
+#define vlineno (&voptind)[1]
 #ifndef SMALL
-#define vterm (&voptind)[1]
+#define vterm (&vlineno)[1]
 #define vhistsize (&vterm)[1]
 #endif
 
@@ -102,6 +103,9 @@ extern const char defifs[];
 extern const char defpathvar[];
 #define defpath (defpathvar + 5)
 
+extern int lineno;
+extern char linenovar[];
+
 /*
  * The following macros access the values of the above variables.
  * They have to skip over the name.  They return the null string
@@ -117,6 +121,7 @@ extern const char defpathvar[];
 #define ps2val()	(vps2.text + 4)
 #define ps4val()	(vps4.text + 4)
 #define optindval()	(voptind.text + 7)
+#define linenoval()	(vlineno.text + 7)
 #ifndef SMALL
 #define histsizeval()	(vhistsize.text + 9)
 #define termval()	(vterm.text + 5)