From c7d42bbbd7641c8e9e06b28000c4c02c2ee36d21 Mon Sep 17 00:00:00 2001 From: Jerome Kuptz Date: Sun, 20 Jul 2003 21:29:16 +0000 Subject: update to the api to allow fetching of currently playing id3 struct. Adding the favorites plugin. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@3854 a1c6a512-1295-4272-9138-f99709370657 --- apps/plugins/favorites.c | 51 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 apps/plugins/favorites.c (limited to 'apps/plugins/favorites.c') diff --git a/apps/plugins/favorites.c b/apps/plugins/favorites.c new file mode 100644 index 0000000000..59001647ac --- /dev/null +++ b/apps/plugins/favorites.c @@ -0,0 +1,51 @@ +#include "plugin.h" +#define FAVORITES_FILE "/favorites.m3u" + +static struct plugin_api* rb; + +enum plugin_status plugin_start(struct plugin_api* api, void* parameter) +{ + struct mp3entry* id3; + char track_path[MAX_PATH+1]; + int fd, seek, result, len; + + /* this macro should be called as the first thing you do in the plugin. + it test that the api version and model the plugin was compiled for + matches the machine it is running on */ + TEST_PLUGIN_API(api); + + /* if you don't use the parameter, you can do like + this to avoid the compiler warning about it */ + (void)parameter; + + rb = api; + + id3 = rb->mpeg_current_track(); + if (!id3) + return PLUGIN_ERROR; + + fd = rb->open(FAVORITES_FILE, O_WRONLY); + + // creat the file if it does not return on open. + if (fd < 0) + fd = rb->creat(FAVORITES_FILE, 0); + + if (fd > 0) { + rb->strcpy(track_path, id3->path); + len = rb->strlen(track_path); + + // seek to the end of file + seek = rb->lseek(fd, 0, SEEK_END); + // append the current mp3 path + track_path[len] = '\n'; + result = rb->write(fd, track_path, len + 1); + track_path[len] = '\0'; + rb->close(fd); + } + + rb->splash(HZ*2, 0, true, "Saved Favorite"); + + return PLUGIN_OK; +} + + -- cgit v1.2.3