Johannes Schindelin <johannes.schinde...@gmx.de> writes:

> +static int filter_object(const char *path, unsigned mode,
> +                      const unsigned char *sha1,
> +                      char **buf, unsigned long *size)
> +{
> +     enum object_type type;
> +
> +     *buf = read_sha1_file(sha1, &type, size);
> +     if (!*buf)
> +             return error(_("cannot read object %s '%s'"),
> +                     sha1_to_hex(sha1), path);
> +     if (type != OBJ_BLOB) {
> +             free(*buf);
> +             return error(_("blob expected for %s '%s'"),
> +                     sha1_to_hex(sha1), path);
> +     }
> +     if (S_ISREG(mode)) {
> +             struct strbuf strbuf = STRBUF_INIT;
> +             if (convert_to_working_tree(path, *buf, *size, &strbuf)) {
> +                     free(*buf);
> +                     *size = strbuf.len;
> +                     *buf = strbuf_detach(&strbuf, NULL);
> +             }
> +     }

This needs to error out when mode is not ISREG just like it errors
out when type is not BLOB.

Other than that, I think these four patches are good to go.

Thanks.

Reply via email to