Changeset 250


Ignore:
Timestamp:
Aug 22, 2002, 10:36:25 AM (17 years ago)
Author:
jkh
Message:

Make this work with Henry Spencer's new regex API

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/base/src/pextlib1.0/strsed.c

    r214 r250  
    3232/*
    3333 * $Log: strsed.c,v $
     34 * Revision 1.3  2002/08/22 10:36:25  jkh
     35 * Make this work with Henry Spencer's new regex API
     36 *
    3437 * Revision 1.2  2002/08/21 05:22:12  landonf
    3538 * Merge in "bigmove" reorg branch. System now requires bsdmake && bsdmake install
     
    149152
    150153#ifdef HS_REGEX
    151 #include <regexp.h>
     154#include <sys/types.h>
     155#include <regex.h>
    152156#endif
    153157
     
    239243
    240244#ifdef HS_REGEX
    241     static regexp empty_exp;
    242     static regexp *exp;
     245    static regmatch_t exp_regs[100];
     246    static regex_t exp;
    243247#endif
    244248
     
    290294        /* We use first_time again if we are GNU_REGEX, and reset it later. */
    291295        first_time = 0;
    292        
    293         /* Zero the fake regexp that we use if the regex is ".*" */
    294         for (i = 0; i < NSUBEXP; i++){
    295             empty_exp.startp[i] = empty_exp.endp[i] = EMPTY_REGISTER;
    296         }
     296
     297        for (i = 0; i < 100; i++)
     298                exp_regs[i].rm_so = exp_regs[i].rm_eo = 0;
    297299#endif
    298300    }
     
    541543        regs = empty_regs;
    542544#endif
    543 #ifdef HS_REGEX
    544         exp = &empty_exp;
    545 #endif
    546545    }
    547546
     
    587586
    588587#ifdef HS_REGEX
    589         if ((exp = regcomp(from)) == (regexp *)0){
     588        if (regcomp(&exp, from, 0) != 0){
    590589            RETURN(0);
    591590        }
     
    605604            regs.end[0] = str_len;
    606605#endif
    607 #ifdef HS_REGEX
    608             exp->startp[0] = str;
    609             exp->endp[0] = str + str_len;
    610 #endif
    611606        }
    612607        else{
     
    615610#endif
    616611#ifdef HS_REGEX
    617             match = regexec(exp, str);
     612            match = regexec(&exp, str, strlen(str), exp_regs, 0) ? NO_MATCH : 1;
    618613#endif
    619614        }
     
    629624#endif
    630625#ifdef HS_REGEX
    631             range[0] = match == NO_MATCH ? -1 : (int)(exp->startp[0] - str);
    632             range[1] = match == NO_MATCH ? -1 : (int)(exp->endp[0] - str);
     626            range[0] = match == NO_MATCH ? -1 : exp_regs[0].rm_so;
     627            range[1] = match == NO_MATCH ? -1 : exp_regs[0].rm_eo;
    633628#endif
    634629            RETURN(str);
     
    646641#endif
    647642#ifdef HS_REGEX
    648             range[0] = (int)(exp->startp[0] - str);
    649             range[1] = (int)(exp->endp[0] - str);
     643            range[0] = exp_regs[0].rm_so;
     644            range[1] = exp_regs[0].rm_eo;
    650645#endif
    651646            }
     
    661656#endif
    662657#ifdef HS_REGEX
    663             need = (int)(exp->startp[0] - str);
     658            need = exp_regs[0].rm_so;
    664659#endif
    665660
     
    688683#endif
    689684#ifdef HS_REGEX
    690                     need = (int)(exp->endp[reg] - exp->startp[reg]);
     685                    need = exp_regs[reg].rm_eo - exp_regs[reg].rm_so;
    691686#endif
    692687
     
    724719
    725720#ifdef HS_REGEX
    726                     if (exp->startp[reg] != EMPTY_REGISTER){
     721                    if (exp_regs[0].rm_so != EMPTY_REGISTER){
    727722                        register char *s;
    728                         for (s = exp->startp[reg]; s < exp->endp[reg]; s++){
     723                        for (s = exp_regs[0].rm_so; s < exp_regs[0].rm_eo; s++){
    729724                            new_str[new_pos++] = translit ? map[*s] : *s;
    730725                        }
     
    748743#endif
    749744#ifdef HS_REGEX
    750             str = exp->endp[0];
    751             str_len -= (int)(exp->endp[0] - exp->startp[0]);
     745            str += exp_regs[0].rm_eo;
     746            str_len -= (int)(exp_regs[0].rm_eo - exp_regs[0].rm_so);
    752747#endif
    753748        }
Note: See TracChangeset for help on using the changeset viewer.