[BACK]Return to tbl.c CVS log [TXT][DIR] Up to [cvsweb.bsd.lv] / mandoc

Diff for /mandoc/tbl.c between version 1.5 and 1.8

version 1.5, 2010/12/29 01:16:57 version 1.8, 2010/12/29 16:44:23
Line 31  static void   tbl_clear(struct tbl *);
Line 31  static void   tbl_clear(struct tbl *);
 static void  static void
 tbl_clear(struct tbl *tbl)  tbl_clear(struct tbl *tbl)
 {  {
           struct tbl_row  *rp;
           struct tbl_cell *cp;
   
           while (tbl->first) {
                   rp = tbl->first;
                   tbl->first = rp->next;
                   while (rp->first) {
                           cp = rp->first;
                           rp->first = cp->next;
                           free(cp);
                   }
                   free(rp);
           }
   
           tbl->last = NULL;
 }  }
   
 static void  static void
Line 49  tbl_read(struct tbl *tbl, int ln, const char *p, int o
Line 63  tbl_read(struct tbl *tbl, int ln, const char *p, int o
 {  {
         int              len;          int              len;
         const char      *cp;          const char      *cp;
           struct tbl_dat  *dp;
           struct tbl_span *sp;
   
         cp = &p[offs];          cp = &p[offs];
         len = (int)strlen(cp);          len = (int)strlen(cp);
Line 69  tbl_read(struct tbl *tbl, int ln, const char *p, int o
Line 85  tbl_read(struct tbl *tbl, int ln, const char *p, int o
         switch (tbl->part) {          switch (tbl->part) {
         case (TBL_PART_OPTS):          case (TBL_PART_OPTS):
                 return(tbl_option(tbl, ln, p) ? ROFF_IGN : ROFF_ERR);                  return(tbl_option(tbl, ln, p) ? ROFF_IGN : ROFF_ERR);
         default:          case (TBL_PART_LAYOUT):
                   return(tbl_layout(tbl, ln, p) ? ROFF_IGN : ROFF_ERR);
           case (TBL_PART_DATA):
                 break;                  break;
         }          }
   
           /* XXX: throw away data for now. */
           if (NULL != (sp = tbl_data(tbl, ln, p))) {
                   while (NULL != (dp = sp->first)) {
                           sp->first = sp->first->next;
                           if (dp->string)
                                   free(dp->string);
                           free(dp);
                   }
                   free(sp);
           }
   
         return(ROFF_CONT);          return(ROFF_CONT);
 }  }
Line 81  tbl_alloc(void *data, const mandocmsg msg)
Line 110  tbl_alloc(void *data, const mandocmsg msg)
 {  {
         struct tbl      *p;          struct tbl      *p;
   
         p = mandoc_malloc(sizeof(struct tbl));          p = mandoc_calloc(1, sizeof(struct tbl));
         p->data = data;          p->data = data;
         p->msg = msg;          p->msg = msg;
         tbl_init(p);          tbl_init(p);
Line 102  tbl_reset(struct tbl *tbl)
Line 131  tbl_reset(struct tbl *tbl)
   
         tbl_clear(tbl);          tbl_clear(tbl);
         tbl_init(tbl);          tbl_init(tbl);
   }
   
   void
   tbl_restart(struct tbl *tbl)
   {
   
           tbl_clear(tbl);
           tbl->part = TBL_PART_LAYOUT;
 }  }
   

Legend:
Removed from v.1.5  
changed lines
  Added in v.1.8

CVSweb