|
|
1.1 ! root 1: #include "regprog.h" ! 2: ! 3: /* substitute into one string using the matches from the last regexec() */ ! 4: extern void ! 5: regsub (sp, dp, mp, ms) ! 6: char *sp; /* source string */ ! 7: char *dp; /* destination string */ ! 8: regsubexp *mp; /* subexpression elements */ ! 9: int ms; /* number of elements pointed to by mp */ ! 10: { ! 11: char *ssp; ! 12: register int i; ! 13: ! 14: while (*sp != '\0') { ! 15: if (*sp == '\\') { ! 16: switch (*++sp) { ! 17: case '0': ! 18: case '1': ! 19: case '2': ! 20: case '3': ! 21: case '4': ! 22: case '5': ! 23: case '6': ! 24: case '7': ! 25: case '8': ! 26: case '9': ! 27: i = *sp-'0'; ! 28: if (mp[i].sp != NULL && mp!=NULL && ms>i) ! 29: for (ssp = mp[i].sp; ! 30: ssp < mp[i].ep; ! 31: ssp++) ! 32: *dp++ = *ssp; ! 33: break; ! 34: case '\\': ! 35: *dp++ = '\\'; ! 36: break; ! 37: case '\0': ! 38: sp--; ! 39: break; ! 40: default: ! 41: *dp++ = *sp; ! 42: break; ! 43: } ! 44: } else if (*sp == '&') { ! 45: if (mp[0].sp != NULL && mp!=NULL && ms>0) ! 46: if (mp[0].sp != NULL) ! 47: for (ssp = mp[0].sp; ! 48: ssp < mp[0].ep; ssp++) ! 49: *dp++ = *ssp; ! 50: } else ! 51: *dp++ = *sp; ! 52: sp++; ! 53: } ! 54: *dp = '\0'; ! 55: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.