diff options
Diffstat (limited to 'tests/utils/arequal-checksum.c')
| -rw-r--r-- | tests/utils/arequal-checksum.c | 37 | 
1 files changed, 31 insertions, 6 deletions
diff --git a/tests/utils/arequal-checksum.c b/tests/utils/arequal-checksum.c index d97c6d4f656..9fdd60c6d2b 100644 --- a/tests/utils/arequal-checksum.c +++ b/tests/utils/arequal-checksum.c @@ -45,7 +45,6 @@   */  #ifndef FTW_ACTIONRETVAL  #define FTW_ACTIONRETVAL 0 -#define FTW_SKIP_SUBTREE 0  #endif  int debug = 0; @@ -457,6 +456,20 @@ process_other (const char *path, const struct stat *sb)          return 0;  } +static int +ignore_entry(const char *bname, const char *dname) +{ +        int i; + +	for (i  = 0; i < arequal_config.directories_ignored; i++) { +		if (strcmp(bname, arequal_config.ignored_directory[i]) == 0 && +                    strncmp(arequal_config.test_directory, dname, +                            strlen(arequal_config.test_directory)) == 0) +                        return 1; +        } + +        return 0; +}  int  process_entry (const char *path, const struct stat *sb, @@ -485,6 +498,21 @@ process_entry (const char *path, const struct stat *sb,          */          if (arequal_config.ignored_directory) { +#ifndef FTW_SKIP_SUBTREE +                char *cp; + +                name = strdup (path); +                dname = dirname (name); + +                for (cp = strtok(name, "/"); cp; cp = strtok(NULL, "/")) { +                        if (ignore_entry(cp, dname)) { +                                DBG ("ignoring %s\n", path); +                                if (name) +                                        free (name); +                                return 0; +                        } +                } +#else /* FTW_SKIP_SUBTREE */                  name = strdup (path);                  name[strlen(name)] = '\0'; @@ -494,17 +522,14 @@ process_entry (const char *path, const struct stat *sb,                          bname++;                  dname = dirname (name); -                for ( i = 0; i < arequal_config.directories_ignored; i++) { -                        if ((strcmp (bname, arequal_config.ignored_directory[i]) -                             == 0) && (strcmp (arequal_config.test_directory, -                                               dname) == 0)) { +                if (ignore_entry(bname, dname)) {                                  DBG ("ignoring %s\n", bname);                                  ret = FTW_SKIP_SUBTREE;                                  if (name)                                          free (name);                                  return ret; -                        }                  } +#endif /* FTW_SKIP_SUBTREE */          }          DBG ("processing entry %s\n", path);  | 
