Index: ossp-pkg/xds/vencode.c RCS File: /v/ossp/cvs/ossp-pkg/xds/Attic/vencode.c,v rcsdiff -q -kk '-r1.12.2.2' '-r1.12.2.3' -u '/v/ossp/cvs/ossp-pkg/xds/Attic/vencode.c,v' 2>/dev/null --- vencode.c 2001/08/01 11:26:16 1.12.2.2 +++ vencode.c 2001/08/01 12:01:32 1.12.2.3 @@ -63,26 +63,6 @@ xds->we_own_buffer = XDS_TRUE; } - /* Ensure the buffer has free space. */ - - assert(xds->buffer_len <= xds->buffer_capacity); - if (xds->buffer_len == xds->buffer_capacity) - { - if (xds->we_own_buffer) - { - rc = xds_set_capacity((void**)&xds->buffer, - &xds->buffer_capacity, - xds->buffer_len + 1, - sizeof(char), - XDS_INITIAL_BUFFER_CAPACITY); - assert(rc == XDS_OK || rc == XDS_ERR_NO_MEM); - if (rc != XDS_OK) - return rc; - } - else - return XDS_ERR_OVERFLOW; - } - /* Iterate through the items in the format string and execute the apropriate engines. */ @@ -101,37 +81,28 @@ if (strlen(name) > 0) { + int restart_engine; + size_t used_buffer_size; size_t pos; - if (xds_find_engine(xds->engines, xds->engines_len, name, &pos)) + + if (xds_find_engine(xds->engines, xds->engines_len, name, &pos) == XDS_FALSE) { - int restart_engine; - size_t used_buffer_size; - do - { - args_backup = args; - rc = (*xds->engines[pos].engine)(xds, - xds->engines[pos].context, - xds->buffer + xds->buffer_len, - xds->buffer_capacity - xds->buffer_len, - &used_buffer_size, - &args); - assert(rc <= 0); - if (rc == XDS_OK) - { - restart_engine = XDS_FALSE; - xds->buffer_len += used_buffer_size; - } - else if (rc == XDS_ERR_OVERFLOW) - { /* enlarge buffer */ - if (!xds->we_own_buffer) - goto leave; + rc = XDS_ERR_UNKNOWN_ENGINE; + goto leave; + } - restart_engine = XDS_TRUE; - args = args_backup; + do + { + /* Ensure the buffer has free space. */ + assert(xds->buffer_len <= xds->buffer_capacity); + if (xds->buffer_len == xds->buffer_capacity) + { + if (xds->we_own_buffer) + { rc = xds_set_capacity((void**)&xds->buffer, &xds->buffer_capacity, - xds->buffer_capacity + 1, + xds->buffer_len + 1, sizeof(char), XDS_INITIAL_BUFFER_CAPACITY); assert(rc == XDS_OK || rc == XDS_ERR_NO_MEM); @@ -139,15 +110,48 @@ goto leave; } else + { + rc = XDS_ERR_OVERFLOW; goto leave; + } } - while (restart_engine); - } - else - { - rc = XDS_ERR_UNKNOWN_ENGINE; - goto leave; + + /* Execute the engine. */ + + args_backup = args; + rc = (*xds->engines[pos].engine)(xds, + xds->engines[pos].context, + xds->buffer + xds->buffer_len, + xds->buffer_capacity - xds->buffer_len, + &used_buffer_size, + &args); + assert(rc <= 0); + if (rc == XDS_OK) + { + restart_engine = XDS_FALSE; + xds->buffer_len += used_buffer_size; + } + else if (rc == XDS_ERR_OVERFLOW) + { /* enlarge buffer */ + if (!xds->we_own_buffer) + goto leave; + + restart_engine = XDS_TRUE; + args = args_backup; + + rc = xds_set_capacity((void**)&xds->buffer, + &xds->buffer_capacity, + xds->buffer_capacity + 1, + sizeof(char), + XDS_INITIAL_BUFFER_CAPACITY); + assert(rc == XDS_OK || rc == XDS_ERR_NO_MEM); + if (rc != XDS_OK) + goto leave; + } + else + goto leave; } + while (restart_engine); } } rc = XDS_OK;