Stream copy functions provide a way to copy all - or a limited amount of - data from one stream to another.
Since the read/write functions of a UCX buffer are fully compatible with stream read/write functions, you can, for example, easily transfer data from a file or network stream to a UCX buffer or vice versa.
All functions in the stream copy family use the rfnc to read data from src and use the wfnc to write the data to dest.
The cx_stream_copy() function always uses internal stack memory as a temporary buffer for the read bytes. The cx_stream_bcopy() function uses either a pre-initialized buffer buf of length bufsize or, if buf is NULL, an internal heap-allocated buffer.
The cx_stream_ncopy() function behaves like cx_stream_copy() except, that it reads at most n bytes (and the same is true for cx_stream_bncopy() and cx_stream_bcopy()).
Example
The following example shows, how to read the contents of a file into a buffer:
FILE *inputfile = fopen(infilename, "r");
if (inputfile) {
CxBuffer fbuf;
cxBufferInit(&fbuf, NULL, 4096, NULL, CX_BUFFER_AUTO_EXTEND);
cx_stream_copy(inputfile, &fbuf,
(cx_read_func) fread,
cxBufferWriteFunc);
fclose(inputfile);
// ... do something meaningful with the contents ...
cxBufferDestroy(&fbuf);
} else {
perror("Error opening input file");
}