🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: es.comp.os.linux.programacion
Article #16026

Problema con regcomp y regexec...

#16026
From: Santiago Romero
Date: Sun, 14 May 2000 00:00
84 lines
3021 bytes
 Enas...
 no consigo tirar para adelante los filtros de mi checkmail,
 el caso es que no me tiran las regexp con regcomp y regexec.
 Si alguien quiere echar una mano, le puedo pasar el codigo
 (son 17Kb), aunque lo principal es esto:

 fichero de filtros:

   deny ^From:.*Majordomo@valux.org.*
   deny ^From:.*@spammerserver.com.*
   deny ^From:.*spammer_changing_servers@.*

 lectura de ese fichero:

   while(!done)
   {
      (...aqui mas cosas...)
      if( (where=strstr(line, "deny")) == line )
      {
         if(GetFirstWord( where+strlen("deny"), 255, word ))
         {
            // add the filter
            regcomp( &filters->rules[filters->num_rules].rule, word, 0 );
            strcpy( filters->rules[filters->num_rules].rule_text, word );
            printf("Regla %d; %s\n", filters->num_rules,
                   filters->rules[filters->num_rules].rule_text);
            filters->num_rules++;
          }
      }
   }

 variables donde estoy leyendo:

   struct Rule
   {
      regex_t rule;
      char    rule_text[128];
   };

   struct Filters
   {
      int     num_rules;
      struct  Rule rules[99];
   };

 
 codigo de comprobacion de si debo borrar o no:
 (ni siquiera borro, solo lo digo por pantalla:).

   /*----> Now comes the filter stuff <----------------------------*/
   for( i=0; i<servidor->num_msgs; i++ )
   {
       if( servidor->msgs[i]->nbytes > maxsize && maxsize != -1 )
       {
          DeleteMessage(servidor, i, mode );
          if( mode != SILENT )
             printf("    Message %3d deleted: Size > MAXSIZE .\n", i+1);
       }
       else
       {
          for( j=0; j<filters->num_rules; j++ )
          {
            if( regexec( &filters->rules[j].rule, 
                         servidor->msgs[i]->header,
                         0, NULL, 0 ) == 0 )
                   printf("Coincide!\n");
          }
       }
    }


 y na de na :(
 
-- 
ULTIMAS NOTICIAS: Programador encontrado muerto en la ducha con
una botella de champ� donde pon�a: "Lavar, aclarar, repetir".

 _-----------------------------------------------------_
|  NoP / Compiler          --       nop @ todolinux.org |
|-------------------------------------------------------|
|  POWERED BY - Linux RedHat 6.0  -  Reg. User #74.821  |
|             http://www.ctv.es/USERS/sromero           |
 ~-----------------------------------------------------~
Technical Details
Message-ID: <slrn8hstkh.sq.nop@compiler.linux.es>
Path: arc1-ca.pugleaf.net!unknown!not-for-mail

Show Full Headers
Complete Article Headers
X-Google-Language: ENGLISH,ASCII
X-Google-Thread: f86c8,2dfb3ec83ff2a1bc,start
X-Google-Attributes: gidf86c8,public
From: nop@todolinux.org (Santiago Romero)
Subject: Problema con regcomp y regexec...
Date: 2000/05/14
Message-ID: <slrn8hstkh.sq.nop@compiler.linux.es>
X-Deja-AN: 623197977
Content-Transfer-Encoding: 8bit
Organization: Telefonica Transmision de Datos
Content-Type: text/plain; charset=iso-8859-1
User-Agent: slrn/0.9.6.2 (Linux)
Mime-Version: 1.0
Reply-To: nop@todolinux.org
Newsgroups: es.comp.os.linux.programacion