Browse Source

libdpkg: Refactor md5 buffer initialization and destruction

Move into their own functions.
Guillem Jover 17 years ago
parent
commit
03144fe7d6
1 changed files with 32 additions and 24 deletions
  1. 32 24
      lib/dpkg/buffer.c

+ 32 - 24
lib/dpkg/buffer.c

@@ -43,6 +43,36 @@ struct buffer_write_md5ctx {
 	unsigned char **hash;
 	unsigned char **hash;
 };
 };
 
 
+static void
+buffer_md5_init(buffer_data_t data)
+{
+	struct buffer_write_md5ctx *ctx;
+
+	ctx = m_malloc(sizeof(struct buffer_write_md5ctx));
+	ctx->hash = data->data.ptr;
+	data->data.ptr = ctx;
+	MD5Init(&ctx->ctx);
+}
+
+static void
+buffer_md5_done(buffer_data_t data)
+{
+	struct buffer_write_md5ctx *ctx;
+	unsigned char digest[16], *p = digest;
+	unsigned char *hash;
+	int i;
+
+	ctx = (struct buffer_write_md5ctx *)data->data.ptr;
+	*ctx->hash = hash = m_malloc(MD5HASHLEN + 1);
+	MD5Final(digest, &ctx->ctx);
+	for (i = 0; i < 16; ++i) {
+		sprintf((char *)hash, "%02x", *p++);
+		hash += 2;
+	}
+	*hash = '\0';
+	free(ctx);
+}
+
 off_t
 off_t
 buffer_write(buffer_data_t data, void *buf, off_t length, const char *desc)
 buffer_write(buffer_data_t data, void *buf, off_t length, const char *desc)
 {
 {
@@ -51,14 +81,7 @@ buffer_write(buffer_data_t data, void *buf, off_t length, const char *desc)
 	if (data->type & BUFFER_WRITE_SETUP) {
 	if (data->type & BUFFER_WRITE_SETUP) {
 		switch (data->type ^ BUFFER_WRITE_SETUP) {
 		switch (data->type ^ BUFFER_WRITE_SETUP) {
 		case BUFFER_WRITE_MD5:
 		case BUFFER_WRITE_MD5:
-		{
-			struct buffer_write_md5ctx *ctx;
-
-			ctx = m_malloc(sizeof(struct buffer_write_md5ctx));
-			ctx->hash = data->data.ptr;
-			data->data.ptr = ctx;
-			MD5Init(&ctx->ctx);
-		}
+			buffer_md5_init(data);
 			break;
 			break;
 		}
 		}
 		return 0;
 		return 0;
@@ -67,22 +90,7 @@ buffer_write(buffer_data_t data, void *buf, off_t length, const char *desc)
 	if (data->type & BUFFER_WRITE_SHUTDOWN) {
 	if (data->type & BUFFER_WRITE_SHUTDOWN) {
 		switch (data->type ^ BUFFER_WRITE_SHUTDOWN) {
 		switch (data->type ^ BUFFER_WRITE_SHUTDOWN) {
 		case BUFFER_WRITE_MD5:
 		case BUFFER_WRITE_MD5:
-		{
-			struct buffer_write_md5ctx *ctx;
-			unsigned char digest[16], *p = digest;
-			unsigned char *hash;
-			int i;
-
-			ctx = (struct buffer_write_md5ctx *)data->data.ptr;
-			*ctx->hash = hash = m_malloc(MD5HASHLEN + 1);
-			MD5Final(digest, &ctx->ctx);
-			for (i = 0; i < 16; ++i) {
-				sprintf((char *)hash, "%02x", *p++);
-				hash += 2;
-			}
-			*hash = '\0';
-			free(ctx);
-		}
+			buffer_md5_done(data);
 			break;
 			break;
 		}
 		}
 		return 0;
 		return 0;