pike.git / src / modules / Regexp / pike_regexp.c

version» Context lines:

pike.git/src/modules/Regexp/pike_regexp.c:1207: Inside #if defined(PIKE_DEBUG)
   }    regerror("corrupted opcode");    p=NULL;    break;    }    if (p != NULL)    strcat(buf, p);    return (buf);   }   #endif -  - /* -  - regsub - perform substitutions after a regexp match -  */ -  - char *pike_regsub(regexp *prog, char *source, char *dest, int n) - { -  register char *src; -  register char *dst; -  register char c; -  register int no; -  register ptrdiff_t len; -  -  if (prog == NULL || -  source == NULL || dest == NULL) { -  regerror("NULL parm to regsub"); -  return NULL; -  } -  -  src = source; -  dst = dest; -  while ((c = *src++) != '\0') { -  if (c == '&') -  no = 0; -  else if (c == '\\' && '0' <= *src && *src <= '9') -  no = *src++ - '0'; -  else -  no = -1; -  -  if (no < 0) { /* Ordinary character. */ -  if (c == '\\' && (*src == '\\' || *src == '&')) -  c = *src++; -  if (--n < 0) { /* amylaar */ -  regerror("line too long"); -  return NULL; -  } -  *dst++ = c; -  } else if (prog->startp[no] != NULL && -  prog->endp[no] != NULL) { -  len = prog->endp[no] - prog->startp[no]; -  if ( (n-=len) < 0 ) { /* amylaar */ -  regerror("line too long"); -  return NULL; -  } -  strncpy(dst, prog->startp[no], len); -  dst += len; -  if (len != 0 && *(dst - 1) == '\0') { /* strncpy hit NUL. */ -  regerror("damaged match string"); -  return NULL; -  } -  } -  } -  if (--n < 0) { /* amylaar */ -  regerror("line too long"); -  return NULL; -  } -  *dst = '\0'; -  return dst; - } +