diff options
author | fche <fche> | 2007-04-03 18:35:28 +0000 |
---|---|---|
committer | fche <fche> | 2007-04-03 18:35:28 +0000 |
commit | cd7116b8cb3e77cf49cd30cb244f25d7c958e5f6 (patch) | |
tree | 9eebaeec0ff8b9a4d0e4e89a622793efd7f2dc84 /parse.cxx | |
parent | 0cbbf9d1cc127b8671892ca64d9e9202dc8786d0 (diff) | |
download | systemtap-steved-cd7116b8cb3e77cf49cd30cb244f25d7c958e5f6.tar.gz systemtap-steved-cd7116b8cb3e77cf49cd30cb244f25d7c958e5f6.tar.xz systemtap-steved-cd7116b8cb3e77cf49cd30cb244f25d7c958e5f6.zip |
2007-04-03 Frank Ch. Eigler <fche@elastic.org>
Improve error messages for underprivileged scripts.
* parse.h (parse_error): Add skip_some member, true default.
* parse.cxx (parse_embedded_code): Send false on missing -g.
* parse.cxx (parser::parse): Respect flag during parse error
recovery.
Diffstat (limited to 'parse.cxx')
-rw-r--r-- | parse.cxx | 40 |
1 files changed, 21 insertions, 19 deletions
@@ -803,24 +803,25 @@ parser::parse () catch (parse_error& pe) { print_error (pe); - try - { - // Quietly swallow all tokens until the next '}'. - while (1) - { - const token* t = peek (); - if (! t) - break; - next (); - if (t->type == tok_operator && t->content == "}") - break; - } - } - catch (parse_error& pe2) - { - // parse error during recovery ... ugh - print_error (pe2); - } + if (pe.skip_some) // for recovery + try + { + // Quietly swallow all tokens until the next '}'. + while (1) + { + const token* t = peek (); + if (! t) + break; + next (); + if (t->type == tok_operator && t->content == "}") + break; + } + } + catch (parse_error& pe2) + { + // parse error during recovery ... ugh + print_error (pe2); + } } } @@ -927,7 +928,8 @@ parser::parse_embeddedcode () throw parse_error ("expected '%{'"); if (! privileged) - throw parse_error ("embedded code in unprivileged script"); + throw parse_error ("embedded code in unprivileged script", + false /* don't skip tokens for parse resumption */); e->tok = t; e->code = t->content; |