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

Diff of /mailutils/libsieve/util.c

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

revision 1.12 by polak, Wed Dec 25 22:31:44 2002 UTC revision 1.13 by gray, Mon Jan 6 09:38:04 2003 UTC
# Line 403  sieve_tag_lookup (list_t taglist, char * Line 403  sieve_tag_lookup (list_t taglist, char *
403    sieve_runtime_tag_t t;    sieve_runtime_tag_t t;
404    
405    t.tag = name;    t.tag = name;
406    if (list_do (taglist, tag_finder, &t))    if (taglist && list_do (taglist, tag_finder, &t))
407      {      {
408        if (arg)        if (arg)
409          *arg = t.arg;          *arg = t.arg;
# Line 448  sieve_vlist_do (sieve_value_t *val, list Line 448  sieve_vlist_do (sieve_value_t *val, list
448  struct comp_data {  struct comp_data {
449    sieve_value_t *val;    sieve_value_t *val;
450    sieve_comparator_t comp;    sieve_comparator_t comp;
451      sieve_relcmp_t test;
452    sieve_retrieve_t retr;    sieve_retrieve_t retr;
453    void *data;    void *data;
454      size_t count;
455  };  };
456    
457  struct comp_data2 {  struct comp_data2 {
458    char *sample;    char *sample;
459    sieve_comparator_t comp;    sieve_comparator_t comp;
460      sieve_relcmp_t test;
461  };  };
462    
463  int  int
464  _comp_action2 (void *item, void *data)  _comp_action2 (void *item, void *data)
465  {  {
466    struct comp_data2 *cp = data;    struct comp_data2 *cp = data;
467    return cp->comp (item, cp->sample);    return cp->test (cp->comp (item, cp->sample), 0);
468  }  }
469    
470  int  int
# Line 473  _comp_action (void *item, void *data) Line 476  _comp_action (void *item, void *data)
476    int i;    int i;
477    
478    d.comp = cp->comp;    d.comp = cp->comp;
479      d.test = cp->test;
480    for (i = 0; cp->retr (item, cp->data, i, &d.sample) == 0; i++)    for (i = 0; cp->retr (item, cp->data, i, &d.sample) == 0; i++)
481      if (d.sample)      if (d.sample)
482        {            {
483            cp->count++;
484          rc = sieve_vlist_do (cp->val, _comp_action2, &d);          rc = sieve_vlist_do (cp->val, _comp_action2, &d);
485          free (d.sample);          free (d.sample);
486        }        }
# Line 484  _comp_action (void *item, void *data) Line 489  _comp_action (void *item, void *data)
489    
490  int  int
491  sieve_vlist_compare (sieve_value_t *a, sieve_value_t *b,  sieve_vlist_compare (sieve_value_t *a, sieve_value_t *b,
492                       sieve_comparator_t comp, sieve_retrieve_t retr,                       sieve_comparator_t comp, sieve_relcmp_t test,
493                       void *data)                       sieve_retrieve_t retr,
494                         void *data, size_t *count)
495  {  {
496    struct comp_data d;    struct comp_data d;
497      int rc;
498      
499    d.comp = comp;    d.comp = comp;
500      d.test = test;
501    d.retr = retr;    d.retr = retr;
502    d.data = data;    d.data = data;
503    d.val = b;    d.val = b;
504    return sieve_vlist_do (a, _comp_action, &d);    d.count = 0;
505      rc = sieve_vlist_do (a, _comp_action, &d);
506      if (count)
507        *count = d.count;
508      return rc;
509  }  }

Legend:
Removed from v.1.12  
changed lines
  Added in v.1.13

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