]> git.ipfire.org Git - thirdparty/git.git/commit - cache.h
Rewrite convert_to_{git,working_tree} to use strbuf's.
authorPierre Habouzit <madcoder@debian.org>
Sun, 16 Sep 2007 13:51:04 +0000 (15:51 +0200)
committerJunio C Hamano <gitster@pobox.com>
Mon, 17 Sep 2007 00:30:03 +0000 (17:30 -0700)
commit5ecd293d1420bf641a927a015877950f4d79c067
treeae217d6915a5c858f7173ed0c99730a4ce62d2f4
parent917c9a713397b16671ed5b1f1c159515bcfa389e
Rewrite convert_to_{git,working_tree} to use strbuf's.

* Now, those functions take an "out" strbuf argument, where they store their
  result if any. In that case, it also returns 1, else it returns 0.
* those functions support "in place" editing, in the sense that it's OK to
  call them this way:
    convert_to_git(path, sb->buf, sb->len, sb);
  When doable, conversions are done in place for real, else the strbuf
  content is just replaced with the new one, transparentely for the caller.

If you want to create a new filter working this way, being the accumulation
of filter1, filter2, ... filtern, then your meta_filter would be:

    int meta_filter(..., const char *src, size_t len, struct strbuf *sb)
    {
        int ret = 0;
        ret |= filter1(...., src, len, sb);
        if (ret) {
            src = sb->buf;
            len = sb->len;
        }
        ret |= filter2(...., src, len, sb);
        if (ret) {
            src = sb->buf;
            len = sb->len;
        }
        ....
        return ret | filtern(..., src, len, sb);
    }

That's why subfilters the convert_to_* functions called were also rewritten
to work this way.

Signed-off-by: Pierre Habouzit <madcoder@debian.org>
Acked-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin-apply.c
builtin-archive.c
cache.h
convert.c
diff.c
entry.c
sha1_file.c