Changeset 250
- Timestamp:
- Aug 22, 2002, 10:36:25 AM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/base/src/pextlib1.0/strsed.c
r214 r250 32 32 /* 33 33 * $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 * 34 37 * Revision 1.2 2002/08/21 05:22:12 landonf 35 38 * Merge in "bigmove" reorg branch. System now requires bsdmake && bsdmake install … … 149 152 150 153 #ifdef HS_REGEX 151 #include <regexp.h> 154 #include <sys/types.h> 155 #include <regex.h> 152 156 #endif 153 157 … … 239 243 240 244 #ifdef HS_REGEX 241 static reg exp empty_exp;242 static regex p *exp;245 static regmatch_t exp_regs[100]; 246 static regex_t exp; 243 247 #endif 244 248 … … 290 294 /* We use first_time again if we are GNU_REGEX, and reset it later. */ 291 295 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; 297 299 #endif 298 300 } … … 541 543 regs = empty_regs; 542 544 #endif 543 #ifdef HS_REGEX544 exp = &empty_exp;545 #endif546 545 } 547 546 … … 587 586 588 587 #ifdef HS_REGEX 589 if ( (exp = regcomp(from)) == (regexp *)0){588 if (regcomp(&exp, from, 0) != 0){ 590 589 RETURN(0); 591 590 } … … 605 604 regs.end[0] = str_len; 606 605 #endif 607 #ifdef HS_REGEX608 exp->startp[0] = str;609 exp->endp[0] = str + str_len;610 #endif611 606 } 612 607 else{ … … 615 610 #endif 616 611 #ifdef HS_REGEX 617 match = regexec( exp, str);612 match = regexec(&exp, str, strlen(str), exp_regs, 0) ? NO_MATCH : 1; 618 613 #endif 619 614 } … … 629 624 #endif 630 625 #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; 633 628 #endif 634 629 RETURN(str); … … 646 641 #endif 647 642 #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; 650 645 #endif 651 646 } … … 661 656 #endif 662 657 #ifdef HS_REGEX 663 need = (int)(exp->startp[0] - str);658 need = exp_regs[0].rm_so; 664 659 #endif 665 660 … … 688 683 #endif 689 684 #ifdef HS_REGEX 690 need = (int)(exp->endp[reg] - exp->startp[reg]);685 need = exp_regs[reg].rm_eo - exp_regs[reg].rm_so; 691 686 #endif 692 687 … … 724 719 725 720 #ifdef HS_REGEX 726 if (exp ->startp[reg]!= EMPTY_REGISTER){721 if (exp_regs[0].rm_so != EMPTY_REGISTER){ 727 722 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++){ 729 724 new_str[new_pos++] = translit ? map[*s] : *s; 730 725 } … … 748 743 #endif 749 744 #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); 752 747 #endif 753 748 }
Note: See TracChangeset
for help on using the changeset viewer.