chiark / gitweb /
f9ef6af861600260236b25e62cf5d413eec8405f
[sympathy.git] / src / ring.c
1 /*
2  * ring.c:
3  *
4  * Copyright (c) 2008 James McKenzie <james@fishsoup.dhs.org>,
5  * All rights reserved.
6  *
7  */
8
9 static char rcsid[] = "$Id$";
10
11 /*
12  * $Log$
13  * Revision 1.2  2008/02/12 22:36:46  james
14  * *** empty log message ***
15  *
16  * Revision 1.1  2008/02/08 15:06:42  james
17  * *** empty log message ***
18  *
19  */
20
21 #include "project.h"
22
23 int
24 ring_read (Ring * r, void *b, int n)
25 {
26   int red = 0;
27
28   while (n--)
29     {
30
31       if (!ring_read_one (r, b))
32         break;
33
34       b++;
35       red++;
36     }
37
38   return red;
39 }
40
41 int
42 ring_write (Ring * r, void *b, int n)
43 {
44   int writ = 0;
45
46   while (n--)
47     {
48
49       if (!ring_write_one (r, b))
50         break;
51
52       b++;
53       writ++;
54     }
55
56   return writ;
57 }
58
59
60
61 Ring *
62 ring_new (int n)
63 {
64   Ring *ret = (Ring *) malloc (sizeof (Ring));
65   ret->buf = (uint8_t *) malloc (n);
66   ret->size = n;
67   ret->wptr = ret->rptr = 0;
68
69   return ret;
70 }