From 8e70e42b1e00c9b04d1cfc24ccda38a7ff6f42a0 Mon Sep 17 00:00:00 2001 From: bertrand Date: Mon, 6 Sep 1999 11:32:54 +0000 Subject: new function : get file md5 signature. To be used in providers code. 1999-09-06 bertrand * camel/md5-utils.h: * camel/md5-utils.c: (md5_get_digest_from_file): new function : get file md5 signature. To be used in providers code. svn path=/trunk/; revision=1186 --- ChangeLog | 3 +++ camel/md5-utils.c | 29 +++++++++++++++++++++++++++++ camel/md5-utils.h | 4 ++++ 3 files changed, 36 insertions(+) diff --git a/ChangeLog b/ChangeLog index 6dc63a38fe..afafba88fe 100644 --- a/ChangeLog +++ b/ChangeLog @@ -5,6 +5,9 @@ changed names to follow camel style. (md5_get_digest_from_stream): new methods. + (md5_get_digest_from_file): + new function : get file md5 signature. + To be used in providers code. * camel/md5-utils.c: imported md5 coding routine from rpm. Compiles. diff --git a/camel/md5-utils.c b/camel/md5-utils.c index 6d8039a0ba..aac720e8e9 100644 --- a/camel/md5-utils.c +++ b/camel/md5-utils.c @@ -316,3 +316,32 @@ md5_get_digest_from_stream (CamelStream *stream, gint buffer_size, guchar digest +void +md5_get_digest_from_file (gchar *filename, gint buffer_size, guchar digest[16]) +{ + MD5Context ctx; + guchar tmp_buf[1024]; + gint nb_bytes_read; + FILE *fp; + + md5_init (&ctx); + fp = fopen(filename, "r"); + if (!fp) { + return; + } + + while ((nb_bytes_read = fread (tmp_buf, sizeof (guchar), 1024, fp)) > 0) + md5_update (&ctx, tmp_buf, nb_bytes_read); + + if (ferror(fp)) { + fclose(fp); + return; + } + + md5_final (digest, &ctx); + +} + + + + diff --git a/camel/md5-utils.h b/camel/md5-utils.h index 3c403e86d2..cb4768bbac 100644 --- a/camel/md5-utils.h +++ b/camel/md5-utils.h @@ -41,5 +41,9 @@ typedef struct { void md5_get_digest (const gchar *buffer, gint buffer_size, guchar digest[16]); void md5_get_digest_from_stream (CamelStream *stream, gint buffer_size, guchar digest[16]); +/* use this onr when speed is needed */ +/* for use in provider code only */ +void md5_get_digest_from_file (gchar *filename, gint buffer_size, guchar digest[16]); + #endif /* MD5_UTILS_H */ -- cgit v1.2.3