Add example usage of ring

This commit is contained in:
Nicholas Chambers 2020-05-30 01:49:22 -05:00
parent d6f8c09e17
commit cda757e8b4
1 changed files with 68 additions and 0 deletions

68
example/ex.c Normal file
View File

@ -0,0 +1,68 @@
#include <ring.h>
#include <stdio.h>
#include <string.h>
int main(int argc, char **argv) {
struct ring_t buf;
struct ring_t *res = ring_new(&buf, 20);
if(res == NULL) {
fprintf(stderr, "uh oh\n");
return 1;
}
char *write_str = strdup("abcdefghijklmnopqrstuvwxyz");
size_t len = ring_write(&buf, write_str, 26);
if(len != 6) {
fprintf(stderr, "what happened? (%zu)\n", len);
return 1;
}
len = 5;
char *read_str = ring_read(&buf, &len);
if(len) {
fprintf(stderr, "that's not good (%zu)\n", len);
return 1;
}
printf("first read: %s\n", read_str);
len = ring_write(&buf, write_str + 20, 6);
if(len != 1) {
fprintf(stderr, "you should probably fix this\n");
return 1;
}
len = 10;
read_str = ring_read(&buf, &len);
if(len) {
fprintf(stderr, "hmmmm\n");
return 1;
}
printf("second read: %s\n", read_str);
len = ring_write(&buf, write_str + 25, 1);
len = ring_write(&buf, write_str, 26);
printf("didn't write %zu characters\n", len);
len = 20;
read_str = ring_read(&buf, &len);
printf("final read (20): %s\n", read_str);
ring_del(&buf);
return 0;
}
/*
struct ring_t *ring_new(struct ring_t *buf, size_t len);
size_t ring_write(struct ring_t *buf, char *str, size_t orig_len);
char *ring_read(struct ring_t *buf, size_t *len);
char *ring_readln(struct ring_t *buf, size_t *len);
void ring_del(struct ring_t *buf);
*/