aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/mailfromd.texi2
-rw-r--r--src/drivers.c152
-rw-r--r--src/gram.y4
-rw-r--r--src/main.c2
-rw-r--r--src/prog.c6
-rw-r--r--src/prog.h8
6 files changed, 89 insertions, 85 deletions
diff --git a/doc/mailfromd.texi b/doc/mailfromd.texi
index 4d5dc101..07b5ec8b 100644
--- a/doc/mailfromd.texi
+++ b/doc/mailfromd.texi
@@ -8998,7 +8998,7 @@ configuration directory set when building @command{mailfromd}
8998(@pxref{Building}).} If it does, the program attempts to retrieve 8998(@pxref{Building}).} If it does, the program attempts to retrieve
8999its configuration settings from that file. 8999its configuration settings from that file.
9000 9000
9001 The @file{mailfromd.conf} must have the @dfn{GNU mailutils 9001 The @file{mailfromd.conf} file must be written in the @dfn{GNU mailutils
9002configuration format}, as described in @ref{conf-syntax, Configuration 9002configuration format}, as described in @ref{conf-syntax, Configuration
9003File Syntax,, mailutils, GNU Mailutils Manual}. This format can be 9003File Syntax,, mailutils, GNU Mailutils Manual}. This format can be
9004summarized as follows: 9004summarized as follows:
diff --git a/src/drivers.c b/src/drivers.c
index 0ef1de57..721764e3 100644
--- a/src/drivers.c
+++ b/src/drivers.c
@@ -19,8 +19,8 @@
19 struct literal *lit = literal_lookup(node->locus.file); \ 19 struct literal *lit = literal_lookup(node->locus.file); \
20 *old_locus = &node->locus; \ 20 *old_locus = &node->locus; \
21 code_op(opcode_locus); \ 21 code_op(opcode_locus); \
22 code_immediate((STKVAL)lit->off); \ 22 code_immediate(lit->off, ulong); \
23 code_immediate((STKVAL)node->locus.line); \ 23 code_immediate(node->locus.line, str); \
24 } while (0) 24 } while (0)
25 25
26static void code_trycatch_exit(unsigned id); 26static void code_trycatch_exit(unsigned id);
@@ -34,19 +34,19 @@ code_memref(NODE *node)
34 switch (node->v.var_ref.variable->storage_class) { 34 switch (node->v.var_ref.variable->storage_class) {
35 case storage_extern: 35 case storage_extern:
36 code_op(opcode_push); 36 code_op(opcode_push);
37 code_immediate((STKVAL)node->v.var_ref.variable->off); 37 code_immediate(node->v.var_ref.variable->off, long);
38 break; 38 break;
39 39
40 case storage_auto: 40 case storage_auto:
41 code_op(opcode_memstk); 41 code_op(opcode_memstk);
42 code_immediate((STKVAL)node->v.var_ref.nframes); 42 code_immediate(node->v.var_ref.nframes, size);
43 code_immediate((STKVAL)(-node->v.var_ref.variable->off)); 43 code_immediate((-node->v.var_ref.variable->off), long);
44 break; 44 break;
45 45
46 case storage_param: 46 case storage_param:
47 code_op(opcode_memstk); 47 code_op(opcode_memstk);
48 code_immediate((STKVAL)node->v.var_ref.nframes); 48 code_immediate(node->v.var_ref.nframes, size);
49 code_immediate((STKVAL)(node->v.var_ref.variable->off + 2)); 49 code_immediate((node->v.var_ref.variable->off + 2), long);
50 break; 50 break;
51 } 51 }
52} 52}
@@ -78,7 +78,7 @@ code_type_string(NODE *node, struct locus **old_locus)
78{ 78{
79 MARK_LOCUS(); 79 MARK_LOCUS();
80 code_op(opcode_push); 80 code_op(opcode_push);
81 code_immediate((STKVAL)node->v.literal->off); 81 code_immediate(node->v.literal->off, size);
82} 82}
83 83
84 84
@@ -96,7 +96,7 @@ code_type_symbol(NODE *node, struct locus **old_locus)
96{ 96{
97 MARK_LOCUS(); 97 MARK_LOCUS();
98 code_op(opcode_symbol); 98 code_op(opcode_symbol);
99 code_immediate((STKVAL)node->v.literal->off); 99 code_immediate(node->v.literal->off, size);
100} 100}
101 101
102void 102void
@@ -119,7 +119,7 @@ code_type_number(NODE *node, struct locus **old_locus)
119{ 119{
120 MARK_LOCUS(); 120 MARK_LOCUS();
121 code_op(opcode_push); 121 code_op(opcode_push);
122 code_immediate((STKVAL)node->v.number); 122 code_immediate(node->v.number, long);
123} 123}
124 124
125 125
@@ -205,17 +205,17 @@ code_type_if(NODE *node, struct locus **old_locus)
205 code_node(node->v.cond.cond); 205 code_node(node->v.cond.cond);
206 MARK_LOCUS(); 206 MARK_LOCUS();
207 code_op(opcode_bz); 207 code_op(opcode_bz);
208 pos1 = code_immediate((STKVAL)NULL); 208 pos1 = code_immediate(NULL, ptr);
209 traverse_tree(node->v.cond.if_true); 209 traverse_tree(node->v.cond.if_true);
210 if (node->v.cond.if_false) { 210 if (node->v.cond.if_false) {
211 code_op(opcode_jmp); 211 code_op(opcode_jmp);
212 pos2 = code_immediate((STKVAL)NULL); 212 pos2 = code_immediate(NULL, ptr);
213 traverse_tree(node->v.cond.if_false); 213 traverse_tree(node->v.cond.if_false);
214 endpos = code_get_counter (); 214 endpos = code_get_counter ();
215 code_put(pos1, (STKVAL)(pos2 - pos1)); 215 code_put(pos1, (pos2 - pos1), long);
216 code_put(pos2, (STKVAL)(endpos - pos2 - 1)); 216 code_put(pos2, (endpos - pos2 - 1), long);
217 } else 217 } else
218 code_put(pos1, (STKVAL)(code_get_counter () - pos1 - 1)); 218 code_put(pos1, (code_get_counter () - pos1 - 1), long);
219} 219}
220 220
221 221
@@ -785,17 +785,17 @@ code_type_bin(NODE *node, struct locus **old_locus)
785 Y: push 1 785 Y: push 1
786 Z: */ 786 Z: */
787 code_op(opcode_bz); 787 code_op(opcode_bz);
788 pos1 = code_immediate((STKVAL)NULL); 788 pos1 = code_immediate(NULL, ptr);
789 code_node(node->v.bin.arg[1]); 789 code_node(node->v.bin.arg[1]);
790 code_op(opcode_bnz); 790 code_op(opcode_bnz);
791 pos2 = code_immediate((STKVAL)4); 791 pos2 = code_immediate(4, long);
792 code_op(opcode_push); 792 code_op(opcode_push);
793 code_immediate((STKVAL)0); 793 code_immediate(0, long);
794 code_op(opcode_jmp); 794 code_op(opcode_jmp);
795 code_immediate((STKVAL)2); 795 code_immediate(2, long);
796 code_op(opcode_push); 796 code_op(opcode_push);
797 code_immediate((STKVAL)1); 797 code_immediate(1, long);
798 code_put(pos1, (STKVAL)(pos2 - pos1)); 798 code_put(pos1, (pos2 - pos1), long);
799 break; 799 break;
800 800
801 case bin_or: 801 case bin_or:
@@ -810,17 +810,17 @@ code_type_bin(NODE *node, struct locus **old_locus)
810 Z: */ 810 Z: */
811 811
812 code_op(opcode_bnz); 812 code_op(opcode_bnz);
813 pos1 = code_immediate((STKVAL)NULL); 813 pos1 = code_immediate(NULL, ptr);
814 code_node(node->v.bin.arg[1]); 814 code_node(node->v.bin.arg[1]);
815 code_op(opcode_bz); 815 code_op(opcode_bz);
816 pos2 = code_immediate((STKVAL)4); 816 pos2 = code_immediate(4, long);
817 code_op(opcode_push); 817 code_op(opcode_push);
818 code_immediate((STKVAL)1); 818 code_immediate(1, long);
819 code_op(opcode_jmp); 819 code_op(opcode_jmp);
820 code_immediate((STKVAL)2); 820 code_immediate(2, long);
821 code_op(opcode_push); 821 code_op(opcode_push);
822 code_immediate((STKVAL)0); 822 code_immediate(0, long);
823 code_put(pos1, (STKVAL)(pos2 - pos1)); 823 code_put(pos1, (pos2 - pos1), long);
824 break; 824 break;
825 825
826 case bin_eq: 826 case bin_eq:
@@ -1062,7 +1062,7 @@ code_result_arg(NODE *node)
1062 code_node(node); 1062 code_node(node);
1063 else { 1063 else {
1064 code_op(opcode_push); 1064 code_op(opcode_push);
1065 code_immediate((STKVAL)NULL); 1065 code_immediate(NULL, ptr);
1066 } 1066 }
1067} 1067}
1068 1068
@@ -1115,7 +1115,7 @@ code_type_result(NODE *node, struct locus **old_locus)
1115 1115
1116 MARK_LOCUS(); 1116 MARK_LOCUS();
1117 code_op(opcode_result); 1117 code_op(opcode_result);
1118 code_immediate((STKVAL)(mft_int)node->v.ret.stat); 1118 code_immediate(node->v.ret.stat, int);
1119 code_op(opcode_nil); 1119 code_op(opcode_nil);
1120} 1120}
1121 1121
@@ -1152,11 +1152,11 @@ code_type_header(NODE *node, struct locus **old_locus)
1152 code_node(node->v.hdr.value); 1152 code_node(node->v.hdr.value);
1153 else { 1153 else {
1154 code_op(opcode_push); 1154 code_op(opcode_push);
1155 code_immediate((STKVAL)0); 1155 code_immediate(0, size);
1156 } 1156 }
1157 code_op(opcode_header); 1157 code_op(opcode_header);
1158 code_immediate((STKVAL)(mft_int)node->v.hdr.opcode); 1158 code_immediate(node->v.hdr.opcode, int);
1159 code_immediate((STKVAL)node->v.hdr.name->off); 1159 code_immediate(node->v.hdr.name->off, size);
1160} 1160}
1161 1161
1162 1162
@@ -1224,14 +1224,14 @@ code_type_builtin(NODE *node, struct locus **old_locus)
1224 if (bp->optcount || (bp->flags & MFD_BUILTIN_VARIADIC)) { 1224 if (bp->optcount || (bp->flags & MFD_BUILTIN_VARIADIC)) {
1225 /* Pass the number of actual arguments in a hidden arg */ 1225 /* Pass the number of actual arguments in a hidden arg */
1226 code_op(opcode_push); 1226 code_op(opcode_push);
1227 code_immediate((STKVAL)i); 1227 code_immediate(i, size);
1228 } 1228 }
1229 1229
1230