diff options
author | Lennart Poettering <lennart@poettering.net> | 2003-08-29 01:21:11 +0000 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2003-08-29 01:21:11 +0000 |
commit | db3b96fc0014a5e860df1efc729b38d629662826 (patch) | |
tree | 9076f5b7c6a14c6239b562d442cdf46d755c9ff0 /src/md5util.c | |
parent | 0d7460e9592c501b48fe9ab05d8e7fd52cb5bb4d (diff) |
many fixes
--cleanup implemented
git-svn-id: file:///home/lennart/svn/public/syrep/trunk@13 07ea20a6-d2c5-0310-9e02-9ef735347d72
Diffstat (limited to 'src/md5util.c')
-rw-r--r-- | src/md5util.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/src/md5util.c b/src/md5util.c index e4c3269..6b9a1e2 100644 --- a/src/md5util.c +++ b/src/md5util.c @@ -28,6 +28,7 @@ #include "md5util.h" #include "md5.h" +#include "syrep.h" void fhex(const unsigned char *bin,int len, char *txt) { const static char hex[] = "0123456789abcdef"; @@ -46,7 +47,7 @@ int fdmd5(int fd, size_t l, char *md) { void *d; off_t o = 0; size_t m; - int r = 0; + int r = -1; md5_state_t s; struct stat pre, post; void *p = NULL; @@ -65,6 +66,11 @@ int fdmd5(int fd, size_t l, char *md) { while (l && ((d = mmap(NULL, m, PROT_READ, MAP_SHARED, fd, o)) != MAP_FAILED)) { md5_append(&s, d, m); munmap(d, m); + + if (interrupted) { + fprintf(stderr, "Canceled.\n"); + goto finish; + } o += m; l -= m; @@ -112,6 +118,8 @@ int fdmd5(int fd, size_t l, char *md) { md5_finish(&s, md); + r = 0; + finish: if (p) |