27 #define UCHARAT(p) ((int)*(unsigned char *)(p))
29 #define UCHARAT(p) ((int)*(p)&CHARBITS)
36 hs_regsub(prog, source, dest)
47 if (prog == NULL || source == NULL || dest == NULL) {
48 hs_regerror(
"NULL parm to regsub");
51 if (UCHARAT(prog->program) != MAGIC) {
52 hs_regerror(
"damaged regexp fed to regsub");
58 while ((c = *src++) !=
'\0') {
61 else if (c ==
'\\' &&
'0' <= *src && *src <=
'9')
66 if (c ==
'\\' && (*src ==
'\\' || *src ==
'&'))
69 }
else if (prog->startp[no] != NULL && prog->endp[no] != NULL) {
70 len = prog->endp[no] - prog->startp[no];
71 (void) strncpy(dst, prog->startp[no], len);
73 if (len != 0 && *(dst-1) ==
'\0') {
74 hs_regerror(
"damaged match string");