Diff for /margi2/ringbuffy.c between versions 1.1 and 1.2

version 1.1, 2000/12/03 22:41:04 version 1.2, 2001/03/29 23:12:01
Line 88  int ring_write(ringbuffy *rbuf, const ch Line 88  int ring_write(ringbuffy *rbuf, const ch
 }  }
   
   
   int ring_writek(ringbuffy *rbuf, const char *data, int count)
   {
   
           long diff, free, pos, rest;
   
         
           if (count <=0 || !rbuf->buffy) return 0;
           pos  = rbuf->write_pos;
           rest = rbuf->size - pos;
           diff = rbuf->read_pos - pos;
           free = (diff > 0) ? diff-4 : rbuf->size+diff-4;
   
           if ( free <= 0 ) return 0;
           if ( free < count ) count = free;
           
           if (count >= rest){
                   if(memcpy(rbuf->buffy+pos, data, rest))
                     return -EFAULT;
                   if (count - rest)
                           if(memcpy(rbuf->buffy, data+rest, 
                                             count - rest))
                             return -EFAULT;
                   rbuf->write_pos = count - rest;
           } else {
                   memcpy(rbuf->buffy+pos, data, count);
                   rbuf->write_pos += count;
           }
   
           return count;
   }
   
   
   
   
 int ring_read(ringbuffy *rbuf, char *data, int count)  int ring_read(ringbuffy *rbuf, char *data, int count)
 {  {
Line 147  int ring_read_direct(ringbuffy *rbuf, in Line 180  int ring_read_direct(ringbuffy *rbuf, in
   
   
 long ring_read_rest(ringbuffy *rbuf){  long ring_read_rest(ringbuffy *rbuf){
         long diff, free, pos, rest;          long diff, free, pos;
   
         if (!rbuf->buffy) return 0;          if (!rbuf->buffy) return 0;
         pos  = rbuf->read_pos;          pos  = rbuf->read_pos;
         rest = rbuf->size - pos;  
         diff = rbuf->write_pos - pos;          diff = rbuf->write_pos - pos;
         free = (diff >= 0) ? diff : rbuf->size+diff;          free = (diff >= 0) ? diff : rbuf->size+diff;
                   
Line 159  long ring_read_rest(ringbuffy *rbuf){ Line 191  long ring_read_rest(ringbuffy *rbuf){
 }  }
   
 long ring_write_rest(ringbuffy *rbuf){  long ring_write_rest(ringbuffy *rbuf){
         long diff, free, pos, rest;          long diff, free, pos;
   
         if (!rbuf->buffy) return 0;          if (!rbuf->buffy) return 0;
         pos  = rbuf->write_pos;          pos  = rbuf->write_pos;
         rest = rbuf->size - pos;  
         diff = rbuf->read_pos - pos;          diff = rbuf->read_pos - pos;
         free = (diff > 0) ? diff-4 : rbuf->size+diff-4;          free = (diff > 0) ? diff-4 : rbuf->size+diff-4;
                   

Removed from v.1.1  
changed lines
  Added in v.1.2


LinuxTV legacy CVS <linuxtv.org/cvs>