aboutsummaryrefslogtreecommitdiffstats
path: root/src/tables.c
diff options
context:
space:
mode:
authorWarren Dukes <warren.dukes@gmail.com>2004-11-10 21:58:27 +0000
committerWarren Dukes <warren.dukes@gmail.com>2004-11-10 21:58:27 +0000
commitc5d27d8eaa17302b64decc502f70ab00f9a77e74 (patch)
tree88d66ab6e2edd7946e87942b7e1f8249c43ca86b /src/tables.c
parent86cf70dcb262e6637a1859893833c724149d1628 (diff)
downloadmpd-c5d27d8eaa17302b64decc502f70ab00f9a77e74.tar.gz
mpd-c5d27d8eaa17302b64decc502f70ab00f9a77e74.tar.xz
mpd-c5d27d8eaa17302b64decc502f70ab00f9a77e74.zip
merge changes from metadata-rewrite branch
git-svn-id: https://svn.musicpd.org/mpd/trunk@2589 09075e82-0dd4-0310-85a5-a0d7c8717e4f
Diffstat (limited to '')
-rw-r--r--src/tables.c200
1 files changed, 0 insertions, 200 deletions
diff --git a/src/tables.c b/src/tables.c
deleted file mode 100644
index a29f60163..000000000
--- a/src/tables.c
+++ /dev/null
@@ -1,200 +0,0 @@
-/* the Music Player Daemon (MPD)
- * (c)2003-2004 by Warren Dukes (shank@mercury.chem.pitt.edu)
- * This project's homepage is: http://www.musicpd.org
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-
-#include "tables.h"
-#include "list.h"
-#include "command.h"
-#include "utils.h"
-#include "myfprintf.h"
-
-#include <string.h>
-
-#define TABLES_ARTIST "artist"
-#define TABLES_ALBUM "album"
-
-List * albumTable;
-List * artistTable;
-
-typedef struct _ArtistData {
- int songs;
- List * albums;
-} ArtistData;
-
-ArtistData * newArtistData() {
- ArtistData * ad = malloc(sizeof(ArtistData));
-
- ad->songs = 0;
- ad->albums = makeList(free);
-
- return ad;
-}
-
-void freeArtistData(ArtistData * ad) {
- freeList(ad->albums);
-}
-
-void initTables() {
- albumTable = makeList(free);
- artistTable = makeList((ListFreeDataFunc *)freeArtistData);
-}
-
-void closeTables() {
- freeList(albumTable);
- freeList(artistTable);
-}
-
-void addSongToSomeAlbumTable(List * table, Song * song) {
- void * songs;
- if(!song->tag) return;
- if(!song->tag->album || !strlen(song->tag->album)) return;
- if(!findInList(table,song->tag->album,&songs)) {
- songs = malloc(sizeof(int));
- *((int *)songs) = 0;
- insertInList(table,song->tag->album,songs);
- }
- (*((int *)songs))++;
-}
-
-void addSongToAlbumTable(Song * song) {
- addSongToSomeAlbumTable(albumTable,song);
-}
-
-void addSongToArtistTable(Song * song) {
- void * artist;
- if(!song->tag) return;
- if(!song->tag->artist || !strlen(song->tag->artist)) return;
- if(!findInList(artistTable,song->tag->artist,&artist)) {
- artist = newArtistData();
- insertInList(artistTable,song->tag->artist,artist);
- }
- ((ArtistData *)artist)->songs++;
- addSongToSomeAlbumTable(((ArtistData *)artist)->albums,song);
-}
-
-void addSongToTables(Song * song) {
- addSongToAlbumTable(song);
- addSongToArtistTable(song);
-}
-
-void removeSongFromSomeAlbumTable(List * table, Song * song) {
- void * songs;
-
- if(!song->tag) return;
- if(!song->tag->album || !strlen(song->tag->album)) return;
- if(findInList(table,song->tag->album,&songs)) {
- (*((int *)songs))--;
- if(*((int *)songs)<=0) {
- deleteFromList(table,song->tag->album);
- }
- }
-}
-
-void removeSongFromAlbumTable(Song * song) {
- removeSongFromSomeAlbumTable(albumTable,song);
-}
-
-void removeSongFromArtistTable(Song * song) {
- void * artist;
-
- if(!song->tag) return;
- if(!song->tag->artist || !strlen(song->tag->artist)) return;
- if(findInList(artistTable,song->tag->artist,&artist)) {
- removeSongFromSomeAlbumTable(((ArtistData *)artist)->albums,
- song);
- ((ArtistData*)artist)->songs--;
- if(((ArtistData *)artist)->songs<=0) {
- deleteFromList(artistTable,song->tag->artist);
- }
- }
-}
-
-void removeASongFromTables(Song * song) {
- removeSongFromAlbumTable(song);
- removeSongFromArtistTable(song);
-}
-
-unsigned long numberOfSongs() {
- return 0;
-}
-
-unsigned long numberOfArtists() {
- return artistTable->numberOfNodes;
-}
-
-unsigned long numberOfAlbums() {
- return albumTable->numberOfNodes;
-}
-
-int printAllArtists(FILE * fp) {
- ListNode * node = artistTable->firstNode;
-
- while(node) {
- myfprintf(fp,"Artist: %s\n",node->key);
- node = node->nextNode;
- }
-
- return 0;
-}
-
-int printAllAlbums(FILE * fp, char * artist) {
- if(artist==NULL) {
- ListNode * node = albumTable->firstNode;
-
- while(node) {
- myfprintf(fp,"Album: %s\n",node->key);
- node = node->nextNode;
- }
- }
- else {
- void * ad;
-
- if(findInList(artistTable,artist,&ad)) {
- ListNode * node = ((ArtistData *)ad)->albums->firstNode;
- while(node) {
- myfprintf(fp,"Album: %s\n",node->key);
- node = node->nextNode;
- }
- }
- else {
- commandError(fp, ACK_ERROR_NO_EXIST,
- "artist \"%s\" not found", artist);
- return -1;
- }
- }
-
- return 0;
-}
-
-int printAllKeysOfTable(FILE * fp, char * table, char * arg1) {
- if(strcmp(table,TABLES_ARTIST)==0) {
- if(arg1!=NULL) {
- commandError(fp, ACK_ERROR_ARG,
- "%s table takes no args", table);
- return -1;
- }
- return printAllArtists(fp);
- }
- else if(strcmp(table,TABLES_ALBUM)==0) {
- return printAllAlbums(fp,arg1);
- }
- else {
- commandError(fp, ACK_ERROR_ARG, "unknown table", table);
- return -1;
- }
-}