#include #include #include #include #include char *mu_replace(const char *prog_name, const char *src, const char *str, const char *fmt) { size_t src_len = strlen(src); size_t str_len = strlen(str); size_t fmt_len = strlen(fmt); char *buf = malloc(src_len - fmt_len + str_len + 1); if (buf == NULL) { if (prog_name) fprintf(stderr, "%s: malloc failed: %s\n", prog_name, strerror(errno)); return NULL; } strcpy(buf, src); /* REPLACE */ char *ptr = strstr(buf, fmt); if (ptr == NULL) return NULL; memmove(ptr + str_len, ptr + fmt_len, strlen(ptr + fmt_len) + 1); strncpy(ptr, str, str_len); return buf; }