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

Diff for /texi2mdoc/main.c between version 1.66 and 1.67

version 1.66, 2015/03/11 12:51:41 version 1.67, 2015/03/12 04:24:19
Line 76  static void donode(struct texi *, enum texicmd, size_t
Line 76  static void donode(struct texi *, enum texicmd, size_t
 static  void doprintindex(struct texi *, enum texicmd, size_t *);  static  void doprintindex(struct texi *, enum texicmd, size_t *);
 static  void doquotation(struct texi *, enum texicmd, size_t *);  static  void doquotation(struct texi *, enum texicmd, size_t *);
 static  void dotable(struct texi *, enum texicmd, size_t *);  static  void dotable(struct texi *, enum texicmd, size_t *);
 static  void dotop(struct texi *, enum texicmd, size_t *);  
 static  void dosecoffs(struct texi *, enum texicmd, size_t *);  static  void dosecoffs(struct texi *, enum texicmd, size_t *);
 static  void dosection(struct texi *, enum texicmd, size_t *);  static  void dosection(struct texi *, enum texicmd, size_t *);
 static  void dosp(struct texi *, enum texicmd, size_t *);  static  void dosp(struct texi *, enum texicmd, size_t *);
Line 326  static const struct texitok __texitoks[TEXICMD__MAX] =
Line 325  static const struct texitok __texitoks[TEXICMD__MAX] =
         { doignline, "title", 5 }, /* TEXICMD_TITLE */          { doignline, "title", 5 }, /* TEXICMD_TITLE */
         { dobracket, "titlefont", 9 }, /* TEXICMD_TITLEFONT */          { dobracket, "titlefont", 9 }, /* TEXICMD_TITLEFONT */
         { doignblock, "titlepage", 9 }, /* TEXICMD_TITLEPAGE */          { doignblock, "titlepage", 9 }, /* TEXICMD_TITLEPAGE */
         { dotop, "top", 3 }, /* TEXICMD_TOP */          { dosection, "top", 3 }, /* TEXICMD_TOP */
         { doindex, "tpindex", 7 }, /* TEXICMD_TPINDEX */          { doindex, "tpindex", 7 }, /* TEXICMD_TPINDEX */
         { doaccent, "u", 1 }, /* TEXICMD_U */          { doaccent, "u", 1 }, /* TEXICMD_U */
         { doaccent, "ubaraccent", 10 }, /* TEXICMD_UBARACCENT */          { doaccent, "ubaraccent", 10 }, /* TEXICMD_UBARACCENT */
Line 1477  doquotation(struct texi *p, enum texicmd cmd, size_t *
Line 1476  doquotation(struct texi *p, enum texicmd cmd, size_t *
 static int  static int
 indexcmp(const void *p1, const void *p2)  indexcmp(const void *p1, const void *p2)
 {  {
           const struct texiterm *t1 = p1, *t2 = p2;
   
         return(strcasecmp(*(const char **)p1, *(const char **)p2));          return(strcasecmp(t1->term, t2->term));
 }  }
   
 static void  static void
Line 1522  doprintindex(struct texi *p, enum texicmd cmd, size_t 
Line 1522  doprintindex(struct texi *p, enum texicmd cmd, size_t 
   
         /* Alphabetically sort our indices. */          /* Alphabetically sort our indices. */
         qsort(p->indexs[i].index,          qsort(p->indexs[i].index,
                 p->indexs[i].indexsz, sizeof(char *), indexcmp);                  p->indexs[i].indexsz,
                   sizeof(struct texiterm), indexcmp);
   
         texivspace(p);          texivspace(p);
         teximacro(p, "Bl -tag -width Ds -compact");          teximacro(p, "Bl -tag -width Ds -compact");
         for (j = 0; j < p->indexs[i].indexsz; j++) {          for (j = 0; j < p->indexs[i].indexsz; j++) {
                 teximacroopen(p, "It");                  teximacroopen(p, "It");
 #if HAVE_INDEX  #if HAVE_INDEX
                 teximacroopen(p, "Lkx");                  if (NULL == p->chapters) {
                 texiputchars(p, "\"idx");                          teximacroopen(p, "Lkx");
                 texiputchars(p, p->indexs[i].name);                          texiputchars(p, "\"idx");
                 cp = p->indexs[i].index[j];                          texiputchars(p, p->indexs[i].name);
                 while ('\n' != *cp) {                          cp = p->indexs[i].index[j].term;
                         assert('\0' != *cp);                          while ('\n' != *cp) {
                         texiputchar(p, *cp++);                                  assert('\0' != *cp);
                                   texiputchar(p, *cp++);
                           }
                           texiputchars(p, "\" \"");
                           p->literal++;
                   } else {
                           teximacroopen(p, "Xr");
                           texiputchars(p, p->nodes[p->indexs[i].index[j].chapter]);
                           texiputchars(p, " 7 \"idx");
                           texiputchars(p, p->indexs[i].name);
                           cp = p->indexs[i].index[j].term;
                           while ('\n' != *cp) {
                                   assert('\0' != *cp);
                                   texiputchar(p, *cp++);
                           }
                           texiputchars(p, "\" \"");
                           p->literal++;
                 }                  }
                 texiputchars(p, "\" \"");  
                 p->literal++;  
 #endif  #endif
                 texisplice(p, p->indexs[i].index[j],                  texisplice(p, p->indexs[i].index[j].term,
                         strlen(p->indexs[i].index[j]), *pos);                          strlen(p->indexs[i].index[j].term), *pos);
                 parseeoln(p, pos);                  parseeoln(p, pos);
 #if HAVE_INDEX  #if HAVE_INDEX
                 p->literal--;                  p->literal--;
Line 1562  donode(struct texi *p, enum texicmd cmd, size_t *pos)
Line 1577  donode(struct texi *p, enum texicmd cmd, size_t *pos)
   
         if (NULL != p->chapters) {          if (NULL != p->chapters) {
                 advanceeoln(p, pos, 1);                  advanceeoln(p, pos, 1);
                 return;                  if (0 == p->chapnum)
         }                          p->ign--;
                   teximdocclose(p, 0);
                   teximdocopen(p, pos);
           } else {
 #if HAVE_INDEX  #if HAVE_INDEX
         p->seenvs = -1;                  p->seenvs = -1;
         teximacroopen(p, "Ix");                  teximacroopen(p, "Ix");
         texiputchars(p, "node");                  texiputchars(p, "node");
         while (*pos < BUFSZ(p) && isws(BUF(p)[*pos]))                  while (*pos < BUFSZ(p) && isws(BUF(p)[*pos]))
                 advance(p, pos);                          advance(p, pos);
         while (*pos < BUFSZ(p)) {                  while (*pos < BUFSZ(p)) {
                 if (BUF(p)[*pos] == ',')                          if (BUF(p)[*pos] == ',')
                         break;                                  break;
                 else if (BUF(p)[*pos] == '\n')                          else if (BUF(p)[*pos] == '\n')
                         break;                                  break;
                 texiputchar(p, BUF(p)[*pos]);                          texiputchar(p, BUF(p)[*pos]);
                 advance(p, pos);                          advance(p, pos);
         }                  }
         teximacroclose(p);                  teximacroclose(p);
 #endif  #endif
         advanceeoln(p, pos, 1);                  advanceeoln(p, pos, 1);
         p->seenvs = sv;                  p->seenvs = sv;
           }
 }  }
   
 /*  /*
Line 1595  domenu(struct texi *p, enum texicmd cmd, size_t *pos)
Line 1613  domenu(struct texi *p, enum texicmd cmd, size_t *pos)
 {  {
         size_t   start, end, sv;          size_t   start, end, sv;
   
         if (NULL != p->chapters) {  
                 doignblock(p, cmd, pos);  
                 return;  
         }  
   
         advanceeoln(p, pos, 1);          advanceeoln(p, pos, 1);
   
         /*          /*
Line 1914  dosection(struct texi *p, enum texicmd cmd, size_t *po
Line 1927  dosection(struct texi *p, enum texicmd cmd, size_t *po
         else          else
                 texivspace(p);                  texivspace(p);
   
         if (0 == sec && NULL != p->chapters) {  
                 teximdocclose(p, 0);  
                 teximdocopen(p, pos);  
         }  
   
         teximacroopen(p, sects[sec]);          teximacroopen(p, sects[sec]);
         parseeoln(p, pos);          parseeoln(p, pos);
         teximacroclose(p);          teximacroclose(p);
Line 1930  dosection(struct texi *p, enum texicmd cmd, size_t *po
Line 1938  dosection(struct texi *p, enum texicmd cmd, size_t *po
 }  }
   
 static void  static void
 dotop(struct texi *p, enum texicmd cmd, size_t *pos)  
 {  
   
         if (--p->ign)  
                 texierr(p, "@top command while ignoring");  
   
         if (NULL == p->chapters)  
                 teximdocopen(p, pos);  
         dosection(p, cmd, pos);  
 }  
   
 static void  
 dosp(struct texi *p, enum texicmd cmd, size_t *pos)  dosp(struct texi *p, enum texicmd cmd, size_t *pos)
 {  {
   
Line 2159  doindex(struct texi *p, enum texicmd cmd, size_t *pos)
Line 2155  doindex(struct texi *p, enum texicmd cmd, size_t *pos)
                 advance(p, pos);                  advance(p, pos);
   
         start = *pos;          start = *pos;
         while (*pos < BUFSZ(p) && '\n' != BUF(p)[*pos])          while (*pos < BUFSZ(p) && '\n' != BUF(p)[*pos]) {
                   assert('\0' != BUF(p)[*pos]);
                 advance(p, pos);                  advance(p, pos);
           }
   
         if (*pos == BUFSZ(p)) {          if (*pos == BUFSZ(p)) {
                 texiwarn(p, "unexpected EOF");                  texiwarn(p, "unexpected EOF");

Legend:
Removed from v.1.66  
changed lines
  Added in v.1.67

CVSweb