-#include <excludes.h>
-#include <vector.h>
-
-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)
-{
- if(!(*excludesptr))
- return EINVAL;
-
- if((errno =vector_free((&(*((excludes_t*)excludesptr))->items))))
- return errno;
-
- free(*excludesptr);
- *excludesptr = NULL;
-
- return 0;
-}
+#include <excludes.h>\r
+#include <fstream.h>\r
+\r
+XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(tesh);\r
+\r
+excludes_t\r
+excludes_new(void)\r
+{\r
+ excludes_t excludes = xbt_new0(s_excludes_t, 1);\r
+\r
+ excludes->items = xbt_dynar_new(sizeof(fstream_t), (void_f_pvoid_t)fstream_free);\r
+ \r
+ return excludes;\r
+}\r
+\r
+int\r
+excludes_is_empty(excludes_t excludes)\r
+{\r
+ if(!excludes)\r
+ {\r
+ errno = EINVAL;\r
+ return 0;\r
+ }\r
+ \r
+ return (0 == xbt_dynar_length(excludes->items));\r
+}\r
+\r
+int\r
+excludes_contains(excludes_t excludes, fstream_t fstream)\r
+{\r
+ fstream_t cur;\r
+ unsigned int i;\r
+ \r
+ if(!excludes || !fstream)\r
+ {\r
+ errno = EINVAL;\r
+ return 0;\r
+ }\r
+\r
+ xbt_dynar_foreach(excludes->items, i, cur)\r
+ {\r
+ if(!strcmp(fstream->name, cur->name) && !strcmp(fstream->directory, cur->directory))\r
+ return 1;\r
+ }\r
+ \r
+ return 0;\r
+}\r
+\r
+int\r
+excludes_add(excludes_t excludes, fstream_t fstream)\r
+{\r
+ if(!excludes)\r
+ return EINVAL;\r
+ \r
+ if(excludes_contains(excludes, fstream))\r
+ return EEXIST;\r
+\r
+ xbt_dynar_push(excludes->items, &fstream);\r
+\r
+ return 0;\r
+}\r
+\r
+int\r
+excludes_check(excludes_t excludes, fstreams_t fstreams)\r
+{\r
+ fstream_t exclude;\r
+ fstream_t fstream;\r
+ int success = 1;\r
+ int exists;\r
+ unsigned int i;\r
+ \r
+ if(!excludes || !fstreams)\r
+ return EINVAL;\r
+ \r
+ \r
+ xbt_dynar_foreach(excludes->items, i, exclude)\r
+ {\r
+ exists = 1;\r
+\r
+ xbt_dynar_foreach(fstreams->items, i, fstream)\r
+ {\r
+ exists = 0;\r
+ \r
+ if(!strcmp(fstream->name, exclude->name) && !strcmp(fstream->directory, exclude->directory))\r
+ {\r
+ exists = 1;\r
+ break;\r
+ }\r
+ }\r
+\r
+ if(!exists)\r
+ {\r
+ success = 0;\r
+ WARN1("cannot exclude the file %s",exclude->name); \r
+ }\r
+ }\r
+ \r
+ return success;\r
+}\r
+\r
+int\r
+excludes_free(void** excludesptr)\r
+{\r
+ if(!(*excludesptr))\r
+ return EINVAL;\r
+ \r
+ if((*((excludes_t*)excludesptr))->items)\r
+ xbt_dynar_free((&(*((excludes_t*)excludesptr))->items));\r
+\r
+ free(*excludesptr);\r
+ *excludesptr = NULL; \r
+ \r
+ return 0;\r
+}\r