/* @configure_input@ */ /* ** Copyright 1998-2002 University of Illinois Board of Trustees ** Copyright 1998-2002 Mark D. Roth ** All rights reserved. ** ** @PATHCODE_PREFIX@_gsub.c - substring replacement function ** ** Mark D. Roth ** Campus Information Technologies and Educational Services ** University of Illinois at Urbana-Champaign */ #include <@PATHCODE_PREFIX@_pathcode.h> #include #include #ifdef STDC_HEADERS # include #endif /* ** @PATHCODE_PREFIX@_gsub() - replace all instances of a substring in a ** given string with a different substring */ void @PATHCODE_PREFIX@_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); }