*/
struct blame_entry *suspects;
mmfile_t file;
+ int num_lines;
+ void *fingerprints;
struct object_id blob_oid;
- unsigned mode;
+ unsigned short mode;
/* guilty gets set when shipping any suspects to the final
* blame list instead of other commits
*/
void oidset_clear(struct oidset *set)
{
- kh_release_oid(&set->set);
+ kh_release_oid_set(&set->set);
oidset_init(set, 0);
}
+
+ void oidset_parse_file(struct oidset *set, const char *path)
+ {
+ FILE *fp;
+ struct strbuf sb = STRBUF_INIT;
+ struct object_id oid;
+
+ fp = fopen(path, "r");
+ if (!fp)
+ die("could not open object name list: %s", path);
+ while (!strbuf_getline(&sb, fp)) {
+ const char *p;
+ const char *name;
+
+ /*
+ * Allow trailing comments, leading whitespace
+ * (including before commits), and empty or whitespace
+ * only lines.
+ */
+ name = strchr(sb.buf, '#');
+ if (name)
+ strbuf_setlen(&sb, name - sb.buf);
+ strbuf_trim(&sb);
+ if (!sb.len)
+ continue;
+
+ if (parse_oid_hex(sb.buf, &oid, &p) || *p != '\0')
+ die("invalid object name: %s", sb.buf);
+ oidset_insert(set, &oid);
+ }
+ if (ferror(fp))
+ die_errno("Could not read '%s'", path);
+ fclose(fp);
+ strbuf_release(&sb);
+ }
*/
void oidset_clear(struct oidset *set);
+ /**
+ * Add the contents of the file 'path' to an initialized oidset. Each line is
+ * an unabbreviated object name. Comments begin with '#', and trailing comments
+ * are allowed. Leading whitespace and empty or white-space only lines are
+ * ignored.
+ */
+ void oidset_parse_file(struct oidset *set, const char *path);
+
struct oidset_iter {
- kh_oid_t *set;
+ kh_oid_set_t *set;
khiter_t iter;
};