Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
some new files used to check Tesh
[simgrid.git] / tools / tesh2 / src / excludes.c
index 3329974..ddfe0e1 100644 (file)
-#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