3#include <winpr/stream.h>
5#include <winpr/crypto.h>
7#include <freerdp/freerdp.h>
8#include <freerdp/streamdump.h>
10#include "../streamdump.h"
12static BOOL test_entry_read_write(
void)
21 BYTE tmp[16] = WINPR_C_ARRAY_INIT;
22 char tmp2[64] = WINPR_C_ARRAY_INIT;
24 size_t entrysize =
sizeof(UINT64) +
sizeof(BYTE) +
25 sizeof(UINT32) +
sizeof(UINT64) ;
27 if (winpr_RAND(tmp,
sizeof(tmp)) < 0)
30 for (
size_t x = 0; x <
sizeof(tmp); x++)
31 (
void)_snprintf(&tmp2[x * 2],
sizeof(tmp2) - 2 * x,
"%02" PRIx8, tmp[x]);
32 name = GetKnownSubPath(KNOWN_PATH_TEMP, tmp2);
35 (void)fprintf(stderr,
"[%s] Could not create temporary path\n", __func__);
39 sw = Stream_New(
nullptr, 8123);
40 sr = Stream_New(
nullptr, 1024);
43 (void)fprintf(stderr,
"[%s] Could not create iostreams sw=%p, sr=%p\n", __func__, (
void*)sw,
48 if (winpr_RAND(Stream_Buffer(sw), Stream_Capacity(sw)) < 0)
50 entrysize += Stream_Capacity(sw);
51 Stream_SetLength(sw, Stream_Capacity(sw));
53 fp = fopen(name,
"wb");
56 if (!stream_dump_write_line(fp, 0, sw))
60 fp = fopen(name,
"rb");
63 if (!stream_dump_read_line(fp, sr, &ts, &offset, &flags))
66 if (entrysize != offset)
68 (void)fprintf(stderr,
"[%s] offset %" PRIuz
" bytes, entrysize %" PRIuz
" bytes\n",
69 __func__, offset, entrysize);
73 if (Stream_Length(sr) != Stream_Capacity(sw))
75 (void)fprintf(stderr,
"[%s] Written %" PRIuz
" bytes, read %" PRIuz
" bytes\n", __func__,
76 Stream_Length(sr), Stream_Capacity(sw));
80 if (memcmp(Stream_Buffer(sw), Stream_Buffer(sr), Stream_Capacity(sw)) != 0)
82 (void)fprintf(stderr,
"[%s] Written data does not match data read back\n", __func__);
87 Stream_Free(sr, TRUE);
88 Stream_Free(sw, TRUE);
92 winpr_DeleteFile(name);
94 (void)fprintf(stderr,
"xxxxxxxxxxxxx %d\n", rc);
98int TestStreamDump(
int argc,
char* argv[])
103 if (!test_entry_read_write())