static void check_expected_revs(const char **revs, int rev_nr) { int i; for (i = 0; i < rev_nr; i++) { if (!is_expected_rev(revs[i])) { unlink_or_warn(git_path_bisect_ancestors_ok()); unlink_or_warn(git_path_bisect_expected_rev()); } } }
static int is_expected_rev(const char *expected_hex) { struct strbuf actual_hex = STRBUF_INIT; int res = 0; if (strbuf_read_file(&actual_hex, git_path_bisect_expected_rev(), 0) >= 40) { strbuf_trim(&actual_hex); res = !strcmp(actual_hex.buf, expected_hex); } strbuf_release(&actual_hex); return res; }
static int is_expected_rev(const struct object_id *oid) { const char *filename = git_path_bisect_expected_rev(); struct stat st; struct strbuf str = STRBUF_INIT; FILE *fp; int res = 0; if (stat(filename, &st) || !S_ISREG(st.st_mode)) return 0; fp = fopen(filename, "r"); if (!fp) return 0; if (strbuf_getline(&str, fp, '\n') != EOF) res = !strcmp(str.buf, oid_to_hex(oid)); strbuf_release(&str); fclose(fp); return res; }