aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/filelist.c19
-rw-r--r--src/filelist.h3
2 files changed, 22 insertions, 0 deletions
diff --git a/src/filelist.c b/src/filelist.c
index 46137cd3b..415eec402 100644
--- a/src/filelist.c
+++ b/src/filelist.c
@@ -139,3 +139,22 @@ filelist_find_song(struct filelist *fl, const struct mpd_song *song)
return NULL;
}
+
+int
+filelist_find_directory(struct filelist *filelist, const char *name)
+{
+ guint i;
+
+ assert(name != NULL);
+
+ for (i = 0; i < filelist_length(filelist); ++i) {
+ struct filelist_entry *entry = filelist_get(filelist, i);
+ mpd_InfoEntity *entity = entry->entity;
+
+ if (entity && entity->type == MPD_INFO_ENTITY_TYPE_DIRECTORY &&
+ strcmp(entity->info.directory->path, name) == 0)
+ return i;
+ }
+
+ return -1;
+}
diff --git a/src/filelist.h b/src/filelist.h
index 85e551fc3..d7d4dff88 100644
--- a/src/filelist.h
+++ b/src/filelist.h
@@ -76,4 +76,7 @@ filelist_sort(struct filelist *filelist, GCompareFunc compare_func);
struct filelist_entry *
filelist_find_song(struct filelist *flist, const struct mpd_song *song);
+int
+filelist_find_directory(struct filelist *filelist, const char *name);
+
#endif