From afd41008dced7cb6bbba5898d3f48ec770bc6124 Mon Sep 17 00:00:00 2001 From: Ron Pedde Date: Tue, 19 Apr 2005 04:47:59 +0000 Subject: [PATCH] add m3ufile struct, functions for retrieving it --- src/dbs-sqlite.c | 46 ++++++++++++++++++++++++++++++++++++++++++++++ src/dbs-sqlite.h | 2 ++ src/mp3-scanner.h | 11 +++++++++++ 3 files changed, 59 insertions(+) diff --git a/src/dbs-sqlite.c b/src/dbs-sqlite.c index 561ec844..41bf5d2c 100644 --- a/src/dbs-sqlite.c +++ b/src/dbs-sqlite.c @@ -1194,7 +1194,19 @@ char *db_sqlite_strdup(const char *what) { return what ? (strlen(what) ? strdup(what) : NULL) : NULL; } +void db_sqlite_build_m3ufile(char **valarray, M3UFILE *pm3u) { + memset(pm3u,0x00,sizeof(M3UFILE)); + pm3u->id=db_sqlite_atoi(valarray[0]); + pm3u->title=db_sqlite_strdup(valarray[1]); + pm3u->type=db_sqlite_atoi(valarray[2]); + pm3u->items=db_sqlite_atoi(valarray[3]); + pm3u->query=db_sqlite_strdup(valarray[4]); + pm3u->db_timestamp=db_sqlite_atoi(valarray[5]); + pm3u->path=db_sqlite_strdup(valarray[6]); + pm3u->index=db_sqlite_atoi(valarray[7]); + return; +} void db_sqlite_build_mp3file(char **valarray, MP3FILE *pmp3) { memset(pmp3,0x00,sizeof(MP3FILE)); pmp3->id=db_sqlite_atoi(valarray[0]); @@ -1237,6 +1249,40 @@ void db_sqlite_build_mp3file(char **valarray, MP3FILE *pmp3) { pmp3->codectype=db_sqlite_strdup(valarray[37]); } +/** + * fetch a playlist by path + * + * \param path path to fetch + */ +M3UFILE *db_sqlite_fetch_playlist(char *path) { + int rows,cols; + char **resarray; + int result; + M3UFILE *pm3u; + + result = db_sqlite_get_table(E_DBG,&resarray,&rows,&cols, + "select * from playlists where path='%q'",path); + + if(result != DB_E_SUCCESS) + return NULL; + + if(rows != 0) { + pm3u=(M3UFILE*)malloc(sizeof(M3UFILE)); + if(!pm3u) + DPRINTF(E_FATAL,L_MISC,"malloc error in db_sqlite_fetch_playlist\n"); + + db_sqlite_build_m3ufile((char**)&resarray[cols],pm3u); + } + + db_sqlite_free_table(resarray); + + if((rows) && (db_sqlite_in_scan) && (!db_sqlite_reload)) { + // db_sqlite_exec(E_FATAL,"insert into updatedplaylists values (%d)",pm3u->id); + } + + return pm3u; +} + /** * fetch a MP3FILE for a specific id * diff --git a/src/dbs-sqlite.h b/src/dbs-sqlite.h index 61aac70c..89628658 100644 --- a/src/dbs-sqlite.h +++ b/src/dbs-sqlite.h @@ -36,7 +36,9 @@ extern int db_sqlite_end_scan(void); extern int db_sqlite_get_count(CountType_t type); extern MP3FILE *db_sqlite_fetch_item(int id); extern MP3FILE *db_sqlite_fetch_path(char *path); +extern M3UFILE *db_sqlite_fetch_playlist(char *path); extern void db_sqlite_dispose_item(MP3FILE *pmp3); +extern void db_sqlite_dispose_playlist(M3UFILE *pm3u); extern int db_sqlite_add_playlist(char *name, int type, char *clause, char *path, int *playlistid); extern int db_sqlite_add_playlist_item(int playlistid, int songid); diff --git a/src/mp3-scanner.h b/src/mp3-scanner.h index e93277f0..92e914dc 100644 --- a/src/mp3-scanner.h +++ b/src/mp3-scanner.h @@ -72,6 +72,17 @@ typedef struct tag_mp3file { char compilation; } MP3FILE; +typedef struct tag_m3ufile { + int id; /**< integer id (miid) */ + char *title; /**< playlist name as displayed in iTunes (minm) */ + int type; /**< 0=static webmanaged, 1=smart, 2=static m3u (aeSP/MPTY) */ + int items; /**< number of items (mimc) */ + char *query; /**< where clause if type 1 (MSPS) */ + int db_timestamp; /**< time last updated */ + char *path; /**< path of underlying playlist (if type 2) */ + int index; /**< index of playlist for paths with multiple playlists */ +} M3UFILE; + extern int scan_init(char *path); extern void make_composite_tags(MP3FILE *song);