Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
convert svn logs into ChangeLog (up to r7858 for now)
[simgrid.git] / tools / tesh2 / src / directories.c
1 #include <directories.h>\r
2 #include <directory.h>\r
3 \r XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(tesh);
4 \r\rdirectories_t \r directories_new(void) \r
5 {
6   \rdirectories_t directories = xbt_new0(s_directories_t, 1);
7   \r\rdirectories->items =
8       xbt_dynar_new(sizeof(directory_t), (void_f_pvoid_t) directory_free);
9   \r\rreturn directories;
10 \r}
11
12 \r\rint \r directories_get_size(directories_t directories) \r
13 {
14   \rif (!directories)
15     \r {
16     \rerrno = EINVAL;
17     \rreturn -1;
18     \r}
19   \r\rreturn xbt_dynar_length(directories->items);
20 \r}
21
22 \r\rint \r directories_is_empty(directories_t directories) \r
23 {
24   \rif (!directories)
25     \r {
26     \rerrno = EINVAL;
27     \rreturn -1;
28     \r}
29   \r\rreturn (0 == xbt_dynar_length(directories->items));
30 \r}
31
32 \r\rint \r directories_add(directories_t directories, directory_t directory) \r
33 {
34   \rdirectory_t cur;
35   \runsigned int i;
36   \r\rif (!directories)
37     \rreturn EINVAL;
38   \r\rxbt_dynar_foreach(directories->items, i, cur) \r {
39     \rif (!strcmp(cur->name, directory->name))
40       \rreturn EEXIST;
41   \r}
42   \r\rxbt_dynar_push(directories->items, &directory);
43   \r\rreturn 0;
44 \r}
45
46 \r\rint \r
47 directories_contains(directories_t directories, directory_t directory) \r
48 {
49   \rdirectory_t * cur;
50   \runsigned int i;
51   \r\rif (!directories)
52     \rreturn EINVAL;
53   \r\rxbt_dynar_foreach(directories->items, i, cur) \r {
54     \rif (!strcmp((*cur)->name, directory->name))
55       \rreturn 1;
56   \r}
57   \r\rreturn 0;
58 \r}
59
60 \r\rint \r
61 directories_load(directories_t directories, fstreams_t fstreams,
62                  xbt_dynar_t suffixes) \r
63 {
64   \rdirectory_t directory;
65   \rint rv;
66   \runsigned int i;
67   \r\rif (!directories || !fstreams || !suffixes)
68     \rreturn EINVAL;
69   \r\rxbt_dynar_foreach(directories->items, i, directory) \r {
70     \rif ((rv = directory_open(directory)))
71       \rreturn rv;
72     \r\rif ((rv = directory_load(directory, fstreams, suffixes)))
73       \rreturn rv;
74     \r\rif ((rv = directory_close(directory)))
75       \rreturn rv;
76   \r}
77   \r\rreturn 0;
78 \r}
79
80 \r\rint \r directories_free(void **directoriesptr) \r
81 {
82   \rdirectories_t directories;
83   \r\rif (!(*directoriesptr))
84     \rreturn EINVAL;
85   \r\rdirectories = (directories_t) (*directoriesptr);
86   \r\rif (directories->items)
87     \rxbt_dynar_free(&(directories->items));
88   \r\rfree(*directoriesptr);
89   \r*directoriesptr = NULL;
90   \r\rreturn 0;
91 \r}
92
93 \r