+static void choose_readme(struct cgit_repo *repo)
+{
+ char *entry, *filename, *ref;
+
+ /* If there's no space, we skip the possibly expensive
+ * selection process. */
+ if (!repo->readme || !strchr(repo->readme, ' '))
+ return;
+
+ for (entry = strtok(repo->readme, " "); entry; entry = strtok(NULL, " ")) {
+ cgit_parse_readme(entry, NULL, &filename, &ref, repo);
+ if (!(*filename)) {
+ free(filename);
+ free(ref);
+ continue;
+ }
+ if (*ref && cgit_ref_path_exists(filename, ref)) {
+ free(filename);
+ free(ref);
+ break;
+ }
+ if (!access(filename, R_OK)) {
+ free(filename);
+ free(ref);
+ break;
+ }
+ free(filename);
+ free(ref);
+ }
+ repo->readme = entry;
+}
+