[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

ldm-5.0.8 pqact regular expression substitution problem



> Here is another odd thing that I noticed.
> The follwing line in my pqact.conf produced the file names below:
>
> FSL3    ^FILTER.*.(19..)(...)(......).* FILE
   /home/ldm/data/acars/\1\2/\3.acars
>
>
> 1999120FILTER.ACARS.UATurbulence.1999120211437.*
> 1999120FILTER.ACARS.UATurbulence.1999120211459.*
> 1999120FILTER.ACARS.UATurbulence.1999120211500.*
> 1999120FILTER.ACARS.UATurbulence.1999120211510.*

That is a new problem since we started using the system <regex.h>
interface instead of libregexp. Attached find a patch to src/pqact/palt.c
which fixes the problem. Thank you for reporting this.

-glenn
Index: palt.c
===================================================================
RCS file: /upc/share/CVS/ldm5/pqact/palt.c,v
retrieving revision 1.107
retrieving revision 1.108
diff -c -r1.107 -r1.108
*** palt.c      1999/04/16 20:23:28     1.107
--- palt.c      1999/04/30 22:51:51     1.108
***************
*** 2,8 ****
   *   Copyright 1993, University Corporation for Atmospheric Research
   *   See ../COPYRIGHT file for copying and redistribution conditions.
   */
! /* $Id: palt.c,v 1.107 1999/04/16 20:23:28 davis Exp $ */
  
  /* 
   */
--- 2,8 ----
   *   Copyright 1993, University Corporation for Atmospheric Research
   *   See ../COPYRIGHT file for copying and redistribution conditions.
   */
! /* $Id: palt.c,v 1.108 1999/04/30 22:51:51 davis Exp $ */
  
  /* 
   */
***************
*** 328,334 ****
                uerror("regcomp error at line %d: \"%s\"", linenumber, 
tabtoks[1]);
                goto err;
        }
!       pal->pmatchp = Alloc(pal->prog.re_nsub, regmatch_t);
        if(pal->pmatchp == NULL)
        {
                regfree(&pal->prog);
--- 328,334 ----
                uerror("regcomp error at line %d: \"%s\"", linenumber, 
tabtoks[1]);
                goto err;
        }
!       pal->pmatchp = Alloc(pal->prog.re_nsub + 1, regmatch_t);
        if(pal->pmatchp == NULL)
        {
                regfree(&pal->prog);
***************
*** 779,786 ****
                 */
                if((infop->feedtype & pal->feedtype)
                   && ((regexec(&pal->prog, infop->ident,
!                               pal->prog.re_nsub,  pal->pmatchp,
!                                       0) != REG_NOMATCH)
                       || (strcmp(pal->pattern, "^_ELSE_$") == 0
                           && did_something == 0
                           && infop->ident[0] != '_')))
--- 779,786 ----
                 */
                if((infop->feedtype & pal->feedtype)
                   && ((regexec(&pal->prog, infop->ident,
!                               pal->prog.re_nsub +1,  pal->pmatchp,
!                                       0) == 0)
                       || (strcmp(pal->pattern, "^_ELSE_$") == 0
                           && did_something == 0
                           && infop->ident[0] != '_')))