Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Indent the rest of the code (examples, buildtools, doc...) except for examples/SMPI...
[simgrid.git] / tools / tesh2 / src / excludes.c
1 #include <excludes.h>\r
2 #include <fstream.h>\r
3 \r XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(tesh);
4 \r\rexcludes_t \r excludes_new(void) \r
5 {
6   \rexcludes_t excludes = xbt_new0(s_excludes_t, 1);
7   \r\rexcludes->items =
8       xbt_dynar_new(sizeof(fstream_t), (void_f_pvoid_t) fstream_free);
9   \r\rreturn excludes;
10 \r}
11
12 \r\rint \r excludes_is_empty(excludes_t excludes) \r
13 {
14   \rif (!excludes)
15     \r {
16     \rerrno = EINVAL;
17     \rreturn 0;
18     \r}
19   \r\rreturn (0 == xbt_dynar_length(excludes->items));
20 \r}
21
22 \r\rint \r excludes_contains(excludes_t excludes, fstream_t fstream) \r
23 {
24   \rfstream_t cur;
25   \runsigned int i;
26   \r\rif (!excludes || !fstream)
27     \r {
28     \rerrno = EINVAL;
29     \rreturn 0;
30     \r}
31   \r\rxbt_dynar_foreach(excludes->items, i, cur) \r {
32     \rif (!strcmp(fstream->name, cur->name)
33          && !strcmp(fstream->directory, cur->directory))
34       \rreturn 1;
35   \r}
36   \r\rreturn 0;
37 \r}
38
39 \r\rint \r excludes_add(excludes_t excludes, fstream_t fstream) \r
40 {
41   \rif (!excludes)
42     \rreturn EINVAL;
43   \r\rif (excludes_contains(excludes, fstream))
44     \rreturn EEXIST;
45   \r\rxbt_dynar_push(excludes->items, &fstream);
46   \r\rreturn 0;
47 \r}
48
49 \r\rint \r excludes_check(excludes_t excludes, fstreams_t fstreams) \r
50 {
51   \rfstream_t exclude;
52   \rfstream_t fstream;
53   \rint success = 1;
54   \rint exists;
55   \runsigned int i;
56   \r\rif (!excludes || !fstreams)
57     \rreturn EINVAL;
58   \r\r\rxbt_dynar_foreach(excludes->items, i, exclude) \r {
59     \rexists = 1;
60     \r\rxbt_dynar_foreach(fstreams->items, i, fstream) \r {
61       \rexists = 0;
62       \r\rif (!strcmp(fstream->name, exclude->name)
63             && !strcmp(fstream->directory, exclude->directory))
64         \r {
65         \rexists = 1;
66         \rbreak;
67         \r}
68     \r}
69     \r\rif (!exists)
70       \r {
71       \rsuccess = 0;
72       \rWARN1("cannot exclude the file %s", exclude->name);
73       \r}
74   \r}
75   \r\rreturn success;
76 \r}
77
78 \r\rint \r excludes_free(void **excludesptr) \r
79 {
80   \rif (!(*excludesptr))
81     \rreturn EINVAL;
82   \r\rif ((*((excludes_t *) excludesptr))->items)
83     \rxbt_dynar_free((&(*((excludes_t *) excludesptr))->items));
84   \r\rfree(*excludesptr);
85   \r*excludesptr = NULL;
86   \r\rreturn 0;
87 \r}
88
89 \r