diff options
author | Not Zed <NotZed@Ximian.com> | 2001-01-23 12:34:33 +0800 |
---|---|---|
committer | Michael Zucci <zucchi@src.gnome.org> | 2001-01-23 12:34:33 +0800 |
commit | 73053088aa1a33486a1bfb9637bf37f8bf984a18 (patch) | |
tree | e169496c2a5b23da16804ba2df4e0a2e5af14be9 /e-util/e-sexp.h | |
parent | 96be0c50f7dde84249db1194e69e8b146afc0687 (diff) | |
download | gsoc2013-evolution-73053088aa1a33486a1bfb9637bf37f8bf984a18.tar.gz gsoc2013-evolution-73053088aa1a33486a1bfb9637bf37f8bf984a18.tar.zst gsoc2013-evolution-73053088aa1a33486a1bfb9637bf37f8bf984a18.zip |
Setup error return and return error on parse error. (parse_list): Fail if
2001-01-23 Not Zed <NotZed@Ximian.com>
* e-sexp.c (e_sexp_parse): Setup error return and return error on
parse error.
(parse_list): Fail if we have a problem.
(parse_value): Here too.
(fatal_error): Fatal error handling function, jumps back to the
top caller.
(term_eval_and):
(e_sexp_term_eval):
(term_eval_sub):
(term_eval_plus):
(term_eval_gt):
(term_eval_lt):
(term_eval_or): Fail on error.
(e_sexp_term_eval): Added a comment about where this can be
called, which is only from inside e_sexp_eval().
(e_sexp_eval): Setup setjmp error handler.
(e_sexp_error): Error accessor function.
* e-sexp.h: Added a longjmp environment to the structure, and an
error return to parse.
svn path=/trunk/; revision=7738
Diffstat (limited to 'e-util/e-sexp.h')
-rw-r--r-- | e-util/e-sexp.h | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/e-util/e-sexp.h b/e-util/e-sexp.h index 5cf2740fc1..cfedaea98b 100644 --- a/e-util/e-sexp.h +++ b/e-util/e-sexp.h @@ -5,6 +5,7 @@ #define _E_SEXP_H #include <glib.h> +#include <setjmp.h> #ifdef E_SEXP_IS_GTK_OBJECT #include <gtk/gtk.h> @@ -98,6 +99,10 @@ struct _ESExp { #endif GScanner *scanner; /* for parsing text version */ ESExpTerm *tree; /* root of expression tree */ + + /* private stuff */ + jmp_buf failenv; + char *error; }; struct _ESExpClass { @@ -124,7 +129,7 @@ void e_sexp_input_text (ESExp *f, const char *text, int len); void e_sexp_input_file (ESExp *f, int fd); -void e_sexp_parse (ESExp *f); +int e_sexp_parse (ESExp *f); ESExpResult *e_sexp_eval (ESExp *f); ESExpResult *e_sexp_term_eval (struct _ESExp *f, struct _ESExpTerm *t); @@ -135,4 +140,8 @@ void e_sexp_result_free (struct _ESExpResult *t); void e_sexp_encode_bool(GString *s, gboolean state); void e_sexp_encode_string(GString *s, const char *string); +/* only to be called from inside a callback to signal a fatal execution error */ +void e_sexp_fatal_error(struct _ESExp *f, char *why, ...); +const char *e_sexp_error(struct _ESExp *f); + #endif /* _E_SEXP_H */ |