+static void
+repodata_insert_keyid(Repodata *data, Id entry, Id keyid, Id val, int overwrite)
+{
+ Id *pp;
+ int i;
+ if (!data->attrs)
+ data->attrs = sat_calloc(data->end - data->start + 1, sizeof(Id *));
+ i = 0;
+ if (data->attrs[entry])
+ {
+ for (pp = data->attrs[entry]; *pp; pp += 2)
+ if (*pp == keyid)
+ break;
+ if (*pp)
+ {
+ if (overwrite)
+ pp[1] = val;
+ return;
+ }
+ i = pp - data->attrs[entry];
+ }
+ data->attrs[entry] = sat_realloc2(data->attrs[entry], i + 3, sizeof(Id));
+ pp = data->attrs[entry] + i;
+ *pp++ = keyid;
+ *pp++ = val;
+ *pp = 0;
+}
+