44 if (!tosearch || !searchfor || !replacewith)
49 size_t tosearchlen = strlen(tosearch);
50 size_t searchforlen = strlen(searchfor);
51 size_t replacewithlen = strlen(replacewith);
52 size_t templen = tosearchlen * replacewithlen;
54 if (tosearchlen == 0 || searchforlen == 0 || replacewithlen == 0)
59 bool is_potential_integer_overflow =
60 (templen == SIZE_MAX) || (templen / tosearchlen != replacewithlen);
62 if (is_potential_integer_overflow)
69 const char *scratch = strstr(tosearch, searchfor);
72 return strdup(tosearch);
75 const char *searching = tosearch;
76 char temp[templen + 1];
77 memset(temp, 0,
sizeof(temp));
82 size_t skipped = (size_t)(scratch - searching);
83 memcpy(target, searching, skipped);
85 memcpy(target, replacewith, replacewithlen);
86 target += replacewithlen;
88 searching = scratch + searchforlen;
89 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.