summaryrefslogtreecommitdiff
path: root/libsieve/util.c
diff options
context:
space:
mode:
Diffstat (limited to 'libsieve/util.c')
-rw-r--r--libsieve/util.c32
1 files changed, 23 insertions, 9 deletions
diff --git a/libsieve/util.c b/libsieve/util.c
index 2fadeeb55..b8b23a55c 100644
--- a/libsieve/util.c
+++ b/libsieve/util.c
@@ -144,20 +144,31 @@ sieve_value_create (sieve_data_type type, void *data)
break;
default:
- sieve_error ("Invalid data type");
+ sieve_compile_error (sieve_filename, sieve_line_num, "Invalid data type");
abort ();
}
return val;
}
void
-sieve_error (const char *fmt, ...)
+sieve_compile_error (const char *filename, int linenum, const char *fmt, ...)
{
va_list ap;
va_start (ap, fmt);
sieve_error_count++;
- sieve_machine->error_printer (sieve_machine->data, fmt, ap);
+ sieve_machine->parse_error_printer (sieve_machine->data, filename, linenum,
+ fmt, ap);
+ va_end (ap);
+}
+
+void
+sieve_error (sieve_machine_t *mach, const char *fmt, ...)
+{
+ va_list ap;
+
+ va_start (ap, fmt);
+ mach->error_printer (mach->data, fmt, ap);
va_end (ap);
}
@@ -187,6 +198,15 @@ _sieve_default_error_printer (void *unused, const char *fmt, va_list ap)
return mu_verror (fmt, ap);
}
+int
+_sieve_default_parse_error (void *unused, const char *filename, int lineno,
+ const char *fmt, va_list ap)
+{
+ fprintf (stderr, "%s:%d: ", filename, lineno);
+ vfprintf (stderr, fmt, ap);
+ return 0;
+}
+
char *
sieve_type_str (sieve_data_type type)
{
@@ -304,10 +324,4 @@ sieve_print_tag_list (list_t list, sieve_printf_t printer, void *data)
list_do (list, (list_action_t*) tag_printer, &dbg);
}
-void
-sieve_set_debug (sieve_machine_t *mach, sieve_printf_t debug, int level)
-{
- mach->debug_printer = debug;
- mach->debug_level = level;
-}

Return to:

Send suggestions and report system problems to the System administrator.