comparison stream.c @ 1428:a90d889eb649

largefile patch by Stephen Davies <steve@daviesfam.org>
author arpi
date Tue, 31 Jul 2001 23:18:16 +0000
parents f2516027a346
children 1728d249c783
comparison
equal deleted inserted replaced
1427:0ca4e638b696 1428:a90d889eb649
1
2 #include "config.h"
3
4 #include <sys/types.h>
5 #include <sys/stat.h>
6 #include <sys/ioctl.h>
7 #include <fcntl.h>
8 #include <unistd.h>
1 9
2 #include <stdio.h> 10 #include <stdio.h>
3 #include <stdlib.h> 11 #include <stdlib.h>
4
5 #include <sys/ioctl.h>
6 #include <unistd.h>
7 12
8 #include "stream.h" 13 #include "stream.h"
9 14
10 extern int verbose; // defined in mplayer.c 15 extern int verbose; // defined in mplayer.c
11 16
38 s->pos+=len; 43 s->pos+=len;
39 // printf("[%d]",len);fflush(stdout); 44 // printf("[%d]",len);fflush(stdout);
40 return len; 45 return len;
41 } 46 }
42 47
43 int stream_seek_long(stream_t *s,unsigned int pos){ 48 int stream_seek_long(stream_t *s,off_t pos){
44 unsigned int newpos; 49 off_t newpos;
45 50
46 // if(verbose>=3) printf("seek to 0x%X\n",pos); 51 // if(verbose>=3) printf("seek to 0x%X\n",(unsigned int)pos);
47 52
48 if(verbose>=3){ 53 if(verbose>=3){
54 #ifdef _LARGEFILE_SOURCE
55 printf("s->pos=%llX newpos=%llX new_bufpos=%llX buflen=%X \n",
56 (long long)s->pos,(long long)newpos,(long long)pos,s->buf_len);
57 #else
49 printf("s->pos=%X newpos=%X new_bufpos=%X buflen=%X \n", 58 printf("s->pos=%X newpos=%X new_bufpos=%X buflen=%X \n",
50 (unsigned int)s->pos,newpos,pos,s->buf_len); 59 (unsigned int)s->pos,newpos,pos,s->buf_len);
60 #endif
51 } 61 }
52 62
53 s->buf_pos=s->buf_len=0; 63 s->buf_pos=s->buf_len=0;
54 64
55 switch(s->type){ 65 switch(s->type){
56 case STREAMTYPE_FILE: 66 case STREAMTYPE_FILE:
57 case STREAMTYPE_STREAM: 67 case STREAMTYPE_STREAM:
68 #ifdef _LARGEFILE_SOURCE
69 newpos=pos&(~((long long)STREAM_BUFFER_SIZE-1));break;
70 #else
58 newpos=pos&(~(STREAM_BUFFER_SIZE-1));break; 71 newpos=pos&(~(STREAM_BUFFER_SIZE-1));break;
72 #endif
59 case STREAMTYPE_VCD: 73 case STREAMTYPE_VCD:
60 newpos=(pos/VCD_SECTOR_DATA)*VCD_SECTOR_DATA;break; 74 newpos=(pos/VCD_SECTOR_DATA)*VCD_SECTOR_DATA;break;
61 } 75 }
62 76
63 pos-=newpos; 77 pos-=newpos;
95 stream_fill_buffer(s); 109 stream_fill_buffer(s);
96 if(pos>=0 && pos<s->buf_len){ 110 if(pos>=0 && pos<s->buf_len){
97 s->buf_pos=pos; // byte position in sector 111 s->buf_pos=pos; // byte position in sector
98 return 1; 112 return 1;
99 } 113 }
100 if(verbose) printf("stream_seek: WARNING! Can't seek to 0x%X !\n",pos+newpos); 114 #ifdef _LARGEFILE_SOURCE
115 if(verbose) printf("stream_seek: WARNING! Can't seek to 0x%llX !\n",(long long)(pos+newpos));
116 #else
117 if(verbose) printf("stream_seek: WARNING! Can't seek to 0x%X !\n",(pos+newpos));
118 #endif
101 return 0; 119 return 0;
102 } 120 }
103 121
104 122
105 void stream_reset(stream_t *s){ 123 void stream_reset(stream_t *s){