mirror of
https://github.com/mpv-player/mpv
synced 2025-02-20 14:56:55 +00:00
Move stream_read_line implementation from stream.h to stream.c,
it is not speed critical and the function call overhead is not relevant for its overall speed anyway. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30796 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
parent
d8c02c2dd2
commit
c89169f7b5
@ -487,3 +487,29 @@ int stream_check_interrupt(int time) {
|
||||
if(!stream_check_interrupt_cb) return 0;
|
||||
return stream_check_interrupt_cb(time);
|
||||
}
|
||||
|
||||
unsigned char* stream_read_line(stream_t *s,unsigned char* mem, int max) {
|
||||
int len;
|
||||
unsigned char* end,*ptr = mem;
|
||||
if (max < 1) return NULL;
|
||||
max--; // reserve one for 0-termination
|
||||
do {
|
||||
len = s->buf_len-s->buf_pos;
|
||||
// try to fill the buffer
|
||||
if(len <= 0 &&
|
||||
(!cache_stream_fill_buffer(s) ||
|
||||
(len = s->buf_len-s->buf_pos) <= 0)) break;
|
||||
end = (unsigned char*) memchr((void*)(s->buffer+s->buf_pos),'\n',len);
|
||||
if(end) len = end - (s->buffer+s->buf_pos) + 1;
|
||||
if(len > 0 && max > 0) {
|
||||
int l = len > max ? max : len;
|
||||
memcpy(ptr,s->buffer+s->buf_pos,l);
|
||||
max -= l;
|
||||
ptr += l;
|
||||
}
|
||||
s->buf_pos += len;
|
||||
} while(!end);
|
||||
if(s->eof && ptr == mem) return NULL;
|
||||
ptr[0] = 0;
|
||||
return mem;
|
||||
}
|
||||
|
@ -265,32 +265,7 @@ inline static int stream_read(stream_t *s,char* mem,int total){
|
||||
return total;
|
||||
}
|
||||
|
||||
inline static unsigned char* stream_read_line(stream_t *s,unsigned char* mem, int max) {
|
||||
int len;
|
||||
unsigned char* end,*ptr = mem;
|
||||
if (max < 1) return NULL;
|
||||
max--; // reserve one for 0-termination
|
||||
do {
|
||||
len = s->buf_len-s->buf_pos;
|
||||
// try to fill the buffer
|
||||
if(len <= 0 &&
|
||||
(!cache_stream_fill_buffer(s) ||
|
||||
(len = s->buf_len-s->buf_pos) <= 0)) break;
|
||||
end = (unsigned char*) memchr((void*)(s->buffer+s->buf_pos),'\n',len);
|
||||
if(end) len = end - (s->buffer+s->buf_pos) + 1;
|
||||
if(len > 0 && max > 0) {
|
||||
int l = len > max ? max : len;
|
||||
memcpy(ptr,s->buffer+s->buf_pos,l);
|
||||
max -= l;
|
||||
ptr += l;
|
||||
}
|
||||
s->buf_pos += len;
|
||||
} while(!end);
|
||||
if(s->eof && ptr == mem) return NULL;
|
||||
ptr[0] = 0;
|
||||
return mem;
|
||||
}
|
||||
|
||||
unsigned char* stream_read_line(stream_t *s,unsigned char* mem, int max);
|
||||
|
||||
inline static int stream_eof(stream_t *s){
|
||||
return s->eof;
|
||||
|
Loading…
Reference in New Issue
Block a user