• P
    Rewrite convert_to_{git,working_tree} to use strbuf's. · 5ecd293d
    Pierre Habouzit 提交于
    * 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: NPierre Habouzit <madcoder@debian.org>
    Acked-by: NLinus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: NJunio C Hamano <gitster@pobox.com>
    5ecd293d
diff.c 81.1 KB