X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/fe53701228db0390daa50be847aadc572dd21e71..f2e52e70789159e58204f2cc770dc5f7a4c6498b:/tools/tesh2/src/excludes.c diff --git a/tools/tesh2/src/excludes.c b/tools/tesh2/src/excludes.c index e2a33cb123..ddfe0e1d8c 100644 --- a/tools/tesh2/src/excludes.c +++ b/tools/tesh2/src/excludes.c @@ -1,125 +1,114 @@ -#include -#include - -XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(tesh); - -excludes_t -excludes_new(void) -{ - excludes_t excludes = xbt_new0(s_excludes_t, 1); - - if(!(excludes->items = vector_new(8,NULL))) - { - free(excludes); - return NULL; - } - - return excludes; -} - -int -excludes_is_empty(excludes_t excludes) -{ - if(!excludes) - { - errno = EINVAL; - return 0; - } - - return vector_is_empty(excludes->items); -} - -int -excludes_contains(excludes_t excludes, fstream_t fstream) -{ - fstream_t cur; - - if(!excludes || !fstream) - { - errno = EINVAL; - return 0; - } - - vector_rewind(excludes->items); - - while((cur = vector_get(excludes->items))) - { - if(!strcmp(fstream->name, cur->name) && !strcmp(fstream->directory, cur->directory)) - return 1; - - vector_move_next(excludes->items); - } - - return 0; -} - -int -excludes_add(excludes_t excludes, fstream_t fstream) -{ - if(!excludes) - return EINVAL; - - if(excludes_contains(excludes, fstream)) - return EEXIST; - - return vector_push_back(excludes->items, fstream); -} - -int -excludes_check(excludes_t excludes, fstreams_t fstreams) -{ - fstream_t exclude; - fstream_t fstream; - int success = 1; - int exists; - - if(!excludes || !fstreams) - return EINVAL; - - vector_rewind(excludes->items); - - while((exclude = vector_get(excludes->items))) - { - vector_rewind(fstreams->items); - - while((fstream = vector_get(fstreams->items))) - { - exists = 0; - - if(!strcmp(fstream->name, exclude->name) && !strcmp(fstream->directory, exclude->directory)) - { - exists = 1; - break; - } - - vector_move_next(fstreams->items); - } - - if(!exists) - { - success = 0; - WARN1("cannot exclude the file %s",exclude->name); - } - - vector_move_next(excludes->items); - } - - return success; -} - -int -excludes_free(void** excludesptr) -{ - int rv; - - if(!(*excludesptr)) - return EINVAL; - - if((rv =vector_free((&(*((excludes_t*)excludesptr))->items)))) - return rv; - - free(*excludesptr); - *excludesptr = NULL; - - return 0; -} +#include +#include + +XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(tesh); + +excludes_t +excludes_new(void) +{ + excludes_t excludes = xbt_new0(s_excludes_t, 1); + + excludes->items = xbt_dynar_new(sizeof(fstream_t), (void_f_pvoid_t)fstream_free); + + return excludes; +} + +int +excludes_is_empty(excludes_t excludes) +{ + if(!excludes) + { + errno = EINVAL; + return 0; + } + + return (0 == xbt_dynar_length(excludes->items)); +} + +int +excludes_contains(excludes_t excludes, fstream_t fstream) +{ + fstream_t cur; + unsigned int i; + + if(!excludes || !fstream) + { + errno = EINVAL; + return 0; + } + + xbt_dynar_foreach(excludes->items, i, cur) + { + if(!strcmp(fstream->name, cur->name) && !strcmp(fstream->directory, cur->directory)) + return 1; + } + + return 0; +} + +int +excludes_add(excludes_t excludes, fstream_t fstream) +{ + if(!excludes) + return EINVAL; + + if(excludes_contains(excludes, fstream)) + return EEXIST; + + xbt_dynar_push(excludes->items, &fstream); + + return 0; +} + +int +excludes_check(excludes_t excludes, fstreams_t fstreams) +{ + fstream_t exclude; + fstream_t fstream; + int success = 1; + int exists; + unsigned int i; + + if(!excludes || !fstreams) + return EINVAL; + + + xbt_dynar_foreach(excludes->items, i, exclude) + { + exists = 1; + + xbt_dynar_foreach(fstreams->items, i, fstream) + { + exists = 0; + + if(!strcmp(fstream->name, exclude->name) && !strcmp(fstream->directory, exclude->directory)) + { + exists = 1; + break; + } + } + + if(!exists) + { + success = 0; + WARN1("cannot exclude the file %s",exclude->name); + } + } + + return success; +} + +int +excludes_free(void** excludesptr) +{ + if(!(*excludesptr)) + return EINVAL; + + if((*((excludes_t*)excludesptr))->items) + xbt_dynar_free((&(*((excludes_t*)excludesptr))->items)); + + free(*excludesptr); + *excludesptr = NULL; + + return 0; +}