Rockbox mail archiveSubject: [PATCH] First shot of a seek function
[PATCH] First shot of a seek function
From: François-Xavier Houard <idefx_at_iname.com>
Date: Mon, 2 Sep 2002 11:35:24 +0200
I've worked in creating a fonction to search text entry in id3 and
there is no UI for the moment, just 2 function, Menu seek(void) and void seek_next(char *pattern, DIR dir) (seek is used to call seek_next)
so, seek may contain the input UI when it'll be ready (if someone
want's to make it, would be nice, i'm quite out of time for the
moment...), and seek_next take a string pattern, a dir handler, and look
for the next entry containing each token of the pattern, in album, title,
artist fields, or in filename. For the moment, the token delimitor is ' ',
but it is very easy to change, it will depend on what the input UI will
propose. The seek is case insensitive.
Just a few example to help:
seek_next("my",dir) will show the next entry in "dir", containing "my"
either in filename, title, artist, or album. next call to
seek_next("my",dir) will find the next entry corresponding (so, seek_next
change the dir argument).
a call to:
seek_next("my gate",dir) will find song including "my" and "gate" in one of a
field already told. So, it will find the song whose id3 is:
Song:"my gate is blue"
Song:"my favorite gate"
So, space char is considered as a delimitor, which can very easily been
change, if the input UI enable to use a special char as a delimitor, so,
this way, sarching for "my gate" will only get the first entry, wheras
searching for "my|gate" (where '|' is the delimitor) will get all the entry
The function works, except if it doesn't find any entry (segfault), but i
don't know how to detect end of the tree. And for the moment, there is no
input interface, and the function just show the filename, title, artist and
album. So, would be nice to create a "result" UI which will show filename,
and let people choose if they want to play the song, or search for the next
That's all. I attach the patch. The code is quite dirty, if anyone has some
suggestion to make about it (or wan't to code one of the 2 UI still
needed;), it would be nice ;)