chiark / gitweb /
Remove build products
[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: ring.c,v 1.8 2008/03/07 13:16:02 james Exp $";
10
11 /* 
12  * $Log: ring.c,v $
13  * Revision 1.8  2008/03/07 13:16:02  james
14  * *** empty log message ***
15  *
16  * Revision 1.7  2008/03/07 12:37:04  james
17  * *** empty log message ***
18  *
19  * Revision 1.6  2008/03/03 06:04:42  james
20  * *** empty log message ***
21  *
22  * Revision 1.5  2008/03/02 10:37:56  james
23  * *** empty log message ***
24  *
25  * Revision 1.4  2008/02/13 16:57:29  james
26  * *** empty log message ***
27  *
28  * Revision 1.3  2008/02/13 09:12:21  james
29  * *** empty log message ***
30  *
31  * Revision 1.2  2008/02/12 22:36:46  james
32  * *** empty log message ***
33  *
34  * Revision 1.1  2008/02/08 15:06:42  james
35  * *** empty log message ***
36  *
37  */
38
39 #include "project.h"
40
41 int
42 ring_read (Ring * r, void *b, int n)
43 {
44   int red = 0;
45
46   while (n--) {
47
48     if (!ring_read_one (r, b))
49       break;
50
51     b++;
52     red++;
53   }
54
55   return red;
56 }
57
58 int
59 ring_write (Ring * r, void *b, int n)
60 {
61   int writ = 0;
62
63   while (n--) {
64
65     if (!ring_write_one (r, b))
66       break;
67
68     b++;
69     writ++;
70   }
71
72   return writ;
73 }
74
75 int
76 ring_space (Ring * r)
77 {
78   int i;
79
80   i = r->size - RING_NEXT_W (r) + r->rptr;
81   i %= r->size;
82   return i;
83 }
84
85 int
86 ring_bytes (Ring * r)
87 {
88   int i;
89
90   i = r->size + r->wptr - r->rptr;
91   i %= r->size;
92   return i;
93 }
94
95
96
97
98 Ring *
99 ring_new (int n)
100 {
101   Ring *ret = (Ring *) xmalloc (sizeof (Ring));
102   ret->ring = (uint8_t *) xmalloc (n);
103   ret->size = n;
104   ret->wptr = ret->rptr = 0;
105
106   return ret;
107 }