/* 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 <roth@uiuc.edu>
**  Campus Information Technologies and Educational Services
**  University of Illinois at Urbana-Champaign
*/

#include <fget_pathcode.h>

#include <stdio.h>
#include <sys/types.h>

#ifdef STDC_HEADERS
# include <string.h>
#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);
}




syntax highlighted by Code2HTML, v. 0.9.1