X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/0f5e8daaa6e9f74521068aa75837200bcd182ea6..cc01c6a871dbbfd0cc84e26eb9f94aeb539e613e:/tools/tesh2/src/str_replace.c diff --git a/tools/tesh2/src/str_replace.c b/tools/tesh2/src/str_replace.c index df147e456e..976d93ca2b 100644 --- a/tools/tesh2/src/str_replace.c +++ b/tools/tesh2/src/str_replace.c @@ -4,105 +4,91 @@ #include #include - -int -str_replace(char** str, const char* what, const char* with, const char* delimiters) -{ - size_t pos, i, len; - char* begin = NULL; - char* buf; - int size; - - if(!*str || !what) - { - errno = EINVAL; - return -1; - } - - if(delimiters) - { - char* delimited; - - if(!(delimited = (char*) calloc((strlen(what) + 2) , sizeof(char)))) - return -1; - - len = strlen(delimiters); - - for(i = 0; i < len; i++) - { - memset(delimited, 0, (strlen(what) + 2)); - - sprintf(delimited,"%s%c", what, delimiters[i]); - - if((begin = strstr(*str, delimited))) - break; - } - - free(delimited); - } - else - begin = strstr(*str, what); - - - if(!begin && (size = (int)strlen(*str) - (int)strlen(what)) >= 0 && !strcmp(*str + size, what)) - begin = strstr(*str, what); - - if(!begin) - { - errno = ESRCH; - return -1; - } - - pos = begin - *str; - - i = 0; - - pos += strlen(what); - - if(begin == *str) - { - if(!(buf = (char*) calloc((with ? strlen(with) : 0) + ((pos < strlen(*str)) ? strlen(*str + pos) : 0) + 1, sizeof(char)))) - return -1; - - if(with) - strcpy(buf, with); - - if(pos < strlen(*str)) - strcpy(buf + (with ? strlen(with) : 0), *str + pos); - } - else - { - if(!(buf = (char*) calloc((begin - *str) + (with ? strlen(with) : 0) + ((pos < strlen(*str)) ? strlen(*str + pos) : 0) + 1, sizeof(char)))) - return -1; - - strncpy(buf, *str, (begin - *str)); - - if(with) - strcpy(buf + (begin - *str) , with); - - if(pos < strlen(*str)) - strcpy(buf + (begin - *str) + (with ? strlen(with) : 0), *str + pos); - } - - free(*str); - - *str = buf; - - return 0; - -} - -int -str_replace_all(char** str, const char* what, const char* with, const char* delimiters) -{ - int rv; - - while(!(rv = str_replace(str, what, with, delimiters))); - - return (errno == ESRCH) ? 0 : -1; -} - - - - - + int +str_replace(char **str, const char *what, const char *with, + const char *delimiters) +{ + size_t pos, i, len; + char *begin = NULL; + char *buf; + int size; + if (!*str || !what) + { + errno = EINVAL; + return -1; + } + if (delimiters) + { + char *delimited; + if (!(delimited = (char *) calloc((strlen(what) + 2), sizeof(char)))) + return -1; + len = strlen(delimiters); + for (i = 0; i < len; i++) + { + memset(delimited, 0, (strlen(what) + 2)); + sprintf(delimited, "%s%c", what, delimiters[i]); + if ((begin = strstr(*str, delimited))) + break; + } + free(delimited); + } + + else + begin = strstr(*str, what); + if (!begin && (size = (int) strlen(*str) - (int) strlen(what)) >= 0 + && !strcmp(*str + size, what)) + begin = strstr(*str, what); + if (!begin) + { + errno = ESRCH; + return -1; + } + pos = begin - *str; + i = 0; + pos += strlen(what); + if (begin == *str) + { + if (! + (buf = + (char *) calloc((with ? strlen(with) : 0) + + ((pos < + strlen(*str)) ? strlen(*str + pos) : 0) + 1, + sizeof(char)))) + return -1; + if (with) + strcpy(buf, with); + if (pos < strlen(*str)) + strcpy(buf + (with ? strlen(with) : 0), *str + pos); + } + + else + { + if (! + (buf = + (char *) calloc((begin - *str) + (with ? strlen(with) : 0) + + ((pos < + strlen(*str)) ? strlen(*str + pos) : 0) + 1, + sizeof(char)))) + return -1; + strncpy(buf, *str, (begin - *str)); + if (with) + strcpy(buf + (begin - *str), with); + if (pos < strlen(*str)) + strcpy(buf + (begin - *str) + (with ? strlen(with) : 0), + *str + pos); + } + free(*str); + *str = buf; + return 0; + } + + int +str_replace_all(char **str, const char *what, const char *with, + const char *delimiters) +{ + int rv; + while (!(rv = str_replace(str, what, with, delimiters))); + return (errno == ESRCH) ? 0 : -1; + } + +