]> git.ipfire.org Git - thirdparty/git.git/blobdiff - archive-tar.c
Merge branch 'pb/ref-filter-with-crlf'
[thirdparty/git.git] / archive-tar.c
index 5ceec3684be910c44216d38e11f240fa4cc22ed3..f1a1447ebda0a11b62cfead71a0f41a22439b392 100644 (file)
@@ -242,13 +242,12 @@ static void write_extended_header(struct archiver_args *args,
 static int write_tar_entry(struct archiver_args *args,
                           const struct object_id *oid,
                           const char *path, size_t pathlen,
-                          unsigned int mode)
+                          unsigned int mode,
+                          void *buffer, unsigned long size)
 {
        struct ustar_header header;
        struct strbuf ext_header = STRBUF_INIT;
-       unsigned int old_mode = mode;
-       unsigned long size, size_in_header;
-       void *buffer;
+       unsigned long size_in_header;
        int err = 0;
 
        memset(&header, 0, sizeof(header));
@@ -282,20 +281,6 @@ static int write_tar_entry(struct archiver_args *args,
        } else
                memcpy(header.name, path, pathlen);
 
-       if (S_ISREG(mode) && !args->convert &&
-           oid_object_info(args->repo, oid, &size) == OBJ_BLOB &&
-           size > big_file_threshold)
-               buffer = NULL;
-       else if (S_ISLNK(mode) || S_ISREG(mode)) {
-               enum object_type type;
-               buffer = object_file_to_archive(args, path, oid, old_mode, &type, &size);
-               if (!buffer)
-                       return error(_("cannot read %s"), oid_to_hex(oid));
-       } else {
-               buffer = NULL;
-               size = 0;
-       }
-
        if (S_ISLNK(mode)) {
                if (size > sizeof(header.linkname)) {
                        xsnprintf(header.linkname, sizeof(header.linkname),
@@ -326,7 +311,6 @@ static int write_tar_entry(struct archiver_args *args,
                else
                        err = stream_blocked(args->repo, oid);
        }
-       free(buffer);
        return err;
 }