archive: move file extension format-guessing lower
[gitweb.git] / archive-tar.c
index ba890ebdecd8672aeb32757605c8a2976fa21161..bed9a9b15ce07fbb1ff0f40902e1b317b82663e9 100644 (file)
@@ -180,7 +180,7 @@ static int write_tar_entry(struct archiver_args *args,
 
        sprintf(header.mode, "%07o", mode & 07777);
        sprintf(header.size, "%011lo", S_ISREG(mode) ? size : 0);
-       sprintf(header.mtime, "%011lo", args->time);
+       sprintf(header.mtime, "%011lo", (unsigned long) args->time);
 
        sprintf(header.uid, "%07o", 0);
        sprintf(header.gid, "%07o", 0);
@@ -231,15 +231,14 @@ static int git_tar_config(const char *var, const char *value, void *cb)
                }
                return 0;
        }
-       return git_default_config(var, value, cb);
+       return 0;
 }
 
-int write_tar_archive(struct archiver_args *args)
+static int write_tar_archive(const struct archiver *ar,
+                            struct archiver_args *args)
 {
        int err = 0;
 
-       git_config(git_tar_config, NULL);
-
        if (args->commit_sha1)
                err = write_global_extended_header(args);
        if (!err)
@@ -248,3 +247,15 @@ int write_tar_archive(struct archiver_args *args)
                write_trailer();
        return err;
 }
+
+static struct archiver tar_archiver = {
+       "tar",
+       write_tar_archive,
+       0
+};
+
+void init_tar_archiver(void)
+{
+       register_archiver(&tar_archiver);
+       git_config(git_tar_config, NULL);
+}