|  | @@ -92,6 +92,7 @@ void smartlist_add(smartlist_t *sl, void *element) {
 | 
	
		
			
				|  |  |      log_fn(LOG_WARN,"We've already got %d elements, discarding.",sl->max);
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +#if 0
 | 
	
		
			
				|  |  |  void smartlist_remove(smartlist_t *sl, void *element) {
 | 
	
		
			
				|  |  |    int i;
 | 
	
		
			
				|  |  |    if(element == NULL)
 | 
	
	
		
			
				|  | @@ -102,6 +103,33 @@ void smartlist_remove(smartlist_t *sl, void *element) {
 | 
	
		
			
				|  |  |        i--; /* so we process the new i'th element */
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  | +#endif
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +int smartlist_isin(smartlist_t *sl, void *element) {
 | 
	
		
			
				|  |  | +  int i;
 | 
	
		
			
				|  |  | +  for(i=0; i < sl->num_used; i++)
 | 
	
		
			
				|  |  | +    if(sl->list[i] == element)
 | 
	
		
			
				|  |  | +      return 1;
 | 
	
		
			
				|  |  | +  return 0;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +int smartlist_overlap(smartlist_t *sl1, smartlist_t *sl2) {
 | 
	
		
			
				|  |  | +  int i;
 | 
	
		
			
				|  |  | +  for(i=0; i < sl2->num_used; i++)
 | 
	
		
			
				|  |  | +    if(smartlist_isin(sl1, sl2->list[i]))
 | 
	
		
			
				|  |  | +      return 1;
 | 
	
		
			
				|  |  | +  return 0;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/* remove elements of sl1 that aren't in sl2 */
 | 
	
		
			
				|  |  | +void smartlist_intersect(smartlist_t *sl1, smartlist_t *sl2) {
 | 
	
		
			
				|  |  | +  int i;
 | 
	
		
			
				|  |  | +  for(i=0; i < sl1->num_used; i++)
 | 
	
		
			
				|  |  | +    if(!smartlist_isin(sl2, sl1->list[i])) {
 | 
	
		
			
				|  |  | +      sl1->list[i] = sl1->list[--sl1->num_used]; /* swap with the end */
 | 
	
		
			
				|  |  | +      i--; /* so we process the new i'th element */
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  void *smartlist_choose(smartlist_t *sl) {
 | 
	
		
			
				|  |  |    if(sl->num_used)
 |