27#define UCHARAT(p) ((int)*(unsigned char *)(p))
29#define UCHARAT(p) ((int)*(p)&CHARBITS)
36hs_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];
73 if (
len != 0 && *(
dst-1) ==
'\0') {
74 hs_regerror(
"damaged match string");