csum-file: add "sha1fd()" to create a SHA1 csum file from an existing file descriptor
We'll use this soon to write pack-files to stdout.
This commit is contained in:
20
csum-file.c
20
csum-file.c
@ -96,6 +96,26 @@ struct sha1file *sha1create(const char *fmt, ...)
|
|||||||
return f;
|
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)
|
int sha1write_compressed(struct sha1file *f, void *in, unsigned int size)
|
||||||
{
|
{
|
||||||
z_stream stream;
|
z_stream stream;
|
||||||
|
@ -10,6 +10,7 @@ struct sha1file {
|
|||||||
unsigned char buffer[8192];
|
unsigned char buffer[8192];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
extern struct sha1file *sha1fd(int fd, const char *name);
|
||||||
extern struct sha1file *sha1create(const char *fmt, ...);
|
extern struct sha1file *sha1create(const char *fmt, ...);
|
||||||
extern int sha1close(struct sha1file *, unsigned char *, int);
|
extern int sha1close(struct sha1file *, unsigned char *, int);
|
||||||
extern int sha1write(struct sha1file *, void *, unsigned int);
|
extern int sha1write(struct sha1file *, void *, unsigned int);
|
||||||
|
Reference in New Issue
Block a user