+int
+repo_add_appdata(Repo *repo, FILE *fp, int flags)
+{
+ return repo_add_appdata_fn(repo, fp, flags, 0, 0);
+}
+
+static void
+search_uninternalized_filelist(Repo *repo, const char *dir, Queue *res)
+{
+ Pool *pool = repo->pool;
+ Id rdid, p;
+ Id iter, did, idid;
+
+ for (rdid = 1; rdid < repo->nrepodata; rdid++)
+ {
+ Repodata *data = repo_id2repodata(repo, rdid);
+ if (!data)
+ continue;
+ if (data->state == REPODATA_STUB)
+ continue;
+ if (!repodata_has_keyname(data, SOLVABLE_FILELIST))
+ continue;
+ did = repodata_str2dir(data, dir, 0);
+ if (!did)
+ continue;
+ for (p = data->start; p < data->end; p++)
+ {
+ if (p >= pool->nsolvables)
+ continue;
+ if (pool->solvables[p].repo != repo)
+ continue;
+ iter = 0;
+ for (;;)
+ {
+ const char *str;
+ int l;
+ Id id;
+ idid = did;
+ str = repodata_lookup_dirstrarray_uninternalized(data, p, SOLVABLE_FILELIST, &idid, &iter);
+ if (!iter)
+ break;
+ l = strlen(str);
+ if (l > 12 && strncmp(str + l - 12, ".appdata.xml", 12))
+ id = pool_str2id(pool, str, 1);
+ else if (l > 13 && strncmp(str + l - 13, ".metainfo.xml", 13))
+ id = pool_str2id(pool, str, 1);
+ else
+ continue;
+ queue_push2(res, p, id);
+ }
+ }
+ }
+}
+