Rev 300 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
324 | serge | 1 | |
300 | serge | 2 | #include |
324 | serge | 3 | |
300 | serge | 4 | |
324 | serge | 5 | |
6 | |||
300 | serge | 7 | |
8 | |||
9 | { size_t req; |
||
10 | size_t cnt; |
||
11 | char *p; |
||
324 | serge | 12 | // if(!((f->mode & FILE_OPEN_READ)|(f->mode & FILE_OPEN_PLUS))) |
13 | // return 0; |
||
14 | req=count*size; |
||
300 | serge | 15 | p= (char*)dst; |
324 | serge | 16 | |
17 | |||
300 | serge | 18 | req=f->filesize-f->filepos-f->strpos; |
324 | serge | 19 | count=0; |
20 | while(req) |
||
300 | serge | 21 | { |
22 | if (f->remain) |
||
23 | { cnt= (req > f->remain) ? f->remain : req; |
||
324 | serge | 24 | memcpy(p,f->stream,cnt); |
25 | p+=cnt; |
||
26 | f->stream+=cnt; |
||
27 | f->strpos+=cnt; |
||
28 | f->remain-=cnt; |
||
29 | count+=cnt; |
||
30 | req-=cnt; |
||
31 | } |
||
32 | else |
||
33 | { |
||
34 | f->filepos+=8192; |
||
35 | if(!fill_buff(f)) |
||
36 | { printf("error reading file %d=",f->filepos); //eof or error |
||
37 | break; |
||
38 | } |
||
39 | }; |
||
40 | }; |
||
300 | serge | 41 | return count/size; |
42 | } |
||
43 | |||
44 | |||
45 | { int err; |
||
324 | serge | 46 | size_t bytes; |
47 | |||
48 | |||
300 | serge | 49 | 8192,&bytes); |
324 | serge | 50 | if(bytes == -1) |
51 | return 0; |
||
52 | // if(!bytes) return 0; |
||
53 | f->stream = f->buffer; |
||
54 | f->remain = 8192; |
||
55 | f->strpos=0; |
||
56 | return bytes; |
||
300 | serge | 57 | }; |
324 | serge | 58 |