diff --git a/job.c b/job.c index cd32e0b8c..7324dbfdd 100644 --- a/job.c +++ b/job.c @@ -283,6 +283,11 @@ static void add_dir(const char *dirname, const char *root) struct dir_entry *ent; int size; + if (strcmp(name, ".nomusic") == 0 || strcmp(name, ".nomedia") == 0) { + ptr_array_clear(&array); + break; + } + if (name[0] == '.') continue; diff --git a/load_dir.h b/load_dir.h index eb5cd0948..c36968788 100644 --- a/load_dir.h +++ b/load_dir.h @@ -82,4 +82,17 @@ static inline void ptr_array_unique(struct ptr_array *array, array->count = j; } +static inline void ptr_array_clear(struct ptr_array *array) +{ + void **ptrs = array->ptrs; + + for (int i = 0; i != array->count; i++) { + free(ptrs[i]); + } + free(ptrs); + array->ptrs = NULL; + array->alloc = 0; + array->count = 0; +} + #endif