diff options
Diffstat (limited to 'trunk/src/locate.c')
-rw-r--r-- | trunk/src/locate.c | 211 |
1 files changed, 0 insertions, 211 deletions
diff --git a/trunk/src/locate.c b/trunk/src/locate.c deleted file mode 100644 index 7c3bab899..000000000 --- a/trunk/src/locate.c +++ /dev/null @@ -1,211 +0,0 @@ -/* the Music Player Daemon (MPD) - * (c)2007 by Warren Dukes (warren.dukes@gmail.com) - * 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 "locate.h" - -#include "utils.h" - -#define LOCATE_TAG_FILE_KEY "file" -#define LOCATE_TAG_FILE_KEY_OLD "filename" -#define LOCATE_TAG_ANY_KEY "any" - -int getLocateTagItemType(char *str) -{ - int i; - - if (0 == strcasecmp(str, LOCATE_TAG_FILE_KEY) || - 0 == strcasecmp(str, LOCATE_TAG_FILE_KEY_OLD)) - { - return LOCATE_TAG_FILE_TYPE; - } - - if (0 == strcasecmp(str, LOCATE_TAG_ANY_KEY)) - { - return LOCATE_TAG_ANY_TYPE; - } - - for (i = 0; i < TAG_NUM_OF_ITEM_TYPES; i++) - { - if (0 == strcasecmp(str, mpdTagItemKeys[i])) - return i; - } - - return -1; -} - -static int initLocateTagItem(LocateTagItem * item, char *typeStr, char *needle) -{ - item->tagType = getLocateTagItemType(typeStr); - - if (item->tagType < 0) - return -1; - - item->needle = xstrdup(needle); - - return 0; -} - -LocateTagItem *newLocateTagItem(char *typeStr, char *needle) -{ - LocateTagItem *ret = xmalloc(sizeof(LocateTagItem)); - - if (initLocateTagItem(ret, typeStr, needle) < 0) { - free(ret); - ret = NULL; - } - - return ret; -} - -void freeLocateTagItemArray(int count, LocateTagItem * array) -{ - int i; - - for (i = 0; i < count; i++) - free(array[i].needle); - - free(array); -} - -int newLocateTagItemArrayFromArgArray(char *argArray[], - int numArgs, LocateTagItem ** arrayRet) -{ - int i, j; - LocateTagItem *item; - - if (numArgs == 0) - return 0; - - if (numArgs % 2 != 0) - return -1; - - *arrayRet = xmalloc(sizeof(LocateTagItem) * numArgs / 2); - - for (i = 0, item = *arrayRet; i < numArgs / 2; i++, item++) { - if (initLocateTagItem - (item, argArray[i * 2], argArray[i * 2 + 1]) < 0) - goto fail; - } - - return numArgs / 2; - -fail: - for (j = 0; j < i; j++) { - free((*arrayRet)[j].needle); - } - - free(*arrayRet); - *arrayRet = NULL; - return -1; -} - -void freeLocateTagItem(LocateTagItem * item) -{ - free(item->needle); - free(item); -} - -static int strstrSearchTag(Song * song, int type, char *str) -{ - int i; - char *dup; - int ret = 0; - - if (type == LOCATE_TAG_FILE_TYPE || type == LOCATE_TAG_ANY_TYPE) { - dup = strDupToUpper(getSongUrl(song)); - if (strstr(dup, str)) - ret = 1; - free(dup); - if (ret == 1 || type == LOCATE_TAG_FILE_TYPE) { - return ret; - } - } - - if (!song->tag) - return 0; - - for (i = 0; i < song->tag->numOfItems && !ret; i++) { - if (type != LOCATE_TAG_ANY_TYPE && - song->tag->items[i].type != type) { - continue; - } - - dup = strDupToUpper(song->tag->items[i].value); - if (strstr(dup, str)) - ret = 1; - free(dup); - } - - return ret; -} - -int strstrSearchTags(Song * song, int numItems, LocateTagItem * items) -{ - int i; - - for (i = 0; i < numItems; i++) { - if (!strstrSearchTag(song, items[i].tagType, - items[i].needle)) { - return 0; - } - } - - return 1; -} - -static int tagItemFoundAndMatches(Song * song, int type, char *str) -{ - int i; - - if (type == LOCATE_TAG_FILE_TYPE || type == LOCATE_TAG_ANY_TYPE) { - if (0 == strcmp(str, getSongUrl(song))) - return 1; - if (type == LOCATE_TAG_FILE_TYPE) - return 0; - } - - if (!song->tag) - return 0; - - for (i = 0; i < song->tag->numOfItems; i++) { - if (type != LOCATE_TAG_ANY_TYPE && - song->tag->items[i].type != type) { - continue; - } - - if (0 == strcmp(str, song->tag->items[i].value)) - return 1; - } - - return 0; -} - - -int tagItemsFoundAndMatches(Song * song, int numItems, LocateTagItem * items) -{ - int i; - - for (i = 0; i < numItems; i++) { - if (!tagItemFoundAndMatches(song, items[i].tagType, - items[i].needle)) { - return 0; - } - } - - return 1; -} |