X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=libcitadel%2Ftests%2Fstringbuf_stream.c;h=32d4e779ece6d9468b9a9949dbc5a2bf59f87e20;hb=b826c3117bb7ddf1386a4811cb2eb47ea4e1097c;hp=6ea03a7b19dd8c809cdab0e04e52624ea0f0934e;hpb=e50541a93234d675ea8e0055326f335daa1ced76;p=citadel.git diff --git a/libcitadel/tests/stringbuf_stream.c b/libcitadel/tests/stringbuf_stream.c index 6ea03a7b1..32d4e779e 100644 --- a/libcitadel/tests/stringbuf_stream.c +++ b/libcitadel/tests/stringbuf_stream.c @@ -70,8 +70,10 @@ static void StreamEncode(void) IOBuffer ReadBuffer; IOBuffer WriteBuffer; int err; + const char *Err = NULL; + int ret = 0; int done = 0; - void *vStream; + vStreamT *vStream; memset(&ReadBuffer, 0, sizeof(IOBuffer)); memset(&WriteBuffer, 0, sizeof(IOBuffer)); @@ -95,33 +97,35 @@ static void StreamEncode(void) ST = eBase64Decode; else ST = eEmtyCodec; - vStream = StrBufNewStreamContext(ST); + vStream = StrBufNewStreamContext(ST, &Err); while (!done && (fdin >= 0) && (fdout >= 0) && (!feof(stdin))) { done = StrBuf_read_one_chunk_callback(fdin, 0, - &ReadBuffer) < SIZ * 4; + &ReadBuffer) < (SIZ * 4) -1 ; if (IOBufferStrLength(&ReadBuffer) == 0) { done = 1; } do { - StrBufStreamTranscode(ST, &WriteBuffer, &ReadBuffer, NULL, -1, vStream, done); - - while (IOBufferStrLength(&WriteBuffer) > 0) - { - err = StrBuf_write_one_chunk_callback(fdout, - 0, - &WriteBuffer); - } + do { + ret = StrBufStreamTranscode(ST, &WriteBuffer, &ReadBuffer, NULL, -1, vStream, done, &Err); + + while (IOBufferStrLength(&WriteBuffer) > 0) + { + err = StrBuf_write_one_chunk_callback(fdout, + 0, + &WriteBuffer); + } + } while (ret > 0); } while (IOBufferStrLength(&ReadBuffer) > 0); } - StrBufDestroyStreamContext(ST, &vStream); + StrBufDestroyStreamContext(ST, &vStream, &Err); FreeStrBuf(&ReadBuffer.Buf); FreeStrBuf(&WriteBuffer.Buf); @@ -153,7 +157,6 @@ int main(int argc, char* argv[]) } - StartLibCitadel(8); StreamEncode(); return 0;