2 char * searchAndReplace2(char* orig, char* search, char*value)
5 size_t total_len = strlen(orig);
6 size_t token_len = strlen(search);
7 size_t value_len = strlen(value);
12 int total_bytes_allocated = 0;
14 p = strstr(orig, search);
33 int len_to_add = (inx_start);
35 tmp = (char*) malloc(sizeof(char) * len_to_add);
36 total_bytes_allocated += len_to_add;
38 strncpy(tmp, orig + tmp_offset, inx_start);
39 tmp_offset = inx_start;
42 total_bytes_allocated += value_len;
43 tmp = (char*) realloc(tmp, total_bytes_allocated);
45 strncpy(tmp + tmp_offset, value, value_len);
46 tmp_offset += value_len;
49 p = strstr(orig + inx_start + token_len, search);
54 from = inx_start + token_len;
55 if (inx_start - tmp_offset > 0)
57 total_bytes_allocated += inx_start - from;
58 tmp = (char*) realloc(tmp, total_bytes_allocated);
59 strncpy(tmp + tmp_offset, orig + from, inx_start - from);
60 tmp_offset += inx_start - from;
62 }//No more coincidences.
65 from = inx_start + token_len;
70 if ((from < total_len) && from>0)
72 total_bytes_allocated += total_len - from;//((from - (int)token_len) + (int)value_len);
73 tmp = (char*) realloc(tmp, total_bytes_allocated+1);
74 strncpy(tmp + tmp_offset, orig + from, total_len - from);
76 tmp[total_bytes_allocated]='\0';
81 char * searchAndReplace(char* orig, char* search, char*value)
84 size_t total_len = strlen(orig);
85 size_t token_len = strlen(search);
86 size_t value_len = strlen(value);
91 int total_bytes_allocated = 0;
93 p = strstr(orig, search);
104 inx_start = p - orig;
112 int len_to_add = (inx_start);
114 tmp = (char*) malloc(sizeof(char) * len_to_add);
115 total_bytes_allocated += len_to_add;
117 strncpy(tmp, orig + tmp_offset, inx_start);
118 tmp_offset = inx_start;
121 total_bytes_allocated += value_len;
122 tmp = (char*) realloc(tmp, total_bytes_allocated);
124 strncpy(tmp + tmp_offset, value, value_len);
125 tmp_offset += value_len;
128 p = strstr(orig + inx_start + token_len, search);
132 inx_start = p - orig;
133 from = inx_start + token_len;
134 if (inx_start - tmp_offset > 0)
136 total_bytes_allocated += inx_start - from;
137 tmp = (char*) realloc(tmp, total_bytes_allocated);
138 strncpy(tmp + tmp_offset, orig + from, inx_start - from);
139 tmp_offset += inx_start - from;
141 }//No more coincidences.
144 from = inx_start + token_len;
149 if ((from < total_len) && from>0)
151 total_bytes_allocated += total_len - from;//((from - (int)token_len) + (int)value_len);
152 tmp = (char*) realloc(tmp, total_bytes_allocated+1);
153 strncpy(tmp + tmp_offset, orig + from, total_len - from);
155 tmp[total_bytes_allocated]='\0';
160 //escape newlines characters. Returns a new allocated string.
161 char* escape_newlines(char *orig)
171 if ((*ptr == '\n') ||(*ptr == '\r'))
187 else if (*ptr == '\r') {