/[public]/psiconv/trunk/lib/psiconv/buffer.c
ViewVC logotype

Diff of /psiconv/trunk/lib/psiconv/buffer.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 157 Revision 158
84psiconv_u32 psiconv_buffer_length(const psiconv_buffer buf) 84psiconv_u32 psiconv_buffer_length(const psiconv_buffer buf)
85{ 85{
86 return psiconv_list_length(buf->data); 86 return psiconv_list_length(buf->data);
87} 87}
88 88
89
90psiconv_u8 *psiconv_buffer_get(const psiconv_buffer buf, psiconv_u32 off) 89psiconv_u8 *psiconv_buffer_get(const psiconv_buffer buf, psiconv_u32 off)
91{ 90{
92 return psiconv_list_get(buf->data,off); 91 return psiconv_list_get(buf->data,off);
93} 92}
94 93
95int psiconv_buffer_add(psiconv_buffer buf,psiconv_u8 data) 94int psiconv_buffer_add(psiconv_buffer buf,psiconv_u8 data)
96{ 95{
97 return psiconv_list_add(buf->data,&data); 96 return psiconv_list_add(buf->data,&data);
98} 97}
99 98
100size_t psiconv_buffer_fread(psiconv_buffer buf,size_t size, FILE *f) 99size_t psiconv_buffer_fread(psiconv_buffer buf, size_t size, FILE *f)
101{ 100{
102 return psiconv_list_fread(buf->data,size,f); 101 return psiconv_list_fread(buf->data,size,f);
103} 102}
104 103
105int psiconv_buffer_fread_all(psiconv_buffer buf, FILE *f) 104int psiconv_buffer_fread_all(psiconv_buffer buf, FILE *f)
108} 107}
109 108
110int psiconv_buffer_fwrite_all(const psiconv_buffer buf, FILE *f) 109int psiconv_buffer_fwrite_all(const psiconv_buffer buf, FILE *f)
111{ 110{
112 return psiconv_list_fwrite_all(buf->data,f); 111 return psiconv_list_fwrite_all(buf->data,f);
112}
113
114int psiconv_buffer_subbuffer(psiconv_buffer *buf, const psiconv_buffer org,
115 psiconv_u32 offset, psiconv_u32 length)
116{
117 int i;
118 int res;
119 psiconv_u8 *data;
120 if (! (*buf = psiconv_buffer_new())) {
121 res = PSICONV_E_NOMEM;
122 goto ERROR1;
123 }
124 for (i = 0; i < length; i++) {
125 if (!(data = psiconv_buffer_get(org,offset+i))) {
126 res = PSICONV_E_OTHER;
127 goto ERROR2;
128 }
129 if ((res = psiconv_buffer_add(*buf,*data))) {
130 goto ERROR2;
131 }
132 }
133
134ERROR2:
135 psiconv_buffer_free(*buf);
136ERROR1:
137 return res;
113} 138}
114 139
115int psiconv_buffer_concat(psiconv_buffer buf, const psiconv_buffer extra) 140int psiconv_buffer_concat(psiconv_buffer buf, const psiconv_buffer extra)
116{ 141{
117 int res; 142 int res;

Legend:
Removed from v.157  
changed lines
  Added in v.158

frodo@frodo.looijaard.name
ViewVC Help
Powered by ViewVC 1.1.26