source: svn/trunk/newcon3bcm2_21bu/dta/src/stdio.c @ 2

Last change on this file since 2 was 2, checked in by phkim, 11 years ago

1.phkim

  1. revision copy newcon3sk r27
  • Property svn:executable set to *
File size: 18.7 KB
Line 
1#include "bstd.h"
2#include "ministd.h"
3#include "stdio.h"
4
5BDBG_MODULE(stdio);             /* Register software module with debug interface */
6
7
8typedef struct mem_io_t
9{
10        char *name;
11        bool open;
12        uint8_t *data;
13        unsigned int  *size;
14        unsigned int  cnt;
15}mem_io_t;
16
17#ifdef CONFIG_DCC_TEST
18/* 480i Standard Fonts */
19extern const unsigned char g_cinecavB14_type[];
20extern unsigned int g_cinecavB14_type_size;
21extern const unsigned char g_cinecavB18_type[];
22extern unsigned int g_cinecavB18_type_size;
23extern const unsigned char g_cinecavB22_type[];
24extern unsigned int g_cinecavB22_type_size;
25extern const unsigned char g_cinecavB14_mono[];
26extern unsigned int g_cinecavB14_mono_size;
27extern const unsigned char g_cinecavB18_mono[];
28extern unsigned int g_cinecavB18_mono_size;
29extern const unsigned char g_cinecavB22_mono[];
30extern unsigned int g_cinecavB22_mono_size;
31extern const unsigned char g_cinecavB12_serif[];
32extern unsigned int g_cinecavB12_serif_size;
33extern const unsigned char g_cinecavB15_serif[];
34extern unsigned int g_cinecavB15_serif_size;
35extern const unsigned char g_cinecavB19_serif[];
36extern unsigned int g_cinecavB19_serif_size;
37extern const unsigned char g_cinecavB12_sans[];
38extern unsigned int g_cinecavB12_sans_size;     
39extern const unsigned char g_cinecavB15_sans[];
40extern unsigned int g_cinecavB15_sans_size;     
41extern const unsigned char g_cinecavB19_sans[];
42extern unsigned int g_cinecavB19_sans_size; 
43extern const unsigned char g_cinecavB13_casual[];
44extern unsigned int g_cinecavB13_casual_size;   
45extern const unsigned char g_cinecavB16_casual[];
46extern unsigned int g_cinecavB16_casual_size;   
47extern const unsigned char g_cinecavB20_casual[];
48extern unsigned int g_cinecavB20_casual_size;   
49extern const unsigned char g_cinecavB12_script[];
50extern unsigned int g_cinecavB12_script_size;   
51extern const unsigned char g_cinecavB14_script[];
52extern unsigned int g_cinecavB14_script_size;   
53extern const unsigned char g_cinecavB18_script[];
54extern unsigned int g_cinecavB18_script_size;   
55extern const unsigned char g_cinecavB13_sc[];
56extern unsigned int g_cinecavB13_sc_size;               
57extern const unsigned char g_cinecavB15_sc[];
58extern unsigned int g_cinecavB15_sc_size;       
59extern const unsigned char g_cinecavB19_sc[];
60extern unsigned int g_cinecavB19_sc_size;               
61/* 480i Italic Fonts */
62extern const unsigned char g_cinecavB14i_type[];
63extern unsigned int g_cinecavB14i_type_size;
64extern const unsigned char g_cinecavB18i_type[];
65extern unsigned int g_cinecavB18i_type_size;
66extern const unsigned char g_cinecavB22i_type[];
67extern unsigned int g_cinecavB22i_type_size;
68extern const unsigned char g_cinecavB14i_mono[];
69extern unsigned int g_cinecavB14i_mono_size;
70extern const unsigned char g_cinecavB18i_mono[];
71extern unsigned int g_cinecavB18i_mono_size;
72extern const unsigned char g_cinecavB22i_mono[];
73extern unsigned int g_cinecavB22i_mono_size;
74extern const unsigned char g_cinecavB12i_serif[];
75extern unsigned int g_cinecavB12i_serif_size;
76extern const unsigned char g_cinecavB15i_serif[];
77extern unsigned int g_cinecavB15i_serif_size;
78extern const unsigned char g_cinecavB19i_serif[];
79extern unsigned int g_cinecavB19i_serif_size;
80extern const unsigned char g_cinecavB12i_sans[];
81extern unsigned int g_cinecavB12i_sans_size;   
82extern const unsigned char g_cinecavB15i_sans[];
83extern unsigned int g_cinecavB15i_sans_size;   
84extern const unsigned char g_cinecavB19i_sans[];
85extern unsigned int g_cinecavB19i_sans_size; 
86extern const unsigned char g_cinecavB13i_casual[];
87extern unsigned int g_cinecavB13i_casual_size; 
88extern const unsigned char g_cinecavB16i_casual[];
89extern unsigned int g_cinecavB16i_casual_size; 
90extern const unsigned char g_cinecavB20i_casual[];
91extern unsigned int g_cinecavB20i_casual_size; 
92extern const unsigned char g_cinecavB12i_script[];
93extern unsigned int g_cinecavB12i_script_size; 
94extern const unsigned char g_cinecavB14i_script[];
95extern unsigned int g_cinecavB14i_script_size;   
96extern const unsigned char g_cinecavB18i_script[];
97extern unsigned int g_cinecavB18i_script_size; 
98extern const unsigned char g_cinecavB13i_sc[];
99extern unsigned int g_cinecavB13i_sc_size;             
100extern const unsigned char g_cinecavB15i_sc[];
101extern unsigned int g_cinecavB15i_sc_size;     
102extern const unsigned char g_cinecavB19i_sc[];
103extern unsigned int g_cinecavB19i_sc_size;             
104/*1080i Standard Fonts */
105extern const unsigned char g_cinecavB32_type[];
106extern unsigned int g_cinecavB32_type_size;
107extern const unsigned char g_cinecavB41_type[];
108extern unsigned int g_cinecavB41_type_size;
109extern const unsigned char g_cinecavB49_type[];
110extern unsigned int g_cinecavB49_type_size;
111extern const unsigned char g_cinecavB34_mono[];
112extern unsigned int g_cinecavB34_mono_size;
113extern const unsigned char g_cinecavB43_mono[];
114extern unsigned int g_cinecavB43_mono_size;
115extern const unsigned char g_cinecavB52_mono[];
116extern unsigned int g_cinecavB52_mono_size;
117extern const unsigned char g_cinecavB28_serif[];
118extern unsigned int g_cinecavB28_serif_size;
119extern const unsigned char g_cinecavB35_serif[];
120extern unsigned int g_cinecavB35_serif_size;
121extern const unsigned char g_cinecavB44_serif[];
122extern unsigned int g_cinecavB44_serif_size;
123extern const unsigned char g_cinecavB28_sans[];
124extern unsigned int g_cinecavB28_sans_size;     
125extern const unsigned char g_cinecavB35_sans[];
126extern unsigned int g_cinecavB35_sans_size;     
127extern const unsigned char g_cinecavB44_sans[];
128extern unsigned int g_cinecavB44_sans_size; 
129extern const unsigned char g_cinecavB30_casual[];
130extern unsigned int g_cinecavB30_casual_size;   
131extern const unsigned char g_cinecavB36_casual[];
132extern unsigned int g_cinecavB36_casual_size;   
133extern const unsigned char g_cinecavB45_casual[];
134extern unsigned int g_cinecavB45_casual_size;   
135extern const unsigned char g_cinecavB25_script[];
136extern unsigned int g_cinecavB25_script_size;   
137extern const unsigned char g_cinecavB28_script[];
138extern unsigned int g_cinecavB28_script_size;   
139extern const unsigned char g_cinecavB38_script[];
140extern unsigned int g_cinecavB38_script_size;   
141extern const unsigned char g_cinecavB28_sc[];
142extern unsigned int g_cinecavB28_sc_size;               
143extern const unsigned char g_cinecavB35_sc[];
144extern unsigned int g_cinecavB35_sc_size;       
145extern const unsigned char g_cinecavB45_sc[];
146extern unsigned int g_cinecavB45_sc_size;       
147/*1080i Italic Fonts */
148extern const unsigned char g_cinecavB32i_type[];
149extern unsigned int g_cinecavB32i_type_size;
150extern const unsigned char g_cinecavB41i_type[];
151extern unsigned int g_cinecavB41i_type_size;
152extern const unsigned char g_cinecavB49i_type[];
153extern unsigned int g_cinecavB49i_type_size;
154extern const unsigned char g_cinecavB34i_mono[];
155extern unsigned int g_cinecavB34i_mono_size;
156extern const unsigned char g_cinecavB43i_mono[];
157extern unsigned int g_cinecavB43i_mono_size;
158extern const unsigned char g_cinecavB52i_mono[];
159extern unsigned int g_cinecavB52i_mono_size;
160extern const unsigned char g_cinecavB28i_serif[];
161extern unsigned int g_cinecavB28i_serif_size;
162extern const unsigned char g_cinecavB35i_serif[];
163extern unsigned int g_cinecavB35i_serif_size;
164extern const unsigned char g_cinecavB44i_serif[];
165extern unsigned int g_cinecavB44i_serif_size;
166extern const unsigned char g_cinecavB28i_sans[];
167extern unsigned int g_cinecavB28i_sans_size;   
168extern const unsigned char g_cinecavB35i_sans[];
169extern unsigned int g_cinecavB35i_sans_size;   
170extern const unsigned char g_cinecavB44i_sans[];
171extern unsigned int g_cinecavB44i_sans_size; 
172extern const unsigned char g_cinecavB30i_casual[];
173extern unsigned int g_cinecavB30i_casual_size; 
174extern const unsigned char g_cinecavB36i_casual[];
175extern unsigned int g_cinecavB36i_casual_size; 
176extern const unsigned char g_cinecavB45i_casual[];
177extern unsigned int g_cinecavB45i_casual_size; 
178extern const unsigned char g_cinecavB25i_script[];
179extern unsigned int g_cinecavB25i_script_size; 
180extern const unsigned char g_cinecavB28i_script[];
181extern unsigned int g_cinecavB28i_script_size;   
182extern const unsigned char g_cinecavB38i_script[];
183extern unsigned int g_cinecavB38i_script_size; 
184extern const unsigned char g_cinecavB28i_sc[];
185extern unsigned int g_cinecavB28i_sc_size;             
186extern const unsigned char g_cinecavB35i_sc[];
187extern unsigned int g_cinecavB35i_sc_size;     
188extern const unsigned char g_cinecavB45i_sc[];
189extern unsigned int g_cinecavB45i_sc_size;     
190
191
192
193static mem_io_t g_files[] =
194{
195        /* 480i Standard Fonts */
196        { "cc_fonts/cinecavB14_type.bwin_font",false,(uint8_t*)g_cinecavB14_type,&g_cinecavB14_type_size,0},
197        { "cc_fonts/cinecavB18_type.bwin_font",false,(uint8_t*)g_cinecavB18_type,&g_cinecavB18_type_size,0},
198        { "cc_fonts/cinecavB22_type.bwin_font",false,(uint8_t*)g_cinecavB22_type,&g_cinecavB22_type_size,0},
199        { "cc_fonts/cinecavB12_serif.bwin_font",false,(uint8_t*)g_cinecavB12_serif,&g_cinecavB12_serif_size,0},
200        { "cc_fonts/cinecavB15_serif.bwin_font",false,(uint8_t*)g_cinecavB15_serif,&g_cinecavB15_serif_size,0},
201        { "cc_fonts/cinecavB19_serif.bwin_font",false,(uint8_t*)g_cinecavB19_serif,&g_cinecavB19_serif_size,0},
202        { "cc_fonts/cinecavB14_mono.bwin_font",false,(uint8_t*)g_cinecavB14_mono,&g_cinecavB14_mono_size,0},
203        { "cc_fonts/cinecavB18_mono.bwin_font",false,(uint8_t*)g_cinecavB18_mono,&g_cinecavB18_mono_size,0},
204        { "cc_fonts/cinecavB22_mono.bwin_font",false,(uint8_t*)g_cinecavB22_mono,&g_cinecavB22_mono_size,0},
205        { "cc_fonts/cinecavB12_sans.bwin_font",false,(uint8_t*)g_cinecavB12_sans,&g_cinecavB12_sans_size,0},   
206        { "cc_fonts/cinecavB15_sans.bwin_font",false,(uint8_t*)g_cinecavB15_sans,&g_cinecavB15_sans_size,0},   
207        { "cc_fonts/cinecavB19_sans.bwin_font",false,(uint8_t*)g_cinecavB19_sans,&g_cinecavB19_sans_size,0}, 
208        { "cc_fonts/cinecavB13_casual.bwin_font",false,(uint8_t*)g_cinecavB13_casual,&g_cinecavB13_casual_size,0},     
209        { "cc_fonts/cinecavB16_casual.bwin_font",false,(uint8_t*)g_cinecavB16_casual,&g_cinecavB16_casual_size,0},     
210        { "cc_fonts/cinecavB20_casual.bwin_font",false,(uint8_t*)g_cinecavB20_casual,&g_cinecavB20_casual_size,0},     
211        { "cc_fonts/cinecavB12_script.bwin_font",false,(uint8_t*)g_cinecavB12_script,&g_cinecavB12_script_size,0},     
212        { "cc_fonts/cinecavB14_script.bwin_font",false,(uint8_t*)g_cinecavB14_script,&g_cinecavB14_script_size,0},       
213        { "cc_fonts/cinecavB18_script.bwin_font",false,(uint8_t*)g_cinecavB18_script,&g_cinecavB18_script_size,0},     
214        { "cc_fonts/cinecavB13_sc.bwin_font",false,(uint8_t*)g_cinecavB13_sc,&g_cinecavB13_sc_size,0},         
215        { "cc_fonts/cinecavB15_sc.bwin_font",false,(uint8_t*)g_cinecavB15_sc,&g_cinecavB15_sc_size,0},         
216        { "cc_fonts/cinecavB19_sc.bwin_font",false,(uint8_t*)g_cinecavB19_sc,&g_cinecavB19_sc_size,0},         
217        /* 480i Italic Fonts */
218        { "cc_fonts/cinecavB14i_type.bwin_font",false,(uint8_t*)g_cinecavB14i_type,&g_cinecavB14i_type_size,0},
219        { "cc_fonts/cinecavB18i_type.bwin_font",false,(uint8_t*)g_cinecavB18i_type,&g_cinecavB18i_type_size,0},
220        { "cc_fonts/cinecavB22i_type.bwin_font",false,(uint8_t*)g_cinecavB22i_type,&g_cinecavB22i_type_size,0},
221        { "cc_fonts/cinecavB12i_serif.bwin_font",false,(uint8_t*)g_cinecavB12i_serif,&g_cinecavB12i_serif_size,0},
222        { "cc_fonts/cinecavB15i_serif.bwin_font",false,(uint8_t*)g_cinecavB15i_serif,&g_cinecavB15i_serif_size,0},
223        { "cc_fonts/cinecavB19i_serif.bwin_font",false,(uint8_t*)g_cinecavB19i_serif,&g_cinecavB19i_serif_size,0},
224        { "cc_fonts/cinecavB14i_mono.bwin_font",false,(uint8_t*)g_cinecavB14i_mono,&g_cinecavB14i_mono_size,0},
225        { "cc_fonts/cinecavB18i_mono.bwin_font",false,(uint8_t*)g_cinecavB18i_mono,&g_cinecavB18i_mono_size,0},
226        { "cc_fonts/cinecavB22i_mono.bwin_font",false,(uint8_t*)g_cinecavB22i_mono,&g_cinecavB22i_mono_size,0},
227        { "cc_fonts/cinecavB12i_sans.bwin_font",false,(uint8_t*)g_cinecavB12i_sans,&g_cinecavB12i_sans_size,0}, 
228        { "cc_fonts/cinecavB15i_sans.bwin_font",false,(uint8_t*)g_cinecavB15i_sans,&g_cinecavB15i_sans_size,0}, 
229        { "cc_fonts/cinecavB19i_sans.bwin_font",false,(uint8_t*)g_cinecavB19i_sans,&g_cinecavB19i_sans_size,0}, 
230        { "cc_fonts/cinecavB13i_casual.bwin_font",false,(uint8_t*)g_cinecavB13i_casual,&g_cinecavB13i_casual_size,0},   
231        { "cc_fonts/cinecavB16i_casual.bwin_font",false,(uint8_t*)g_cinecavB16i_casual,&g_cinecavB16i_casual_size,0},   
232        { "cc_fonts/cinecavB20i_casual.bwin_font",false,(uint8_t*)g_cinecavB20i_casual,&g_cinecavB20i_casual_size,0},   
233        { "cc_fonts/cinecavB12i_script.bwin_font",false,(uint8_t*)g_cinecavB12i_script,&g_cinecavB12i_script_size,0},   
234        { "cc_fonts/cinecavB14i_script.bwin_font",false,(uint8_t*)g_cinecavB14i_script,&g_cinecavB14i_script_size,0},   
235        { "cc_fonts/cinecavB18i_script.bwin_font",false,(uint8_t*)g_cinecavB18i_script,&g_cinecavB18i_script_size,0},   
236        { "cc_fonts/cinecavB13i_sc.bwin_font",false,(uint8_t*)g_cinecavB13i_sc,&g_cinecavB13i_sc_size,0},               
237        { "cc_fonts/cinecavB15i_sc.bwin_font",false,(uint8_t*)g_cinecavB15i_sc,&g_cinecavB15i_sc_size,0},               
238        { "cc_fonts/cinecavB19i_sc.bwin_font",false,(uint8_t*)g_cinecavB19i_sc,&g_cinecavB19i_sc_size,0},
239        /*1080i Standard Fonts */
240        { "cc_fonts/cinecavB32_type.bwin_font",false,(uint8_t*)g_cinecavB32_type,&g_cinecavB32_type_size,0},
241        { "cc_fonts/cinecavB41_type.bwin_font",false,(uint8_t*)g_cinecavB41_type,&g_cinecavB41_type_size,0},
242        { "cc_fonts/cinecavB49_type.bwin_font",false,(uint8_t*)g_cinecavB49_type,&g_cinecavB49_type_size,0},
243        { "cc_fonts/cinecavB28_serif.bwin_font",false,(uint8_t*)g_cinecavB28_serif,&g_cinecavB28_serif_size,0},
244        { "cc_fonts/cinecavB35_serif.bwin_font",false,(uint8_t*)g_cinecavB35_serif,&g_cinecavB35_serif_size,0},
245        { "cc_fonts/cinecavB44_serif.bwin_font",false,(uint8_t*)g_cinecavB44_serif,&g_cinecavB44_serif_size,0},
246        { "cc_fonts/cinecavB34_mono.bwin_font",false,(uint8_t*)g_cinecavB34_mono,&g_cinecavB34_mono_size,0},
247        { "cc_fonts/cinecavB43_mono.bwin_font",false,(uint8_t*)g_cinecavB43_mono,&g_cinecavB43_mono_size,0},
248        { "cc_fonts/cinecavB52_mono.bwin_font",false,(uint8_t*)g_cinecavB52_mono,&g_cinecavB52_mono_size,0},
249        { "cc_fonts/cinecavB28_sans.bwin_font",false,(uint8_t*)g_cinecavB28_sans,&g_cinecavB28_sans_size,0},   
250        { "cc_fonts/cinecavB35_sans.bwin_font",false,(uint8_t*)g_cinecavB35_sans,&g_cinecavB35_sans_size,0},   
251        { "cc_fonts/cinecavB44_sans.bwin_font",false,(uint8_t*)g_cinecavB44_sans,&g_cinecavB44_sans_size,0}, 
252        { "cc_fonts/cinecavB30_casual.bwin_font",false,(uint8_t*)g_cinecavB30_casual,&g_cinecavB30_casual_size,0},     
253        { "cc_fonts/cinecavB36_casual.bwin_font",false,(uint8_t*)g_cinecavB36_casual,&g_cinecavB36_casual_size,0},     
254        { "cc_fonts/cinecavB45_casual.bwin_font",false,(uint8_t*)g_cinecavB45_casual,&g_cinecavB45_casual_size,0},     
255        { "cc_fonts/cinecavB25_script.bwin_font",false,(uint8_t*)g_cinecavB25_script,&g_cinecavB25_script_size,0},     
256        { "cc_fonts/cinecavB28_script.bwin_font",false,(uint8_t*)g_cinecavB28_script,&g_cinecavB28_script_size,0},       
257        { "cc_fonts/cinecavB38_script.bwin_font",false,(uint8_t*)g_cinecavB38_script,&g_cinecavB38_script_size,0},     
258        { "cc_fonts/cinecavB28_sc.bwin_font",false,(uint8_t*)g_cinecavB28_sc,&g_cinecavB28_sc_size,0},         
259        { "cc_fonts/cinecavB35_sc.bwin_font",false,(uint8_t*)g_cinecavB35_sc,&g_cinecavB35_sc_size,0},         
260        { "cc_fonts/cinecavB45_sc.bwin_font",false,(uint8_t*)g_cinecavB45_sc,&g_cinecavB45_sc_size,0},         
261        /*1080i Italic Fonts */
262        { "cc_fonts/cinecavB32i_type.bwin_font",false,(uint8_t*)g_cinecavB32i_type,&g_cinecavB32i_type_size,0},
263        { "cc_fonts/cinecavB41i_type.bwin_font",false,(uint8_t*)g_cinecavB41i_type,&g_cinecavB41i_type_size,0},
264        { "cc_fonts/cinecavB49i_type.bwin_font",false,(uint8_t*)g_cinecavB49i_type,&g_cinecavB49i_type_size,0},
265        { "cc_fonts/cinecavB28i_serif.bwin_font",false,(uint8_t*)g_cinecavB28i_serif,&g_cinecavB28i_serif_size,0},
266        { "cc_fonts/cinecavB35i_serif.bwin_font",false,(uint8_t*)g_cinecavB35i_serif,&g_cinecavB35i_serif_size,0},
267        { "cc_fonts/cinecavB44i_serif.bwin_font",false,(uint8_t*)g_cinecavB44i_serif,&g_cinecavB44i_serif_size,0},
268        { "cc_fonts/cinecavB34i_mono.bwin_font",false,(uint8_t*)g_cinecavB34i_mono,&g_cinecavB34i_mono_size,0},
269        { "cc_fonts/cinecavB43i_mono.bwin_font",false,(uint8_t*)g_cinecavB43i_mono,&g_cinecavB43i_mono_size,0},
270        { "cc_fonts/cinecavB52i_mono.bwin_font",false,(uint8_t*)g_cinecavB52i_mono,&g_cinecavB52i_mono_size,0},
271        { "cc_fonts/cinecavB28i_sans.bwin_font",false,(uint8_t*)g_cinecavB28i_sans,&g_cinecavB28i_sans_size,0}, 
272        { "cc_fonts/cinecavB35i_sans.bwin_font",false,(uint8_t*)g_cinecavB35i_sans,&g_cinecavB35i_sans_size,0}, 
273        { "cc_fonts/cinecavB44i_sans.bwin_font",false,(uint8_t*)g_cinecavB44i_sans,&g_cinecavB44i_sans_size,0}, 
274        { "cc_fonts/cinecavB30i_casual.bwin_font",false,(uint8_t*)g_cinecavB30i_casual,&g_cinecavB30i_casual_size,0},   
275        { "cc_fonts/cinecavB36i_casual.bwin_font",false,(uint8_t*)g_cinecavB36i_casual,&g_cinecavB36i_casual_size,0},   
276        { "cc_fonts/cinecavB45i_casual.bwin_font",false,(uint8_t*)g_cinecavB45i_casual,&g_cinecavB45i_casual_size,0},   
277        { "cc_fonts/cinecavB25i_script.bwin_font",false,(uint8_t*)g_cinecavB25i_script,&g_cinecavB25i_script_size,0},   
278        { "cc_fonts/cinecavB28i_script.bwin_font",false,(uint8_t*)g_cinecavB28i_script,&g_cinecavB28i_script_size,0},   
279        { "cc_fonts/cinecavB38i_script.bwin_font",false,(uint8_t*)g_cinecavB38i_script,&g_cinecavB38i_script_size,0},   
280        { "cc_fonts/cinecavB28i_sc.bwin_font",false,(uint8_t*)g_cinecavB28i_sc,&g_cinecavB28i_sc_size,0},               
281        { "cc_fonts/cinecavB35i_sc.bwin_font",false,(uint8_t*)g_cinecavB35i_sc,&g_cinecavB35i_sc_size,0},               
282        { "cc_fonts/cinecavB45i_sc.bwin_font",false,(uint8_t*)g_cinecavB45i_sc,&g_cinecavB45i_sc_size,0},               
283        { "",false,0,0,0},
284};
285#else
286static mem_io_t g_files[] =
287{
288        { "",false,0,0,0},
289};
290#endif
291
292size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream)
293{
294        mem_io_t *file = (mem_io_t*)stream;
295        BDBG_ASSERT(file);
296       
297        size = size * nmemb;
298        if (file->cnt + size > *(file->size))
299        {
300                BDBG_WRN(("Requesting more bytes than available (cnt = %d, size = %d,total = %d)\n",
301                                  file->cnt,size,*(file->size)));
302                size = *(file->size) - file->cnt;
303        }
304
305        memcpy(ptr,&(file->data[file->cnt]),size);
306        file->cnt += size;
307       
308        return size;
309}
310size_t   fwrite(const  void  *ptr,  size_t  size,  size_t  nmemb,  FILE *stream)
311{
312        mem_io_t *file = (mem_io_t*)stream;
313        BDBG_ASSERT(file);
314
315        size = size * nmemb;
316        if (file->cnt + size > *(file->size))
317        {
318                BDBG_WRN(("Attempt to write more bytes than available (cnt = %d, size = %d,total = %d)\n",
319                                  file->cnt,size,*(file->size)));
320                size = *(file->size) - file->cnt;
321        }
322
323        memcpy(&(file->data[file->cnt]),ptr,size);
324        file->cnt += size;
325        return size;
326}
327FILE *fopen(const char *path, const char *mode)
328{
329        int idx = 0;
330
331        while(g_files[idx].data != NULL)
332        {
333                if ((strcmp(path,g_files[idx].name) == 0) && !g_files[idx].open)
334                {
335                        g_files[idx].open = true;
336                        g_files[idx].cnt = 0;
337                        return &(g_files[idx]);
338                }
339                idx++;
340        }
341        return NULL;
342}
343int fclose(FILE *stream)
344{
345        mem_io_t *file = (mem_io_t*)stream;
346        BDBG_ASSERT(file);
347        file->open = false;
348        return 0;
349}
350int fseek(FILE *stream, long offset, int whence)
351{
352        mem_io_t *file = (mem_io_t*)stream;
353        switch(whence)
354        {
355        default:
356        case SEEK_SET: file->cnt = offset; break;
357        case SEEK_CUR:  file->cnt += offset; break;
358        case SEEK_END:  file->size += offset; break;
359        }
360        return  file->cnt;
361}
362
363long ftell(FILE *stream)
364{
365        mem_io_t *file = (mem_io_t*)stream;
366        return (long) file->cnt;
367}
368
369int fflush(FILE *stream)
370{
371        return 0;
372}
373
374
375
Note: See TracBrowser for help on using the repository browser.