File:
[ELWIX - Embedded LightWeight unIX -] /
libelwix /
example /
test_lrbuf.c
Revision
1.2:
download - view:
text,
annotated -
select for diffs -
revision graph
Tue Feb 10 17:50:00 2026 UTC (9 days, 23 hours ago) by
misho
Branches:
MAIN
CVS tags:
elwix6_18,
elwix6_17,
elwix6_16,
elwix6_15,
elwix6_14,
HEAD,
ELWIX6_17,
ELWIX6_16,
ELWIX6_15,
ELWIX6_14,
ELWIX6_13
Version 6.13
Changelog:
- Implements linear ring buffer
1: #include <stdio.h>
2: #include <stdlib.h>
3: #include <elwix.h>
4:
5:
6: int
7: main(int argc, char **argv)
8: {
9: lrbuf_t lrb = { 0 };
10: int res, len;
11: char line[STRSIZ];
12:
13: res = lrb_init(&lrb, 32);
14: printf("lrb_init(32) -> #%d\n", res);
15:
16: lrb_queued(&lrb, res);
17: printf("lrb_queued -> #%d\n", res);
18: lrb_unused(&lrb, res);
19: printf("lrb_unused -> #%d\n", res);
20:
21: while (fgets(line, sizeof line - 1, stdin)) {
22: if (!strcmp(line, ".\n"))
23: break;
24: printf("isempty() -> #%d\n", lrb_isempty(&lrb));
25: printf("isfull() -> #%d\n", lrb_isfull(&lrb));
26:
27: lrb_queued(&lrb, res);
28: printf("e1_lrb_queued -> #%d\n", res);
29: lrb_unused(&lrb, res);
30: printf("e1_lrb_unused -> #%d\n", res);
31: res = lrb_enqueue(&lrb, line, strlen(line), argc > 1);
32: printf("lrb_enqueue(%d, %d) -> #%d\n", strlen(line), argc > 1, res);
33: lrb_queued(&lrb, res);
34: printf("e2_lrb_queued -> #%d\n", res);
35: lrb_unused(&lrb, res);
36: printf("e2_lrb_unused -> #%d\n", res);
37: }
38:
39: lrb_queued(&lrb, res);
40: printf("lrb_queued -> #%d\n", res);
41: lrb_unused(&lrb, res);
42: printf("lrb_unused -> #%d\n", res);
43:
44: while (fgets(line, sizeof line - 1, stdin)) {
45: if (!strcmp(line, ".\n"))
46: break;
47: printf("isempty() -> #%d\n", lrb_isempty(&lrb));
48: printf("isfull() -> #%d\n", lrb_isfull(&lrb));
49:
50: lrb_queued(&lrb, res);
51: printf("d1_lrb_queued -> #%d\n", res);
52: lrb_unused(&lrb, res);
53: printf("d1_lrb_unused -> #%d\n", res);
54: len = strtol(line, NULL, 10);
55: memset(line, 0, sizeof line);
56: res = lrb_dequeue(&lrb, line, MIN(len, sizeof line));
57: printf("lrb_dequeue(%d) -> #%d\n", len, res);
58: printf("LINE='%s'\n", line);
59: lrb_queued(&lrb, res);
60: printf("d2_lrb_queued -> #%d\n", res);
61: lrb_unused(&lrb, res);
62: printf("d2_lrb_unused -> #%d\n", res);
63: }
64:
65: lrb_queued(&lrb, res);
66: printf("lrb_queued -> #%d\n", res);
67: lrb_unused(&lrb, res);
68: printf("lrb_unused -> #%d\n", res);
69:
70: res = lrb_dequeue(&lrb, NULL, 2);
71: printf("lrb_dequeue(2) -> #%d\n", res);
72:
73: lrb_queued(&lrb, res);
74: printf("lrb_queued -> #%d\n", res);
75: lrb_unused(&lrb, res);
76: printf("lrb_unused -> #%d\n", res);
77:
78: lrb_purge(&lrb);
79: printf("isempty() -> #%d\n", lrb_isempty(&lrb));
80: printf("isfull() -> #%d\n", lrb_isfull(&lrb));
81:
82: lrb_free(&lrb);
83: printf("Done.\n");
84: return 0;
85: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>