/[mailutils]/mailutils/libsieve/prog.c
ViewVC logotype

Diff of /mailutils/libsieve/prog.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.1 by gray, Tue Nov 12 16:26:31 2002 UTC revision 1.2 by gray, Wed Nov 13 13:35:00 2002 UTC
# Line 35  sieve_code (sieve_op_t *op) Line 35  sieve_code (sieve_op_t *op)
35                                              sizeof sieve_machine->prog[0]);                                              sizeof sieve_machine->prog[0]);
36        if (!newprog)        if (!newprog)
37          {          {
38            sieve_error ("%s:%d: out of memory!",            sieve_compile_error (sieve_filename, sieve_line_num,
39                         sieve_filename, sieve_line_num);                                 "out of memory!");
40            return 1;            return 1;
41          }          }
42        sieve_machine->prog = newprog;        sieve_machine->prog = newprog;
# Line 124  sieve_code_command (sieve_register_t *re Line 124  sieve_code_command (sieve_register_t *re
124    
125        if (rc)        if (rc)
126          {          {
127            sieve_error ("%s:%d: can't create iterator: %s",            sieve_compile_error (sieve_filename, sieve_line_num,
128                         sieve_filename, sieve_line_num,                                 "can't create iterator: %s",
129                         mu_errstring (rc));                                 mu_errstring (rc));
130            return 1;            return 1;
131          }          }
132        
# Line 142  sieve_code_command (sieve_register_t *re Line 142  sieve_code_command (sieve_register_t *re
142                sieve_tag_def_t *tag = find_tag (reg->tags, val->v.string);                sieve_tag_def_t *tag = find_tag (reg->tags, val->v.string);
143                if (!tag)                if (!tag)
144                  {                  {
145                    sieve_error ("%s:%d: invalid tag name `%s' for `%s'",                    sieve_compile_error (sieve_filename, sieve_line_num,
146                                 sieve_filename, sieve_line_num,                                 "invalid tag name `%s' for `%s'",
147                                 val->v.string, reg->name);                                 val->v.string, reg->name);
148                    err = 1;                    err = 1;
149                    break;                    break;
# Line 151  sieve_code_command (sieve_register_t *re Line 151  sieve_code_command (sieve_register_t *re
151                                
152                if (!tag_list && (rc = list_create (&tag_list)))                if (!tag_list && (rc = list_create (&tag_list)))
153                  {                  {
154                    sieve_error ("%s:%d: can't create tag list: %s",                    sieve_compile_error (sieve_filename, sieve_line_num,
155                                 sieve_filename, sieve_line_num,                                         "%s:%d: can't create tag list: %s",
156                                 mu_errstring (rc));                                         mu_errstring (rc));
157                    err = 1;                    err = 1;
158                    break;                    break;
159                  }                  }
# Line 174  sieve_code_command (sieve_register_t *re Line 174  sieve_code_command (sieve_register_t *re
174              }              }
175            else if (*exp_arg == SVT_VOID)            else if (*exp_arg == SVT_VOID)
176              {              {
177                sieve_error ("%s:%d: too many arguments in call to `%s'",                sieve_compile_error (sieve_filename, sieve_line_num,
178                             sieve_filename, sieve_line_num,                                     "too many arguments in call to `%s'",
179                             reg->name);                                     reg->name);
               err = 1;  
               break;  
             }  
           else if (*exp_arg != val->type)  
             {  
               sieve_error ("%s:%d: type mismatch in argument %d to `%s'",  
                            sieve_filename, sieve_line_num,  
                            exp_arg - reg->req_args + 1,  
                            reg->name);  
180                err = 1;                err = 1;
181                break;                break;
182              }              }
183            else            else
184              {              {
185                  if (*exp_arg != val->type)
186                    {
187                      if (*exp_arg == SVT_STRING_LIST && val->type == SVT_STRING)
188                        {
189                          list_t list;
190    
191                          list_create (&list);
192                          list_append (list, val->v.string);
193                          sieve_pfree (&sieve_machine->memory_pool, val);
194                          val = sieve_value_create (SVT_STRING_LIST, list);
195                        }
196                      else
197                        {
198                          sieve_compile_error (sieve_filename, sieve_line_num,
199                                          "type mismatch in argument %d to `%s'",
200                                          exp_arg - reg->req_args + 1,
201                                          reg->name);
202                          sieve_compile_error (sieve_filename, sieve_line_num,
203                                          "Expected %s but passed %s",
204                                          sieve_type_str (*exp_arg),
205                                          sieve_type_str (val->type));
206                          err = 1;
207                          break;
208                        }
209                    }
210    
211                if (!arg_list && (rc = list_create (&arg_list)))                if (!arg_list && (rc = list_create (&arg_list)))
212                  {                  {
213                    sieve_error ("%s:%d: can't create arg list: %s",                    sieve_compile_error (sieve_filename, sieve_line_num,
214                                 sieve_filename, sieve_line_num,                                         "can't create arg list: %s",
215                                 mu_errstring (rc));                                         mu_errstring (rc));
216                    err = 1;                    err = 1;
217                    break;                    break;
218                  }                  }
# Line 211  sieve_code_command (sieve_register_t *re Line 228  sieve_code_command (sieve_register_t *re
228      {      {
229        if (*exp_arg != SVT_VOID)        if (*exp_arg != SVT_VOID)
230          {          {
231            sieve_error ("%s:%d: too few arguments in call to `%s'",            sieve_compile_error (sieve_filename, sieve_line_num,
232                             sieve_filename, sieve_line_num,                                 "too few arguments in call to `%s'",
233                             reg->name);                                 reg->name);
234            err = 1;            err = 1;
235          }          }
236      }      }

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.2

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26