* Handle @id in SearchCriteria.
This commit is contained in:
		
							
								
								
									
										12
									
								
								upnpsoap.c
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								upnpsoap.c
									
									
									
									
									
								
							@@ -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
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								utils.c
									
									
									
									
									
								
							@@ -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;
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user