]> git.ipfire.org Git - thirdparty/git.git/commitdiff
csum-file: add "sha1fd()" to create a SHA1 csum file from an existing file descriptor
authorLinus Torvalds <torvalds@ppc970.osdl.org>
Tue, 28 Jun 2005 18:10:06 +0000 (11:10 -0700)
committerLinus Torvalds <torvalds@ppc970.osdl.org>
Tue, 28 Jun 2005 18:10:06 +0000 (11:10 -0700)
We'll use this soon to write pack-files to stdout.

csum-file.c
csum-file.h

index 3ab65b7515d5a4cb9c8d9b6c4f8eb32121d3c628..c8c7369152cd2b744aae488eb794c12ffbdfe9b9 100644 (file)
@@ -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;
index 2b6c8dcad25c29ddd13742e9904c54b97286bc0a..776cfb152af2b6c4fb6c190d875b4fb2f9162c9a 100644 (file)
@@ -10,6 +10,7 @@ struct sha1file {
        unsigned char buffer[8192];
 };
 
+extern struct sha1file *sha1fd(int fd, const char *name);
 extern struct sha1file *sha1create(const char *fmt, ...);
 extern int sha1close(struct sha1file *, unsigned char *, int);
 extern int sha1write(struct sha1file *, void *, unsigned int);