44 if (!tosearch || !searchfor || !replacewith)
49 size_t tosearchlen = strlen(tosearch);
50 size_t replacewithlen = strlen(replacewith);
51 size_t templen = tosearchlen * replacewithlen;
53 if (tosearchlen == 0 || strlen(searchfor) == 0 || replacewithlen == 0)
58 bool is_potential_integer_overflow =
59 (templen == SIZE_MAX) || (templen / tosearchlen != replacewithlen);
61 if (is_potential_integer_overflow)
68 const char *searching = tosearch;
70 char temp[templen + 1];
73 const char *scratch = strstr(searching, searchfor);
76 return strdup(tosearch);
81 strncat(temp, searching, (
size_t)(scratch - searching));
82 strcat(temp, replacewith);
84 searching = scratch + strlen(searchfor);
85 scratch = strstr(searching, searchfor);
char * searchandreplace(const char *tosearch, const char *searchfor, const char *replacewith)
Read 'tosearch', replace all occurrences of 'searchfor' with 'replacewith' and return a pointer to th...
const char * get_env(const char *name, const char *envp[])
Given an environmental variable name, search the envp array for its value.