/* pathcode/fget_gsub.c. Generated from gsub.c.in by configure. */ /* ** Copyright 1998-2002 University of Illinois Board of Trustees ** Copyright 1998-2002 Mark D. Roth ** All rights reserved. ** ** fget_gsub.c - substring replacement function ** ** Mark D. Roth ** Campus Information Technologies and Educational Services ** University of Illinois at Urbana-Champaign */ #include #include #include #ifdef STDC_HEADERS # include #endif /* ** fget_gsub() - replace all instances of a substring in a ** given string with a different substring */ void fget_gsub(char *string, char *find, char *replace, char *buf, size_t buflen) { char *cp; register int in_idx = 0, out_idx = 0; buf[0] = '\0'; while ((cp = strstr(string + in_idx, find)) != NULL) { out_idx += snprintf(buf + out_idx, buflen - out_idx, "%.*s%s", cp - (string + in_idx), string + in_idx, replace); in_idx += (cp - (string + in_idx)) + strlen(find); } strlcat(buf, string + in_idx, buflen); }