size_t pos, i;\r
char* begin;\r
char* buf;\r
- \r
+\r
if(!(begin = strstr(*str, what)))\r
{\r
errno = ESRCH;\r
return -1;\r
}\r
- \r
+\r
pos = begin - *str;\r
- \r
+\r
i = 0;\r
- \r
+\r
pos += strlen(what);\r
- \r
+\r
if(begin == *str)\r
{\r
if(!(buf = (char*) calloc(strlen(with) + ((pos < strlen(*str)) ? strlen(*str + pos) : 0) + 1, sizeof(char))))\r
return -1;\r
- \r
+\r
strcpy(buf, with);\r
- \r
+\r
if(pos < strlen(*str))\r
strcpy(buf + strlen(with), *str + pos);\r
}\r
{\r
if(!(buf = (char*) calloc((begin - *str) + strlen(with) + ((pos < strlen(*str)) ? strlen(*str + pos) : 0) + 1, sizeof(char))))\r
return -1;\r
- \r
+\r
strncpy(buf, *str, (begin - *str));\r
strcpy(buf + (begin - *str) , with);\r
- \r
+\r
\r
if(pos < strlen(*str))\r
strcpy(buf + (begin - *str) + strlen(with), *str + pos);\r
- } \r
- \r
+ }\r
+\r
free(*str);;\r
*str = buf;\r
- \r
+\r
return 0;\r
- \r
-} \r
+\r
+}\r
*/\r
\r
/* last version int\r
return -1;\r
}\r
\r
- \r
+\r
if(!(delimited = (char*) calloc((strlen(what) + 2) , sizeof(char))))\r
return -1;\r
\r
memset(delimited, 0, (strlen(what) + 2));\r
\r
sprintf(delimited,"%s%c", what, delimiters[i]);\r
- \r
+\r
if((begin = strstr(*str, delimited)))\r
break;\r
}\r
- \r
+\r
free(delimited);\r
- \r
- \r
+\r
+\r
if(!begin && (size = (int)strlen(*str) - (int)strlen(what)) >= 0 && !strcmp(*str + size, what))\r
begin = strstr(*str, what);\r
- \r
+\r
if(!begin)\r
{\r
errno = ESRCH;\r
return -1;\r
}\r
- \r
+\r
pos = begin - *str;\r
- \r
+\r
i = 0;\r
- \r
+\r
pos += strlen(what);\r
\r
if(begin == *str)\r
{\r
- \r
+\r
\r
if(!(buf = (char*) calloc(strlen(with) + ((pos < strlen(*str)) ? strlen(*str + pos) : 0) + 1, sizeof(char))))\r
return -1;\r
- \r
+\r
strcpy(buf, with);\r
- \r
+\r
if(pos < strlen(*str))\r
strcpy(buf + strlen(with), *str + pos);\r
}\r
{\r
if(!(buf = (char*) calloc((begin - *str) + strlen(with) + ((pos < strlen(*str)) ? strlen(*str + pos) : 0) + 1, sizeof(char))))\r
return -1;\r
- \r
+\r
strncpy(buf, *str, (begin - *str));\r
strcpy(buf + (begin - *str) , with);\r
\r
if(pos < strlen(*str))\r
strcpy(buf + (begin - *str) + strlen(with), *str + pos);\r
- } \r
- \r
+ }\r
+\r
free(*str);;\r
*str = buf;\r
- \r
+\r
return 0;\r
- \r
+\r
}*/\r
\r
int\r
str_replace(char** str, const char* what, const char* with, const char* delimiters)\r
{\r
size_t pos, i, len;\r
- char* begin;\r
+ char* begin = NULL;\r
char* buf;\r
int size;\r
\r
memset(delimited, 0, (strlen(what) + 2));\r
\r
sprintf(delimited,"%s%c", what, delimiters[i]);\r
- \r
+\r
if((begin = strstr(*str, delimited)))\r
break;\r
}\r
- \r
+\r
free(delimited);\r
}\r
else\r
begin = strstr(*str, what);\r
- \r
- \r
+\r
+\r
if(!begin && (size = (int)strlen(*str) - (int)strlen(what)) >= 0 && !strcmp(*str + size, what))\r
begin = strstr(*str, what);\r
- \r
+\r
if(!begin)\r
{\r
errno = ESRCH;\r
return -1;\r
}\r
- \r
+\r
pos = begin - *str;\r
- \r
+\r
i = 0;\r
- \r
+\r
pos += strlen(what);\r
\r
if(begin == *str)\r
{\r
if(!(buf = (char*) calloc((with ? strlen(with) : 0) + ((pos < strlen(*str)) ? strlen(*str + pos) : 0) + 1, sizeof(char))))\r
return -1;\r
- \r
+\r
if(with)\r
strcpy(buf, with);\r
- \r
+\r
if(pos < strlen(*str))\r
strcpy(buf + (with ? strlen(with) : 0), *str + pos);\r
}\r
{\r
if(!(buf = (char*) calloc((begin - *str) + (with ? strlen(with) : 0) + ((pos < strlen(*str)) ? strlen(*str + pos) : 0) + 1, sizeof(char))))\r
return -1;\r
- \r
+\r
strncpy(buf, *str, (begin - *str));\r
- \r
+\r
if(with)\r
strcpy(buf + (begin - *str) , with);\r
\r
if(pos < strlen(*str))\r
strcpy(buf + (begin - *str) + (with ? strlen(with) : 0), *str + pos);\r
- } \r
- \r
+ }\r
+\r
free(*str);\r
\r
*str = buf;\r
- \r
+\r
return 0;\r
- \r
-} \r
+\r
+}\r
\r
int\r
str_replace_all(char** str, const char* what, const char* with, const char* delimiters)\r
{\r
int rv;\r
- \r
+\r
while(!(rv = str_replace(str, what, with, delimiters)));\r
- \r
+\r
return (errno == ESRCH) ? 0 : -1;\r
}\r
\r
str_replace_all(char** str, const char* what, const char* with)\r
{\r
int rv;\r
- \r
+\r
while(!(rv = str_replace(str, what, with)));\r
- \r
+\r
return (errno == ESRCH) ? 0 : -1;\r
}*/\r
\r