diff options
author | Kalle Wallin <kaw@linux.se> | 2004-11-15 11:23:11 +0000 |
---|---|---|
committer | Kalle Wallin <kaw@linux.se> | 2004-11-15 11:23:11 +0000 |
commit | e3c905a56bcc1fed3848485201a4a434aa9fc162 (patch) | |
tree | aed87e32dc8c39473fa86b3d11d2048a06ac055f /src/mpdclient.c | |
parent | 41d25e22f8b3fabc954d5b58db6d1d36706aa418 (diff) | |
download | mpd-e3c905a56bcc1fed3848485201a4a434aa9fc162.tar.gz mpd-e3c905a56bcc1fed3848485201a4a434aa9fc162.tar.xz mpd-e3c905a56bcc1fed3848485201a4a434aa9fc162.zip |
Added a search screen
git-svn-id: https://svn.musicpd.org/ncmpc/trunk@2668 09075e82-0dd4-0310-85a5-a0d7c8717e4f
Diffstat (limited to 'src/mpdclient.c')
-rw-r--r-- | src/mpdclient.c | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/src/mpdclient.c b/src/mpdclient.c index 1f7c73790..7cec3c967 100644 --- a/src/mpdclient.c +++ b/src/mpdclient.c @@ -819,6 +819,8 @@ mpdclient_filelist_free(mpdclient_filelist_t *filelist) GList *list = g_list_first(filelist->list); D("mpdclient_filelist_free()\n"); + if( list == NULL ) + return NULL; while( list!=NULL ) { filelist_entry_t *entry = list->data; @@ -881,6 +883,38 @@ mpdclient_filelist_get(mpdclient_t *c, gchar *path) } mpdclient_filelist_t * +mpdclient_filelist_search(mpdclient_t *c, int table, gchar *filter) +{ + mpdclient_filelist_t *filelist; + mpd_InfoEntity *entity; + gchar *filter_utf8 = locale_to_utf8(filter); + + D("mpdclient_filelist_filter(%s)\n", filter); + mpd_sendSearchCommand(c->connection, table, filter_utf8); + filelist = g_malloc0(sizeof(mpdclient_filelist_t)); + + while( (entity=mpd_getNextInfoEntity(c->connection)) ) + { + filelist_entry_t *entry = g_malloc0(sizeof(filelist_entry_t)); + + entry->entity = entity; + filelist->list = g_list_append(filelist->list, (gpointer) entry); + filelist->length++; + } + + if( mpdclient_finish_command(c) ) + { + g_free(filter_utf8); + return mpdclient_filelist_free(filelist); + } + + g_free(filter_utf8); + filelist->updated = TRUE; + + return filelist; +} + +mpdclient_filelist_t * mpdclient_filelist_update(mpdclient_t *c, mpdclient_filelist_t *filelist) { if( filelist != NULL ) |