From 79effd62e14c8c524552ae578d593750b038004a Mon Sep 17 00:00:00 2001 From: Warren Dukes Date: Fri, 27 Feb 2004 15:39:19 +0000 Subject: display db_playtime in stats git-svn-id: https://svn.musicpd.org/mpd/trunk@98 09075e82-0dd4-0310-85a5-a0d7c8717e4f --- src/directory.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'src/directory.c') diff --git a/src/directory.c b/src/directory.c index c933a9f0c..9f85f2683 100644 --- a/src/directory.c +++ b/src/directory.c @@ -477,6 +477,7 @@ int writeDirectoryDB() { sortDirectory(mp3rootDirectory); stats.numberOfSongs = countSongsIn(stderr,NULL); + stats.dbPlayTime = sumSongTimesIn(stderr,NULL); while(!(fp=fopen(directorydb,"w")) && errno==EINTR); if(!fp) return -1; @@ -570,6 +571,7 @@ int readDirectoryDB() { while(fclose(fp) && errno==EINTR); stats.numberOfSongs = countSongsIn(stderr,NULL); + stats.dbPlayTime = sumSongTimesIn(stderr,NULL); return 0; } @@ -777,6 +779,14 @@ int directoryPrintSongInfo(FILE * fp, Song * song, void * data) { return printSongInfo(fp,song); } +int sumSongTime(FILE * fp, Song * song, void * data) { + unsigned long * time = (unsigned long *)data; + + if(song->tag && song->tag->time>=0) *time+=song->tag->time; + + return 0; +} + int printInfoForAllIn(FILE * fp, char * name) { return traverseAllIn(fp,name,directoryPrintSongInfo,NULL,NULL); } @@ -790,6 +800,15 @@ int countSongsIn(FILE * fp, char * name) { return count; } +unsigned long sumSongTimesIn(FILE * fp, char * name) { + unsigned long dbPlayTime = 0; + void * ptr = (void *)&dbPlayTime; + + traverseAllIn(fp,name,sumSongTime,NULL,ptr); + + return dbPlayTime; +} + void initMp3Directory() { mp3rootDirectory = newDirectory(NULL,NULL,0); exploreDirectory(mp3rootDirectory); -- cgit v1.2.3