Update libregexp with recent bug fixes from Plan 9.
This commit is contained in:
parent
4da83e7cce
commit
62390091b7
12 changed files with 111 additions and 81 deletions
|
|
@ -5,12 +5,14 @@
|
|||
extern void
|
||||
rregsub(Rune *sp, /* source string */
|
||||
Rune *dp, /* destination string */
|
||||
int dlen,
|
||||
Resub *mp, /* subexpression elements */
|
||||
int ms) /* number of elements pointed to by mp */
|
||||
{
|
||||
Rune *ssp;
|
||||
Rune *ssp, *ep;
|
||||
int i;
|
||||
|
||||
ep = dp+(dlen/sizeof(Rune))-1;
|
||||
while(*sp != '\0'){
|
||||
if(*sp == '\\'){
|
||||
switch(*++sp){
|
||||
|
|
@ -29,16 +31,19 @@ rregsub(Rune *sp, /* source string */
|
|||
for(ssp = mp[i].s.rsp;
|
||||
ssp < mp[i].e.rep;
|
||||
ssp++)
|
||||
*dp++ = *ssp;
|
||||
if(dp < ep)
|
||||
*dp++ = *ssp;
|
||||
break;
|
||||
case '\\':
|
||||
*dp++ = '\\';
|
||||
if(dp < ep)
|
||||
*dp++ = '\\';
|
||||
break;
|
||||
case '\0':
|
||||
sp--;
|
||||
break;
|
||||
default:
|
||||
*dp++ = *sp;
|
||||
if(dp < ep)
|
||||
*dp++ = *sp;
|
||||
break;
|
||||
}
|
||||
}else if(*sp == '&'){
|
||||
|
|
@ -46,9 +51,12 @@ rregsub(Rune *sp, /* source string */
|
|||
if(mp[0].s.rsp != 0)
|
||||
for(ssp = mp[0].s.rsp;
|
||||
ssp < mp[0].e.rep; ssp++)
|
||||
*dp++ = *ssp;
|
||||
}else
|
||||
*dp++ = *sp;
|
||||
if(dp < ep)
|
||||
*dp++ = *ssp;
|
||||
}else{
|
||||
if(dp < ep)
|
||||
*dp++ = *sp;
|
||||
}
|
||||
sp++;
|
||||
}
|
||||
*dp = '\0';
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue