* Handle @id in SearchCriteria.

This commit is contained in:
Justin Maggard 2009-06-02 21:18:22 +00:00
parent 66ce695272
commit 2155c25109
2 changed files with 15 additions and 9 deletions

View File

@ -1048,6 +1048,7 @@ SearchContentDirectory(struct upnphttp * h, const char * action)
{
SearchCriteria = modifyString(SearchCriteria, """, "\"", 0);
SearchCriteria = modifyString(SearchCriteria, "'", "'", 0);
SearchCriteria = modifyString(SearchCriteria, "object.", "", 0);
SearchCriteria = modifyString(SearchCriteria, "derivedfrom", "glob", 1);
SearchCriteria = modifyString(SearchCriteria, "contains", "glob", 1);
SearchCriteria = modifyString(SearchCriteria, "dc:title", "d.TITLE", 0);
@ -1058,10 +1059,17 @@ SearchContentDirectory(struct upnphttp * h, const char * action)
SearchCriteria = modifyString(SearchCriteria, "exists true", "is not NULL", 0);
SearchCriteria = modifyString(SearchCriteria, "exists false", "is NULL", 0);
SearchCriteria = modifyString(SearchCriteria, "@refID", "REF_ID", 0);
SearchCriteria = modifyString(SearchCriteria, "object.", "", 0);
#if 0
if( strstr(SearchCriteria, "@id") )
{
newSearchCriteria = modifyString(strdup(SearchCriteria), "@id", "OBJECT_ID", 0);
SearchCriteria = newSearchCriteria;
}
#if 0 // Does 360 need this?
if( strstr(SearchCriteria, "&") )
{
if( newSearchCriteria )
newSearchCriteria = modifyString(newSearchCriteria, "&", "&", 0);
else
newSearchCriteria = modifyString(strdup(SearchCriteria), "&", "&", 0);
SearchCriteria = newSearchCriteria;
}

10
utils.c
View File

@ -64,7 +64,7 @@ modifyString(char * string, const char * before, const char * after, short like)
chgcnt++;
s = p+oldlen;
}
string = realloc(string, strlen(string)+((newlen-oldlen)*chgcnt)+1);
string = realloc(string, strlen(string)+((newlen-oldlen)*chgcnt)+1+like);
}
s = string;
@ -73,9 +73,11 @@ modifyString(char * string, const char * before, const char * after, short like)
p = strcasestr(s, before);
if( !p )
return string;
memmove(p + newlen, p + oldlen, strlen(p + oldlen) + 1);
memcpy(p, after, newlen);
if( like )
{
t = p+oldlen;
t = p+newlen;
while( isspace(*t) )
t++;
if( *t == '"' )
@ -84,12 +86,8 @@ modifyString(char * string, const char * before, const char * after, short like)
memmove(t+1, t, strlen(t)+1);
*t = '*';
}
memmove(p + newlen, p + oldlen, strlen(p + oldlen) + 1);
memcpy(p, after, newlen);
s = p + newlen;
}
if( newlen < oldlen )
string = realloc(string, strlen(string)+1);
return string;
}