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