mirror of
https://github.com/owntone/owntone-server.git
synced 2025-02-03 09:56:00 -05:00
64-bit inode support
This commit is contained in:
parent
f36c8d20d0
commit
398988f566
@ -846,7 +846,7 @@ DAAP_BLOCK *daap_response_playlist_items(unsigned int playlist, char* metaStr, c
|
||||
DAAP_BLOCK *mlit;
|
||||
ENUMHANDLE henum;
|
||||
MP3FILE *current;
|
||||
int itemid;
|
||||
unsigned long int itemid;
|
||||
int g=1;
|
||||
unsigned long long meta;
|
||||
query_node_t* filter = 0;
|
||||
@ -914,7 +914,7 @@ DAAP_BLOCK *daap_response_playlist_items(unsigned int playlist, char* metaStr, c
|
||||
if(0 == filter || query_test(filter, current))
|
||||
{
|
||||
songs++;
|
||||
DPRINTF(E_DBG,L_DAAP|L_PL,"Adding itemid %d\n",itemid);
|
||||
DPRINTF(E_DBG,L_DAAP|L_PL,"Adding itemid %lu\n",itemid);
|
||||
mlit=daap_add_song_entry(mlcl,current,meta);
|
||||
if(0 != mlit) {
|
||||
if(wantsMeta(meta, metaContainerItemId)) // current->id?
|
||||
|
@ -46,7 +46,7 @@
|
||||
/*
|
||||
* Defines
|
||||
*/
|
||||
#define DB_VERSION 6
|
||||
#define DB_VERSION 7
|
||||
#define STRLEN(a) (a) ? strlen((a)) + 1 : 1
|
||||
#define MAYBEFREE(a) { if((a)) free((a)); };
|
||||
|
||||
@ -70,12 +70,12 @@ struct tag_mp3record {
|
||||
};
|
||||
|
||||
typedef struct tag_playlistentry {
|
||||
unsigned int id;
|
||||
unsigned long int id;
|
||||
struct tag_playlistentry *next;
|
||||
} DB_PLAYLISTENTRY;
|
||||
|
||||
typedef struct tag_playlist {
|
||||
unsigned int id;
|
||||
unsigned long int id;
|
||||
int songs;
|
||||
int is_smart;
|
||||
int found;
|
||||
@ -109,7 +109,7 @@ typedef struct tag_mp3packed {
|
||||
|
||||
char compilation;
|
||||
|
||||
unsigned int id; /* inode */
|
||||
unsigned long int id;
|
||||
|
||||
int path_len;
|
||||
int fname_len;
|
||||
@ -159,7 +159,7 @@ static int db_unlock(void);
|
||||
static void db_gdbmlock(void);
|
||||
static int db_gdbmunlock(void);
|
||||
|
||||
static DB_PLAYLIST *db_playlist_find(int playlistid);
|
||||
static DB_PLAYLIST *db_playlist_find(unsigned long int playlistid);
|
||||
|
||||
int db_start_initial_update(void);
|
||||
int db_end_initial_update(void);
|
||||
@ -169,21 +169,21 @@ int db_init();
|
||||
int db_deinit(void);
|
||||
int db_version(void);
|
||||
int db_add(MP3FILE *mp3file);
|
||||
int db_delete(int id);
|
||||
int db_delete_playlist(unsigned int playlistid);
|
||||
int db_add_playlist(unsigned int playlistid, char *name, int file_time, int is_smart);
|
||||
int db_add_playlist_song(unsigned int playlistid, unsigned int itemid);
|
||||
int db_delete(unsigned long int id);
|
||||
int db_delete_playlist(unsigned long int playlistid);
|
||||
int db_add_playlist(unsigned long int playlistid, char *name, int file_time, int is_smart);
|
||||
int db_add_playlist_song(unsigned long int playlistid, unsigned long int itemid);
|
||||
int db_unpackrecord(datum *pdatum, MP3FILE *pmp3);
|
||||
int db_scanning(void);
|
||||
datum *db_packrecord(MP3FILE *pmp3);
|
||||
|
||||
int db_get_song_count(void);
|
||||
int db_get_playlist_count(void);
|
||||
int db_get_playlist_is_smart(int playlistid);
|
||||
int db_get_playlist_entry_count(int playlistid);
|
||||
char *db_get_playlist_name(int playlistid);
|
||||
int db_get_playlist_is_smart(unsigned long int playlistid);
|
||||
int db_get_playlist_entry_count(unsigned long int playlistid);
|
||||
char *db_get_playlist_name(unsigned long int playlistid);
|
||||
|
||||
MP3FILE *db_find(int id);
|
||||
MP3FILE *db_find(unsigned long int id);
|
||||
|
||||
void db_dispose(MP3FILE *pmp3);
|
||||
int db_compare_rb_nodes(const void *pa, const void *pb, const void *cfg);
|
||||
@ -255,8 +255,8 @@ int db_gdbmunlock(void) {
|
||||
* compare redblack nodes, which are just ints
|
||||
*/
|
||||
int db_compare_rb_nodes(const void *pa, const void *pb, const void *cfg) {
|
||||
if(*(int*)pa < *(int *)pb) return -1;
|
||||
if(*(int*)pb < *(int *)pa) return 1;
|
||||
if(*(unsigned long int*)pa < *(unsigned long int *)pb) return -1;
|
||||
if(*(unsigned long int*)pb < *(unsigned long int *)pa) return 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -551,7 +551,7 @@ int db_is_empty(void) {
|
||||
* @param playlistid playlist to find
|
||||
* @returns DB_PLAYLIST of playlist, or null otherwise.
|
||||
*/
|
||||
DB_PLAYLIST *db_playlist_find(int playlistid) {
|
||||
DB_PLAYLIST *db_playlist_find(unsigned long int playlistid) {
|
||||
DB_PLAYLIST *current;
|
||||
|
||||
current=db_playlists.next;
|
||||
@ -570,12 +570,12 @@ DB_PLAYLIST *db_playlist_find(int playlistid) {
|
||||
*
|
||||
* @param playlistid playlist to delete
|
||||
*/
|
||||
int db_delete_playlist(unsigned int playlistid) {
|
||||
int db_delete_playlist(unsigned long int playlistid) {
|
||||
DB_PLAYLIST *plist;
|
||||
DB_PLAYLISTENTRY *pple;
|
||||
DB_PLAYLIST *last, *current;
|
||||
|
||||
DPRINTF(E_DBG,L_PL,"Deleting playlist %d\n",playlistid);
|
||||
DPRINTF(E_DBG,L_PL,"Deleting playlist %ld\n",playlistid);
|
||||
|
||||
db_writelock();
|
||||
|
||||
@ -620,7 +620,7 @@ int db_delete_playlist(unsigned int playlistid) {
|
||||
* @param playlistid playlist to check (inode)
|
||||
* @returns file_time of playlist, or 0 if no playlist
|
||||
*/
|
||||
int db_playlist_last_modified(int playlistid) {
|
||||
int db_playlist_last_modified(unsigned long int playlistid) {
|
||||
DB_PLAYLIST *plist;
|
||||
int file_time;
|
||||
|
||||
@ -644,7 +644,7 @@ int db_playlist_last_modified(int playlistid) {
|
||||
*
|
||||
* Add a new playlist
|
||||
*/
|
||||
int db_add_playlist(unsigned int playlistid, char *name, int file_time, int is_smart) {
|
||||
int db_add_playlist(unsigned long int playlistid, char *name, int file_time, int is_smart) {
|
||||
int err;
|
||||
DB_PLAYLIST *pnew;
|
||||
|
||||
@ -687,7 +687,7 @@ int db_add_playlist(unsigned int playlistid, char *name, int file_time, int is_s
|
||||
* FIXME: as db_add playlist, this assumes we already have a writelock from
|
||||
* db_udpate_mode.
|
||||
*/
|
||||
int db_add_playlist_song(unsigned int playlistid, unsigned int itemid) {
|
||||
int db_add_playlist_song(unsigned long int playlistid, unsigned long int itemid) {
|
||||
DB_PLAYLIST *current;
|
||||
DB_PLAYLISTENTRY *pnew;
|
||||
int err;
|
||||
@ -699,7 +699,7 @@ int db_add_playlist_song(unsigned int playlistid, unsigned int itemid) {
|
||||
pnew->id=itemid;
|
||||
pnew->next=NULL;
|
||||
|
||||
DPRINTF(E_DBG,L_DB|L_PL,"Adding item %d to %d\n",itemid,playlistid);
|
||||
DPRINTF(E_DBG,L_DB|L_PL,"Adding item %ld to %ld\n",itemid,playlistid);
|
||||
|
||||
db_writelock();
|
||||
|
||||
@ -977,7 +977,7 @@ int db_add(MP3FILE *pmp3) {
|
||||
datum *pnew;
|
||||
datum dkey;
|
||||
MP3PACKED *ppacked;
|
||||
unsigned int id;
|
||||
unsigned long int id;
|
||||
|
||||
DPRINTF(E_DBG,L_DB,"Adding %s\n",pmp3->path);
|
||||
|
||||
@ -988,7 +988,7 @@ int db_add(MP3FILE *pmp3) {
|
||||
|
||||
/* insert the datum into the underlying database */
|
||||
dkey.dptr=(void*)&(pmp3->id);
|
||||
dkey.dsize=sizeof(unsigned int);
|
||||
dkey.dsize=sizeof(unsigned long int);
|
||||
|
||||
/* dummy this up in case the client didn't */
|
||||
ppacked=(MP3PACKED *)pnew->dptr;
|
||||
@ -1008,10 +1008,10 @@ int db_add(MP3FILE *pmp3) {
|
||||
}
|
||||
db_gdbmunlock();
|
||||
|
||||
DPRINTF(E_DBG,L_DB,"Testing for %d\n",pmp3->id);
|
||||
DPRINTF(E_DBG,L_DB,"Testing for %lu\n",pmp3->id);
|
||||
id=pmp3->id;
|
||||
dkey.dptr=(void*)&id;
|
||||
dkey.dsize=sizeof(unsigned int);
|
||||
dkey.dsize=sizeof(unsigned long int);
|
||||
|
||||
db_gdbmlock();
|
||||
if(!gdbm_exists(db_songs,dkey)) {
|
||||
@ -1297,7 +1297,7 @@ ENUMHANDLE db_playlist_enum_begin(void) {
|
||||
*
|
||||
* Start enumerating playlist items
|
||||
*/
|
||||
ENUMHANDLE db_playlist_items_enum_begin(int playlistid) {
|
||||
ENUMHANDLE db_playlist_items_enum_begin(unsigned long int playlistid) {
|
||||
DB_PLAYLIST *current;
|
||||
int err;
|
||||
|
||||
@ -1384,12 +1384,12 @@ int db_playlist_items_enum_end(ENUMHANDLE handle) {
|
||||
*
|
||||
* Find a MP3FILE entry based on file id
|
||||
*/
|
||||
MP3FILE *db_find(int id) { /* FIXME: Not reentrant */
|
||||
MP3FILE *db_find(unsigned long int id) { /* FIXME: Not reentrant */
|
||||
MP3FILE *pmp3=NULL;
|
||||
datum key, content;
|
||||
|
||||
key.dptr=(char*)&id;
|
||||
key.dsize=sizeof(int);
|
||||
key.dptr=(void *)&id;
|
||||
key.dsize=sizeof(unsigned long int);
|
||||
|
||||
db_readlock();
|
||||
|
||||
@ -1399,7 +1399,7 @@ MP3FILE *db_find(int id) { /* FIXME: Not reentrant */
|
||||
|
||||
MEMNOTIFY(content.dptr);
|
||||
if(!content.dptr) {
|
||||
DPRINTF(E_DBG,L_DB,"Could not find id %d\n",id);
|
||||
DPRINTF(E_DBG,L_DB,"Could not find id %ld\n",id);
|
||||
db_unlock();
|
||||
return NULL;
|
||||
}
|
||||
@ -1453,7 +1453,7 @@ int db_get_song_count(void) {
|
||||
*
|
||||
* return whether or not the playlist is a "smart" playlist
|
||||
*/
|
||||
int db_get_playlist_is_smart(int playlistid) {
|
||||
int db_get_playlist_is_smart(unsigned long int playlistid) {
|
||||
DB_PLAYLIST *current;
|
||||
int err;
|
||||
int result;
|
||||
@ -1479,7 +1479,7 @@ int db_get_playlist_is_smart(int playlistid) {
|
||||
*
|
||||
* return the number of songs in a particular playlist
|
||||
*/
|
||||
int db_get_playlist_entry_count(int playlistid) {
|
||||
int db_get_playlist_entry_count(unsigned long int playlistid) {
|
||||
int count;
|
||||
DB_PLAYLIST *current;
|
||||
int err;
|
||||
@ -1505,7 +1505,7 @@ int db_get_playlist_entry_count(int playlistid) {
|
||||
*
|
||||
* return the name of a playlist
|
||||
*/
|
||||
char *db_get_playlist_name(int playlistid) {
|
||||
char *db_get_playlist_name(unsigned long int playlistid) {
|
||||
char *name;
|
||||
DB_PLAYLIST *current;
|
||||
int err;
|
||||
@ -1532,15 +1532,15 @@ char *db_get_playlist_name(int playlistid) {
|
||||
*
|
||||
* Check if a particular ID exists or not
|
||||
*/
|
||||
int db_exists(int id) {
|
||||
int *node;
|
||||
int db_exists(unsigned long int id) {
|
||||
unsigned long int *node;
|
||||
int err;
|
||||
MP3FILE *pmp3;
|
||||
datum key,content;
|
||||
|
||||
DPRINTF(E_DBG,L_DB,"Checking if node %d in db\n",id);
|
||||
key.dptr=(char*)&id;
|
||||
key.dsize=sizeof(int);
|
||||
DPRINTF(E_DBG,L_DB,"Checking if node %lu in db\n",id);
|
||||
key.dptr=(void *)&id;
|
||||
key.dsize=sizeof(unsigned long int);
|
||||
|
||||
db_readlock();
|
||||
|
||||
@ -1557,9 +1557,9 @@ int db_exists(int id) {
|
||||
|
||||
if(db_update_mode) {
|
||||
/* knock it off the maybe list */
|
||||
node = (int*)rbdelete((void*)&id,db_removed);
|
||||
node = (unsigned long int*)rbdelete((void*)&id,db_removed);
|
||||
if(node) {
|
||||
DPRINTF(E_DBG,L_DB,"Knocked node %d from the list\n",*node);
|
||||
DPRINTF(E_DBG,L_DB,"Knocked node %lu from the list\n",*node);
|
||||
free(node);
|
||||
}
|
||||
}
|
||||
@ -1577,10 +1577,10 @@ int db_exists(int id) {
|
||||
*
|
||||
* See when the file was last updated in the database
|
||||
*/
|
||||
int db_last_modified(int id) {
|
||||
int db_last_modified(unsigned long int id) {
|
||||
int retval;
|
||||
MP3FILE *pmp3;
|
||||
int err;
|
||||
// int err;
|
||||
|
||||
/* readlocked as part of db_find */
|
||||
pmp3=db_find(id);
|
||||
@ -1604,18 +1604,18 @@ int db_last_modified(int id) {
|
||||
* Delete an item from the database, and also remove it
|
||||
* from any playlists.
|
||||
*/
|
||||
int db_delete(int id) {
|
||||
int db_delete(unsigned long int id) {
|
||||
int err;
|
||||
datum key;
|
||||
DB_PLAYLIST *pcurrent;
|
||||
DB_PLAYLISTENTRY *phead, *ptail;
|
||||
|
||||
DPRINTF(E_DBG,L_DB,"Removing item %d\n",id);
|
||||
DPRINTF(E_DBG,L_DB,"Removing item %lu\n",id);
|
||||
|
||||
if(db_exists(id)) {
|
||||
db_writelock();
|
||||
key.dptr=(void*)&id;
|
||||
key.dsize=sizeof(int);
|
||||
key.dsize=sizeof(unsigned long int);
|
||||
db_gdbmlock();
|
||||
gdbm_delete(db_songs,key);
|
||||
db_gdbmunlock();
|
||||
@ -1633,7 +1633,7 @@ int db_delete(int id) {
|
||||
}
|
||||
|
||||
if(phead) { /* found it */
|
||||
DPRINTF(E_DBG,L_DB|L_PL,"Removing from playlist %d\n",
|
||||
DPRINTF(E_DBG,L_DB|L_PL,"Removing from playlist %lu\n",
|
||||
pcurrent->id);
|
||||
if(phead == pcurrent->nodes) {
|
||||
pcurrent->nodes=phead->next;
|
||||
|
@ -34,36 +34,36 @@ extern int db_init(void);
|
||||
extern int db_deinit(void);
|
||||
extern int db_version(void);
|
||||
extern int db_add(MP3FILE *mp3file);
|
||||
extern int db_delete(int id);
|
||||
extern int db_add_playlist(unsigned int playlistid, char *name, int file_time, int is_smart);
|
||||
extern int db_add_playlist_song(unsigned int playlistid, unsigned int itemid);
|
||||
extern int db_delete_playlist(unsigned int playlistid);
|
||||
extern int db_delete(unsigned long int id);
|
||||
extern int db_add_playlist(unsigned long int playlistid, char *name, int file_time, int is_smart);
|
||||
extern int db_add_playlist_song(unsigned long int playlistid, unsigned long int itemid);
|
||||
extern int db_delete_playlist(unsigned long int playlistid);
|
||||
|
||||
extern ENUMHANDLE db_enum_begin(void);
|
||||
extern MP3FILE *db_enum(ENUMHANDLE *handle);
|
||||
extern int db_enum_end(ENUMHANDLE handle);
|
||||
extern MP3FILE *db_find(int id);
|
||||
extern MP3FILE *db_find(unsigned long int id);
|
||||
extern void db_dispose(MP3FILE *pmp3); /* must be called after a db_find */
|
||||
|
||||
extern int db_get_song_count(void);
|
||||
extern int db_get_playlist_count(void);
|
||||
extern int db_get_playlist_entry_count(int playlistid);
|
||||
extern int db_get_playlist_is_smart(int playlistid);
|
||||
extern int db_get_playlist_entry_count(unsigned long int playlistid);
|
||||
extern int db_get_playlist_is_smart(unsigned long int playlistid);
|
||||
|
||||
extern ENUMHANDLE db_playlist_enum_begin(void);
|
||||
extern int db_playlist_enum(ENUMHANDLE *current);
|
||||
extern int db_playlist_enum_end(ENUMHANDLE handle);
|
||||
|
||||
extern ENUMHANDLE db_playlist_items_enum_begin(int playlistid);
|
||||
extern ENUMHANDLE db_playlist_items_enum_begin(unsigned long int playlistid);
|
||||
extern int db_playlist_items_enum(ENUMHANDLE *current);
|
||||
extern int db_playlist_items_enum_end(ENUMHANDLE handle);
|
||||
|
||||
extern char *db_get_playlist_name(int playlistid);
|
||||
extern int db_playlist_last_modified(int playlistid);
|
||||
extern char *db_get_playlist_name(unsigned long int playlistid);
|
||||
extern int db_playlist_last_modified(unsigned long int playlistid);
|
||||
extern int db_scanning(void);
|
||||
|
||||
/* For persistant databases only */
|
||||
extern int db_exists(int id);
|
||||
extern int db_last_modified(int id);
|
||||
extern int db_exists(unsigned long int id);
|
||||
extern int db_last_modified(unsigned long int id);
|
||||
|
||||
#endif /* _DB_MEMORY_H_ */
|
||||
|
@ -59,8 +59,8 @@ typedef struct tag_mp3file {
|
||||
int bpm; /* TBPM */
|
||||
|
||||
int got_id3;
|
||||
unsigned int id;
|
||||
|
||||
// unsigned int id;
|
||||
unsigned long int id;
|
||||
/* generated fields */
|
||||
char* description; /* long file type */
|
||||
int item_kind; /* song or movie */
|
||||
|
Loading…
x
Reference in New Issue
Block a user