64-bit inode support

This commit is contained in:
Ron Pedde 2004-12-08 03:21:12 +00:00
parent f36c8d20d0
commit 398988f566
4 changed files with 64 additions and 64 deletions

View File

@ -846,7 +846,7 @@ DAAP_BLOCK *daap_response_playlist_items(unsigned int playlist, char* metaStr, c
DAAP_BLOCK *mlit; DAAP_BLOCK *mlit;
ENUMHANDLE henum; ENUMHANDLE henum;
MP3FILE *current; MP3FILE *current;
int itemid; unsigned long int itemid;
int g=1; int g=1;
unsigned long long meta; unsigned long long meta;
query_node_t* filter = 0; 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)) if(0 == filter || query_test(filter, current))
{ {
songs++; 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); mlit=daap_add_song_entry(mlcl,current,meta);
if(0 != mlit) { if(0 != mlit) {
if(wantsMeta(meta, metaContainerItemId)) // current->id? if(wantsMeta(meta, metaContainerItemId)) // current->id?

View File

@ -46,7 +46,7 @@
/* /*
* Defines * Defines
*/ */
#define DB_VERSION 6 #define DB_VERSION 7
#define STRLEN(a) (a) ? strlen((a)) + 1 : 1 #define STRLEN(a) (a) ? strlen((a)) + 1 : 1
#define MAYBEFREE(a) { if((a)) free((a)); }; #define MAYBEFREE(a) { if((a)) free((a)); };
@ -70,12 +70,12 @@ struct tag_mp3record {
}; };
typedef struct tag_playlistentry { typedef struct tag_playlistentry {
unsigned int id; unsigned long int id;
struct tag_playlistentry *next; struct tag_playlistentry *next;
} DB_PLAYLISTENTRY; } DB_PLAYLISTENTRY;
typedef struct tag_playlist { typedef struct tag_playlist {
unsigned int id; unsigned long int id;
int songs; int songs;
int is_smart; int is_smart;
int found; int found;
@ -109,7 +109,7 @@ typedef struct tag_mp3packed {
char compilation; char compilation;
unsigned int id; /* inode */ unsigned long int id;
int path_len; int path_len;
int fname_len; int fname_len;
@ -159,7 +159,7 @@ static int db_unlock(void);
static void db_gdbmlock(void); static void db_gdbmlock(void);
static int db_gdbmunlock(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_start_initial_update(void);
int db_end_initial_update(void); int db_end_initial_update(void);
@ -169,21 +169,21 @@ int db_init();
int db_deinit(void); int db_deinit(void);
int db_version(void); int db_version(void);
int db_add(MP3FILE *mp3file); int db_add(MP3FILE *mp3file);
int db_delete(int id); int db_delete(unsigned long int id);
int db_delete_playlist(unsigned int playlistid); int db_delete_playlist(unsigned long int playlistid);
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 db_add_playlist_song(unsigned int playlistid, unsigned int itemid); int db_add_playlist_song(unsigned long int playlistid, unsigned long int itemid);
int db_unpackrecord(datum *pdatum, MP3FILE *pmp3); int db_unpackrecord(datum *pdatum, MP3FILE *pmp3);
int db_scanning(void); int db_scanning(void);
datum *db_packrecord(MP3FILE *pmp3); datum *db_packrecord(MP3FILE *pmp3);
int db_get_song_count(void); int db_get_song_count(void);
int db_get_playlist_count(void); int db_get_playlist_count(void);
int db_get_playlist_is_smart(int playlistid); int db_get_playlist_is_smart(unsigned long int playlistid);
int db_get_playlist_entry_count(int playlistid); int db_get_playlist_entry_count(unsigned long int playlistid);
char *db_get_playlist_name(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); void db_dispose(MP3FILE *pmp3);
int db_compare_rb_nodes(const void *pa, const void *pb, const void *cfg); 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 * compare redblack nodes, which are just ints
*/ */
int db_compare_rb_nodes(const void *pa, const void *pb, const void *cfg) { int db_compare_rb_nodes(const void *pa, const void *pb, const void *cfg) {
if(*(int*)pa < *(int *)pb) return -1; if(*(unsigned long int*)pa < *(unsigned long int *)pb) return -1;
if(*(int*)pb < *(int *)pa) return 1; if(*(unsigned long int*)pb < *(unsigned long int *)pa) return 1;
return 0; return 0;
} }
@ -551,7 +551,7 @@ int db_is_empty(void) {
* @param playlistid playlist to find * @param playlistid playlist to find
* @returns DB_PLAYLIST of playlist, or null otherwise. * @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; DB_PLAYLIST *current;
current=db_playlists.next; current=db_playlists.next;
@ -570,12 +570,12 @@ DB_PLAYLIST *db_playlist_find(int playlistid) {
* *
* @param playlistid playlist to delete * @param playlistid playlist to delete
*/ */
int db_delete_playlist(unsigned int playlistid) { int db_delete_playlist(unsigned long int playlistid) {
DB_PLAYLIST *plist; DB_PLAYLIST *plist;
DB_PLAYLISTENTRY *pple; DB_PLAYLISTENTRY *pple;
DB_PLAYLIST *last, *current; 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(); db_writelock();
@ -620,7 +620,7 @@ int db_delete_playlist(unsigned int playlistid) {
* @param playlistid playlist to check (inode) * @param playlistid playlist to check (inode)
* @returns file_time of playlist, or 0 if no playlist * @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; DB_PLAYLIST *plist;
int file_time; int file_time;
@ -644,7 +644,7 @@ int db_playlist_last_modified(int playlistid) {
* *
* Add a new playlist * 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; int err;
DB_PLAYLIST *pnew; 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 * FIXME: as db_add playlist, this assumes we already have a writelock from
* db_udpate_mode. * 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_PLAYLIST *current;
DB_PLAYLISTENTRY *pnew; DB_PLAYLISTENTRY *pnew;
int err; int err;
@ -699,7 +699,7 @@ int db_add_playlist_song(unsigned int playlistid, unsigned int itemid) {
pnew->id=itemid; pnew->id=itemid;
pnew->next=NULL; 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(); db_writelock();
@ -977,7 +977,7 @@ int db_add(MP3FILE *pmp3) {
datum *pnew; datum *pnew;
datum dkey; datum dkey;
MP3PACKED *ppacked; MP3PACKED *ppacked;
unsigned int id; unsigned long int id;
DPRINTF(E_DBG,L_DB,"Adding %s\n",pmp3->path); 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 */ /* insert the datum into the underlying database */
dkey.dptr=(void*)&(pmp3->id); 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 */ /* dummy this up in case the client didn't */
ppacked=(MP3PACKED *)pnew->dptr; ppacked=(MP3PACKED *)pnew->dptr;
@ -1008,10 +1008,10 @@ int db_add(MP3FILE *pmp3) {
} }
db_gdbmunlock(); 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; id=pmp3->id;
dkey.dptr=(void*)&id; dkey.dptr=(void*)&id;
dkey.dsize=sizeof(unsigned int); dkey.dsize=sizeof(unsigned long int);
db_gdbmlock(); db_gdbmlock();
if(!gdbm_exists(db_songs,dkey)) { if(!gdbm_exists(db_songs,dkey)) {
@ -1297,7 +1297,7 @@ ENUMHANDLE db_playlist_enum_begin(void) {
* *
* Start enumerating playlist items * 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; DB_PLAYLIST *current;
int err; int err;
@ -1384,12 +1384,12 @@ int db_playlist_items_enum_end(ENUMHANDLE handle) {
* *
* Find a MP3FILE entry based on file id * 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; MP3FILE *pmp3=NULL;
datum key, content; datum key, content;
key.dptr=(char*)&id; key.dptr=(void *)&id;
key.dsize=sizeof(int); key.dsize=sizeof(unsigned long int);
db_readlock(); db_readlock();
@ -1399,7 +1399,7 @@ MP3FILE *db_find(int id) { /* FIXME: Not reentrant */
MEMNOTIFY(content.dptr); MEMNOTIFY(content.dptr);
if(!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(); db_unlock();
return NULL; return NULL;
} }
@ -1453,7 +1453,7 @@ int db_get_song_count(void) {
* *
* return whether or not the playlist is a "smart" playlist * 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; DB_PLAYLIST *current;
int err; int err;
int result; int result;
@ -1479,7 +1479,7 @@ int db_get_playlist_is_smart(int playlistid) {
* *
* return the number of songs in a particular playlist * 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; int count;
DB_PLAYLIST *current; DB_PLAYLIST *current;
int err; int err;
@ -1505,7 +1505,7 @@ int db_get_playlist_entry_count(int playlistid) {
* *
* return the name of a playlist * return the name of a playlist
*/ */
char *db_get_playlist_name(int playlistid) { char *db_get_playlist_name(unsigned long int playlistid) {
char *name; char *name;
DB_PLAYLIST *current; DB_PLAYLIST *current;
int err; int err;
@ -1532,15 +1532,15 @@ char *db_get_playlist_name(int playlistid) {
* *
* Check if a particular ID exists or not * Check if a particular ID exists or not
*/ */
int db_exists(int id) { int db_exists(unsigned long int id) {
int *node; unsigned long int *node;
int err; int err;
MP3FILE *pmp3; MP3FILE *pmp3;
datum key,content; datum key,content;
DPRINTF(E_DBG,L_DB,"Checking if node %d in db\n",id); DPRINTF(E_DBG,L_DB,"Checking if node %lu in db\n",id);
key.dptr=(char*)&id; key.dptr=(void *)&id;
key.dsize=sizeof(int); key.dsize=sizeof(unsigned long int);
db_readlock(); db_readlock();
@ -1557,9 +1557,9 @@ int db_exists(int id) {
if(db_update_mode) { if(db_update_mode) {
/* knock it off the maybe list */ /* knock it off the maybe list */
node = (int*)rbdelete((void*)&id,db_removed); node = (unsigned long int*)rbdelete((void*)&id,db_removed);
if(node) { 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); free(node);
} }
} }
@ -1577,10 +1577,10 @@ int db_exists(int id) {
* *
* See when the file was last updated in the database * 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; int retval;
MP3FILE *pmp3; MP3FILE *pmp3;
int err; // int err;
/* readlocked as part of db_find */ /* readlocked as part of db_find */
pmp3=db_find(id); pmp3=db_find(id);
@ -1604,18 +1604,18 @@ int db_last_modified(int id) {
* Delete an item from the database, and also remove it * Delete an item from the database, and also remove it
* from any playlists. * from any playlists.
*/ */
int db_delete(int id) { int db_delete(unsigned long int id) {
int err; int err;
datum key; datum key;
DB_PLAYLIST *pcurrent; DB_PLAYLIST *pcurrent;
DB_PLAYLISTENTRY *phead, *ptail; 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)) { if(db_exists(id)) {
db_writelock(); db_writelock();
key.dptr=(void*)&id; key.dptr=(void*)&id;
key.dsize=sizeof(int); key.dsize=sizeof(unsigned long int);
db_gdbmlock(); db_gdbmlock();
gdbm_delete(db_songs,key); gdbm_delete(db_songs,key);
db_gdbmunlock(); db_gdbmunlock();
@ -1633,7 +1633,7 @@ int db_delete(int id) {
} }
if(phead) { /* found it */ 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); pcurrent->id);
if(phead == pcurrent->nodes) { if(phead == pcurrent->nodes) {
pcurrent->nodes=phead->next; pcurrent->nodes=phead->next;

View File

@ -34,36 +34,36 @@ extern int db_init(void);
extern int db_deinit(void); extern int db_deinit(void);
extern int db_version(void); extern int db_version(void);
extern int db_add(MP3FILE *mp3file); extern int db_add(MP3FILE *mp3file);
extern int db_delete(int id); extern int db_delete(unsigned long int id);
extern int db_add_playlist(unsigned int playlistid, char *name, int file_time, int is_smart); extern int db_add_playlist(unsigned long 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_add_playlist_song(unsigned long int playlistid, unsigned long int itemid);
extern int db_delete_playlist(unsigned int playlistid); extern int db_delete_playlist(unsigned long int playlistid);
extern ENUMHANDLE db_enum_begin(void); extern ENUMHANDLE db_enum_begin(void);
extern MP3FILE *db_enum(ENUMHANDLE *handle); extern MP3FILE *db_enum(ENUMHANDLE *handle);
extern int db_enum_end(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 void db_dispose(MP3FILE *pmp3); /* must be called after a db_find */
extern int db_get_song_count(void); extern int db_get_song_count(void);
extern int db_get_playlist_count(void); extern int db_get_playlist_count(void);
extern int db_get_playlist_entry_count(int playlistid); extern int db_get_playlist_entry_count(unsigned long int playlistid);
extern int db_get_playlist_is_smart(int playlistid); extern int db_get_playlist_is_smart(unsigned long int playlistid);
extern ENUMHANDLE db_playlist_enum_begin(void); extern ENUMHANDLE db_playlist_enum_begin(void);
extern int db_playlist_enum(ENUMHANDLE *current); extern int db_playlist_enum(ENUMHANDLE *current);
extern int db_playlist_enum_end(ENUMHANDLE handle); 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(ENUMHANDLE *current);
extern int db_playlist_items_enum_end(ENUMHANDLE handle); extern int db_playlist_items_enum_end(ENUMHANDLE handle);
extern char *db_get_playlist_name(int playlistid); extern char *db_get_playlist_name(unsigned long int playlistid);
extern int db_playlist_last_modified(int playlistid); extern int db_playlist_last_modified(unsigned long int playlistid);
extern int db_scanning(void); extern int db_scanning(void);
/* For persistant databases only */ /* For persistant databases only */
extern int db_exists(int id); extern int db_exists(unsigned long int id);
extern int db_last_modified(int id); extern int db_last_modified(unsigned long int id);
#endif /* _DB_MEMORY_H_ */ #endif /* _DB_MEMORY_H_ */

View File

@ -59,8 +59,8 @@ typedef struct tag_mp3file {
int bpm; /* TBPM */ int bpm; /* TBPM */
int got_id3; int got_id3;
unsigned int id; // unsigned int id;
unsigned long int id;
/* generated fields */ /* generated fields */
char* description; /* long file type */ char* description; /* long file type */
int item_kind; /* song or movie */ int item_kind; /* song or movie */