Commit 91a738a8 91a738a8004bc21ea884eef4c7657b49b26de289 by Sergey Poznyakoff

(sieve_op_t.line): New member

1 parent 8d06ba0d
...@@ -32,11 +32,13 @@ typedef union { ...@@ -32,11 +32,13 @@ typedef union {
32 long number; 32 long number;
33 char *string; 33 char *string;
34 size_t pc; 34 size_t pc;
35 size_t line;
35 } sieve_op_t; 36 } sieve_op_t;
36 37
37 struct sieve_machine { 38 struct sieve_machine {
38 /* Static data */ 39 /* Static data */
39 char *filename; /* Name of the source script */ 40 sieve_locus_t locus; /* Approximate location in the code */
41
40 list_t memory_pool; /* Pool of allocated memory objects */ 42 list_t memory_pool; /* Pool of allocated memory objects */
41 list_t destr_list; /* List of destructor functions */ 43 list_t destr_list; /* List of destructor functions */
42 44
...@@ -44,6 +46,7 @@ struct sieve_machine { ...@@ -44,6 +46,7 @@ struct sieve_machine {
44 list_t test_list; /* Tests */ 46 list_t test_list; /* Tests */
45 list_t action_list; /* Actions */ 47 list_t action_list; /* Actions */
46 list_t comp_list; /* Comparators */ 48 list_t comp_list; /* Comparators */
49 list_t source_list; /* Source names (for diagnostics) */
47 50
48 size_t progsize; /* Number of allocated program cells */ 51 size_t progsize; /* Number of allocated program cells */
49 sieve_op_t *prog; /* Compiled program */ 52 sieve_op_t *prog; /* Compiled program */
...@@ -113,8 +116,10 @@ int sieve_code_list __P((list_t list)); ...@@ -113,8 +116,10 @@ int sieve_code_list __P((list_t list));
113 int sieve_code_number __P((long num)); 116 int sieve_code_number __P((long num));
114 int sieve_code_test __P((sieve_register_t *reg, list_t arglist)); 117 int sieve_code_test __P((sieve_register_t *reg, list_t arglist));
115 int sieve_code_action __P((sieve_register_t *reg, list_t arglist)); 118 int sieve_code_action __P((sieve_register_t *reg, list_t arglist));
116 void sieve_code_anyof (size_t start); 119 void sieve_code_anyof __P((size_t start));
117 void sieve_code_allof (size_t start); 120 void sieve_code_allof __P((size_t start));
121 int sieve_code_source __P((const char *name));
122 int sieve_code_line __P((size_t line));
118 123
119 void instr_action __P((sieve_machine_t mach)); 124 void instr_action __P((sieve_machine_t mach));
120 void instr_test __P((sieve_machine_t mach)); 125 void instr_test __P((sieve_machine_t mach));
...@@ -125,6 +130,8 @@ void instr_branch __P((sieve_machine_t mach)); ...@@ -125,6 +130,8 @@ void instr_branch __P((sieve_machine_t mach));
125 void instr_brz __P((sieve_machine_t mach)); 130 void instr_brz __P((sieve_machine_t mach));
126 void instr_brnz __P((sieve_machine_t mach)); 131 void instr_brnz __P((sieve_machine_t mach));
127 void instr_nop __P((sieve_machine_t mach)); 132 void instr_nop __P((sieve_machine_t mach));
133 void instr_source __P((sieve_machine_t mach));
134 void instr_line __P((sieve_machine_t mach));
128 135
129 int sieve_mark_deleted __P((message_t msg, int deleted)); 136 int sieve_mark_deleted __P((message_t msg, int deleted));
130 137
......