The following commit has been merged in the master branch:
commit be09bdbe35b2160341d38faf8ad0e0344bce0f6d
Author: Guillem Jover <[email protected]>
Date:   Fri Aug 28 13:16:39 2009 +0200

    libdpkg: Refactor buffer initalizaion and destruction

diff --git a/lib/dpkg/buffer.c b/lib/dpkg/buffer.c
index b2b23d4..4a8ddd3 100644
--- a/lib/dpkg/buffer.c
+++ b/lib/dpkg/buffer.c
@@ -54,6 +54,17 @@ buffer_md5_init(buffer_data_t data)
        MD5Init(&ctx->ctx);
 }
 
+off_t
+buffer_init(buffer_data_t read_data, buffer_data_t write_data)
+{
+       switch (write_data->type) {
+       case BUFFER_WRITE_MD5:
+               buffer_md5_init(write_data);
+               break;
+       }
+       return 0;
+}
+
 static void
 buffer_md5_done(buffer_data_t data)
 {
@@ -74,27 +85,20 @@ buffer_md5_done(buffer_data_t data)
 }
 
 off_t
-buffer_write(buffer_data_t data, void *buf, off_t length, const char *desc)
+buffer_done(buffer_data_t read_data, buffer_data_t write_data)
 {
-       off_t ret = length;
-
-       if (data->type & BUFFER_WRITE_SETUP) {
-               switch (data->type ^ BUFFER_WRITE_SETUP) {
-               case BUFFER_WRITE_MD5:
-                       buffer_md5_init(data);
-                       break;
-               }
-               return 0;
+       switch (write_data->type) {
+       case BUFFER_WRITE_MD5:
+               buffer_md5_done(write_data);
+               break;
        }
+       return 0;
+}
 
-       if (data->type & BUFFER_WRITE_SHUTDOWN) {
-               switch (data->type ^ BUFFER_WRITE_SHUTDOWN) {
-               case BUFFER_WRITE_MD5:
-                       buffer_md5_done(data);
-                       break;
-               }
-               return 0;
-       }
+off_t
+buffer_write(buffer_data_t data, void *buf, off_t length, const char *desc)
+{
+       off_t ret = length;
 
        switch (data->type) {
        case BUFFER_WRITE_BUF:
@@ -135,11 +139,6 @@ buffer_read(buffer_data_t data, void *buf, off_t length, 
const char *desc)
 {
        off_t ret = length;
 
-       if (data->type & BUFFER_READ_SETUP)
-               return 0;
-       if (data->type & BUFFER_READ_SHUTDOWN)
-               return 0;
-
        switch (data->type) {
        case BUFFER_READ_FD:
                ret = read(data->data.i, buf, length);
@@ -175,21 +174,9 @@ buffer_copy_setup(buffer_arg argIn, int typeIn, void 
*procIn,
        if (procOut == NULL)
                write_data.proc = buffer_write;
 
-       read_data.type |= BUFFER_READ_SETUP;
-       read_data.proc(&read_data, NULL, 0, desc);
-       read_data.type = typeIn;
-
-       write_data.type |= BUFFER_WRITE_SETUP;
-       write_data.proc(&write_data, NULL, 0, desc);
-       write_data.type = typeOut;
-
+       buffer_init(&read_data, &write_data);
        ret = buffer_copy(&read_data, &write_data, limit, desc);
-
-       write_data.type |= BUFFER_WRITE_SHUTDOWN;
-       write_data.proc(&write_data, NULL, 0, desc);
-
-       read_data.type |= BUFFER_READ_SHUTDOWN;
-       read_data.proc(&read_data, NULL, 0, desc);
+       buffer_done(&read_data, &write_data);
 
        return ret;
 }
diff --git a/lib/dpkg/buffer.h b/lib/dpkg/buffer.h
index ca47e39..32de766 100644
--- a/lib/dpkg/buffer.h
+++ b/lib/dpkg/buffer.h
@@ -41,11 +41,6 @@ DPKG_BEGIN_DECLS
 #define BUFFER_READ_FD                 0
 #define BUFFER_READ_STREAM             1
 
-#define BUFFER_WRITE_SETUP             1 << 16
-#define BUFFER_READ_SETUP              1 << 17
-#define BUFFER_WRITE_SHUTDOWN          1 << 18
-#define BUFFER_READ_SHUTDOWN           1 << 19
-
 typedef struct buffer_data *buffer_data_t;
 
 typedef off_t (*buffer_proc_t)(buffer_data_t data, void *buf, off_t size,
@@ -169,6 +164,8 @@ off_t buffer_write(buffer_data_t data, void *buf,
                    off_t length, const char *desc);
 off_t buffer_read(buffer_data_t data, void *buf,
                   off_t length, const char *desc);
+off_t buffer_init(buffer_data_t read_data, buffer_data_t write_data);
+off_t buffer_done(buffer_data_t read_data, buffer_data_t write_data);
 off_t buffer_copy(buffer_data_t read_data, buffer_data_t write_data,
                   off_t limit, const char *desc);
 

-- 
dpkg's main repository


-- 
To UNSUBSCRIBE, email to [email protected]
with a subject of "unsubscribe". Trouble? Contact [email protected]

Reply via email to