Changeset ce7b824 for functions.c


Ignore:
Timestamp:
Aug 11, 2007, 1:04:07 AM (13 years ago)
Author:
Nelson Elhage <nelhage@mit.edu>
Branches:
master, barnowl_perlaim, debian, release-1.4, release-1.5, release-1.6, release-1.7, release-1.8, release-1.9
Children:
18fb3d4f
Parents:
ad15610
Message:
Implement :punt and :unpunt to punt arbitrary filters, rather than
just z-triplets. closes #6
File:
1 edited

Legend:

Unmodified
Added
Removed
  • functions.c

    rad15610 rce7b824  
    25582558  for (i=0; i<j; i++) {
    25592559    f=owl_list_get_element(fl, i);
     2560    snprintf(buff, sizeof(buff), "[% 2d] ", i+1);
     2561    owl_fmtext_append_normal(&fm, buff);
    25602562    owl_filter_print(f, buff);
    25612563    owl_fmtext_append_normal(&fm, buff);
     
    30173019void owl_function_zpunt(char *class, char *inst, char *recip, int direction)
    30183020{
    3019   owl_filter *f;
    3020   owl_list *fl;
    30213021  char *buff;
    30223022  char *quoted;
    3023   int ret, i, j;
    3024 
    3025   fl=owl_global_get_puntlist(&g);
    3026 
    3027   /* first, create the filter */
    3028   f=malloc(sizeof(owl_filter));
     3023
    30293024  buff=malloc(strlen(class)+strlen(inst)+strlen(recip)+100);
    30303025  strcpy(buff, "class");
     
    30573052    owl_free(quoted);
    30583053  }
    3059  
    3060   owl_function_debugmsg("About to filter %s", buff);
    3061   ret=owl_filter_init_fromstring(f, "punt-filter", buff);
     3054
     3055  owl_function_punt(buff, direction);
    30623056  owl_free(buff);
     3057}
     3058
     3059void owl_function_punt(char *filter, int direction)
     3060{
     3061  owl_filter *f;
     3062  owl_list *fl;
     3063  int ret, i, j;
     3064  fl=owl_global_get_puntlist(&g);
     3065
     3066  /* first, create the filter */
     3067  f=malloc(sizeof(owl_filter));
     3068
     3069  owl_function_debugmsg("About to filter %s", filter);
     3070  ret=owl_filter_init_fromstring(f, "punt-filter", filter);
    30633071  if (ret) {
    30643072    owl_function_error("Error creating filter for zpunt");
     
    30713079  for (i=0; i<j; i++) {
    30723080    if (owl_filter_equiv(f, owl_list_get_element(fl, i))) {
     3081      owl_function_debugmsg("found an equivalent punt filter");
    30733082      /* if we're punting, then just silently bow out on this duplicate */
    30743083      if (direction==0) {
     
    30813090        owl_filter_free(owl_list_get_element(fl, i));
    30823091        owl_list_remove_element(fl, i);
     3092        owl_filter_free(f);
    30833093        return;
    30843094      }
     
    30863096  }
    30873097
     3098  owl_function_debugmsg("punting");
    30883099  /* If we're punting, add the filter to the global punt list */
    30893100  if (direction==0) {
Note: See TracChangeset for help on using the changeset viewer.