goto out;
        }
 
-       if (S_ISDIR(mode) || S_ISDIRLNK(mode)) {
+       if (S_ISDIR(mode) || S_ISGITLINK(mode)) {
                method = 0;
                attr2 = 16;
                result = (S_ISDIR(mode) ? READ_TREE_RECURSIVE : 0);
                if (S_ISREG(mode) && zlib_compression_level != 0)
                        method = 8;
                result = 0;
-               buffer = read_sha1_file(sha1, &type, &size);
+               buffer = convert_sha1_file(path, sha1, mode, &type, &size);
                if (!buffer)
                        die("cannot read %s", sha1_to_hex(sha1));
                crc = crc32(crc, buffer, size);