Diff for /multiplexer/en300468ts.c between versions 1.19 and 1.20

version 1.19, 2010/09/29 21:34:26 version 1.20, 2010/09/29 21:36:23
Line 1553  static enum enumsi alloctab(long pid, lo Line 1553  static enum enumsi alloctab(long pid, lo
   return e;    return e;
 }  }
   
 static struct sitab **findtab(struct sitab **pst, long pid, long tableid)  
 {  
   struct sitab *st = *pst;  
   while (st != NULL) {  
     if ((st->pid == pid) && (st->tableid == tableid)) {  
       return pst;  
     }  
     pst = &st->next;  
     st = *pst;  
   }  
   return NULL;  
 }  
   
 static void droptab(long pid, long tableid)  static void droptab(long pid, long tableid)
 {  {
   struct sitab **pst;    struct sitab **pst;
   struct sitab *st;    struct sitab *st;
   pst = &runtab;    pst = &runtab;
   while ((pst = findtab(pst, pid, tableid)) != NULL) {    while ((st = *pst)) {
     st = *pst;      if ((st->pid == pid) && (st->tableid == tableid)) {
     *pst = st->next;        *pst = st->next;
     nextversion[st->tableid - TABLEID_FIRST] = (st->version + 1) & 0x1F;        nextversion[st->tableid - TABLEID_FIRST] = (st->version + 1) & 0x1F;
     free(st->tab);        free(st->tab);
     free(st);        free(st);
       } else {
         pst = &st->next;
       }
   }    }
 }  }
   
 static void maketab(long pid, long tableid, long freqmsec, int fd)  static void maketab(long pid, long tableid, long freqmsec, int fd)
 {  {
   struct sitab **pt;  
   struct sitab *t;    struct sitab *t;
   enum enumsi e;    enum enumsi e;
   e = alloctab(pid, tableid);    e = alloctab(pid, tableid);
   if (e >= 0) {    if (e >= 0) {
     pt = findtab(&runtab, pid, tableid);      t = malloc(sizeof(struct sitab));
     if (pt == NULL) {      if (t != NULL) {
       t = malloc(sizeof(struct sitab));  
       t->pid = pid;        t->pid = pid;
       t->tableid = tableid;        t->tableid = tableid;
       t->version = nextversion[tableid - TABLEID_FIRST];        t->freqmsec = freqmsec;
     } else {        t->esi = e;
       t = *pt;        t->tab = NULL;
       *pt = t->next;        memset(&t->descrnum[0], 0, sizeof(t->descrnum));
       free(t->tab);        memset(&tabnew, 0, sizeof(tabnew));
       t->version = (t->version + 1) & 0x1F;        tabnew.fd = fd;
     }        newtab = t;
     t->freqmsec = freqmsec;      }
     t->esi = e;  
     t->tab = NULL;  
     memset(&t->descrnum[0], 0, sizeof(t->descrnum[0]));  
     memset(&tabnew, 0, sizeof(tabnew));  
     tabnew.fd = fd;  
     newtab = t;  
   }    }
 }  }
   
Line 2205  static void argloop(int f0) Line 2187  static void argloop(int f0)
                     newtab->pid);                      newtab->pid);
               free(newtab->tab);                free(newtab->tab);
               free(newtab);                free(newtab);
               newtab = NULL;  
             } else {              } else {
                 droptab(newtab->pid, newtab->tableid);
                 newtab->version = nextversion[newtab->tableid - TABLEID_FIRST];
               newtab->soon = tv;                newtab->soon = tv;
               newtab->next = runtab;                newtab->next = runtab;
               runtab = newtab;                runtab = newtab;
               newtab = NULL;  
             }              }
               newtab = NULL;
             break;              break;
           case -EAGAIN:            case -EAGAIN:
             if (i > 0) {              if (i > 0) {

Removed from v.1.19  
changed lines
  Added in v.1.20


LinuxTV legacy CVS <linuxtv.org/cvs>