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>