Fix send-pack for non-commitish tags.
[gitweb.git] / csum-file.c
index 3ab65b7515d5a4cb9c8d9b6c4f8eb32121d3c628..907efbf860152347bffe0cc999fdacad2a5f0724 100644 (file)
@@ -86,7 +86,7 @@ struct sha1file *sha1create(const char *fmt, ...)
                die("you wascally wabbit, you");
        f->namelen = len;
 
-       fd = open(f->name, O_CREAT | O_EXCL | O_WRONLY, 0644);
+       fd = open(f->name, O_CREAT | O_EXCL | O_WRONLY, 0666);
        if (fd < 0)
                die("unable to open %s (%s)", f->name, strerror(errno));
        f->fd = fd;
@@ -96,6 +96,26 @@ struct sha1file *sha1create(const char *fmt, ...)
        return f;
 }
 
+struct sha1file *sha1fd(int fd, const char *name)
+{
+       struct sha1file *f;
+       unsigned len;
+
+       f = xmalloc(sizeof(*f));
+
+       len = strlen(name);
+       if (len >= PATH_MAX)
+               die("you wascally wabbit, you");
+       f->namelen = len;
+       memcpy(f->name, name, len+1);
+
+       f->fd = fd;
+       f->error = 0;
+       f->offset = 0;
+       SHA1_Init(&f->ctx);
+       return f;
+}
+
 int sha1write_compressed(struct sha1file *f, void *in, unsigned int size)
 {
        z_stream stream;