File: test23.c

package info (click to toggle)
uthash 2.3.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,788 kB
  • sloc: ansic: 9,838; makefile: 178; perl: 88; sh: 37; cpp: 30
file content (53 lines) | stat: -rw-r--r-- 1,306 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include <stdio.h>
#include "ringbuf.h"

int main() {
  int sc, rc = -1;
  size_t len;
  char *data;

  ringbuf *r = NULL;
  r = ringbuf_new(10);
  if (r == NULL) goto done;

  sc = ringbuf_put(r, "hello, ed", 9);
  if (sc < 0) goto done;

  len = ringbuf_get_next_chunk(r, &data);
  assert(len == 9);
  printf("next chunk length : %zu\n", len);
  printf("%.*s\n", (int)len, data);
  ringbuf_mark_consumed(r, len);

  /* now there are 10 bytes free but only 1 contiguous */
  len = ringbuf_get_writable(r, &data);
  if (len) printf("writable space: %zu\n", len);
  assert(len == 1);
  memcpy(data, "a", 1);
  ringbuf_wrote(r, len);

  /* now there are 9 bytes free, starting at wrap */
  len = ringbuf_get_writable(r, &data);
  if (len) printf("writable space: %zu\n", len);
  assert(len == 9);
  memcpy(data, "bcdefghij", 9);
  ringbuf_wrote(r, len);

  /* read a */
  len = ringbuf_get_next_chunk(r, &data);
  assert(len == 1);
  printf("next chunk length : %zu\n", len);
  printf("%.*s\n", (int)len, data);
  ringbuf_mark_consumed(r, len);

  /* read bcdefghij after the wrap */
  len = ringbuf_get_next_chunk(r, &data);
  assert(len == 9);
  printf("next chunk length : %zu\n", len);
  printf("%.*s\n", (int)len, data);
  ringbuf_mark_consumed(r, len);

 done:
  if (r) ringbuf_free(r);
  return rc;
}