+
+void
+pool_setvendorclasses(Pool *pool, const char **vendorclasses)
+{
+ int i;
+ const char **v;
+
+ if (pool->vendorclasses)
+ {
+ for (v = pool->vendorclasses; v[0] || v[1]; v++)
+ solv_free((void *)*v);
+ pool->vendorclasses = solv_free((void *)pool->vendorclasses);
+ }
+ if (!vendorclasses || !vendorclasses[0])
+ return;
+ for (v = vendorclasses; v[0] || v[1]; v++)
+ ;
+ pool->vendorclasses = solv_calloc(v - vendorclasses + 2, sizeof(const char *));
+ for (v = vendorclasses, i = 0; v[0] || v[1]; v++, i++)
+ pool->vendorclasses[i] = *v ? solv_strdup(*v) : 0;
+ pool->vendorclasses[i++] = 0;
+ pool->vendorclasses[i] = 0;
+ queue_empty(&pool->vendormap);
+}
+
+void
+pool_addvendorclass(Pool *pool, const char **vendorclass)
+{
+ int i, j;
+
+ if (!vendorclass || !vendorclass[0])
+ return;
+ for (j = 1; vendorclass[j]; j++)
+ ;
+ i = 0;
+ if (pool->vendorclasses)
+ {
+ for (i = 0; pool->vendorclasses[i] || pool->vendorclasses[i + 1]; i++)
+ ;
+ if (i)
+ i++;
+ }
+ pool->vendorclasses = solv_realloc2((void *)pool->vendorclasses, i + j + 2, sizeof(const char *));
+ for (j = 0; vendorclass[j]; j++)
+ pool->vendorclasses[i++] = solv_strdup(vendorclass[j]);
+ pool->vendorclasses[i++] = 0;
+ pool->vendorclasses[i] = 0;
+ queue_empty(&pool->vendormap);
+}