X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=diff-lib.c;h=a310fb2ad08cfb5fac01f5519e8b95b2338b07db;hb=9d5b05c6d56a0fb12d43d50d7853178feaf59daa;hp=a41e1ec07ccd707969aa51768dac3e2b6356ddc6;hpb=ba743d1b0ce0b44c797c0de06c9db2781e4d1fdd;p=~andy%2Fgit diff --git a/diff-lib.c b/diff-lib.c index a41e1ec07..a310fb2ad 100644 --- a/diff-lib.c +++ b/diff-lib.c @@ -31,7 +31,7 @@ static int check_removed(const struct cache_entry *ce, struct stat *st) return -1; return 1; } - if (has_symlink_leading_path(ce_namelen(ce), ce->name)) + if (has_symlink_leading_path(ce->name, ce_namelen(ce))) return 1; if (S_ISDIR(st->st_mode)) { unsigned char sub[20]; @@ -513,3 +513,18 @@ int do_diff_cache(const unsigned char *tree_sha1, struct diff_options *opt) exit(128); return 0; } + +int index_differs_from(const char *def, int diff_flags) +{ + struct rev_info rev; + + init_revisions(&rev, NULL); + setup_revisions(0, NULL, &rev, def); + DIFF_OPT_SET(&rev.diffopt, QUIET); + DIFF_OPT_SET(&rev.diffopt, EXIT_WITH_STATUS); + rev.diffopt.flags |= diff_flags; + run_diff_index(&rev, 1); + if (rev.pending.alloc) + free(rev.pending.objects); + return (DIFF_OPT_TST(&rev.diffopt, HAS_CHANGES) != 0); +}