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

Diff for /pod2mdoc/pod2mdoc.c between version 1.41 and 1.43

version 1.41, 2015/02/13 18:44:04 version 1.43, 2015/02/14 11:12:48
Line 135  static const char fmts[FMT__MAX] = {
Line 135  static const char fmts[FMT__MAX] = {
         'Z'             /* FMT_NULL */          'Z'             /* FMT_NULL */
 };  };
   
 static  int     last;  static  unsigned char   last;
   
   
 static void  static void
Line 1329  static void
Line 1329  static void
 ordinary(struct state *st, const char *buf, size_t start, size_t end)  ordinary(struct state *st, const char *buf, size_t start, size_t end)
 {  {
         size_t          i, j, opstack;          size_t          i, j, opstack;
           enum mdoc_type  mtype;
         int             seq;          int             seq;
   
         if ( ! st->parsing || st->paused)          if ( ! st->parsing || st->paused)
Line 1395  ordinary(struct state *st, const char *buf, size_t sta
Line 1396  ordinary(struct state *st, const char *buf, size_t sta
                                     &start, end, &opstack))                                      &start, end, &opstack))
                                 continue;                                  continue;
   
                         /*                          /* Merely buffer non-whitespace. */
                          * On whitespace, flush the output buffer  
                          * and allow breaking to a macro line.  
                          * Otherwise, merely buffer text.  
                          */  
   
                         last = buf[start++];                          last = buf[start++];
                         if (' ' != last) {                          if ( ! isspace(last)) {
                                 outbuf_addchar(st);                                  outbuf_addchar(st);
                                 continue;                                  continue;
                         }                          }
   
                         if ( ! strcmp(st->outbuf + st->outbuflen - 2, "()") &&                          /* Detect function names. */
                             dict_get(st->outbuf, st->outbuflen - 2) ==  
                             MDOC_Fo) {                          mtype = MDOC_Fa;
                                 st->outbuflen -= 2;                          if (st->outbuflen > 2 &&
                                 st->outbuf[st->outbuflen] = '\0';                              ')' == st->outbuf[st->outbuflen - 1] &&
                                 mdoc_newln(st);                              '(' == st->outbuf[st->outbuflen - 2]) {
                                 fputs(".Fn ", stdout);                                  mtype = dict_get(st->outbuf,
                                 outbuf_flush(st);                                      st->outbuflen - 2);
                                 mdoc_newln(st);                                  if (MDOC_Fo == mtype || MDOC_MAX == mtype) {
                                 continue;                                          st->outbuflen -= 2;
                                           st->outbuf[st->outbuflen] = '\0';
                                           mdoc_newln(st);
                                           if (MDOC_Fo == mtype)
                                                   fputs(".Fn ", stdout);
                                           else
                                                   fputs(".Xr ", stdout);
                                           st->oust = OUST_MAC;
                                   }
                         }                          }
   
                           /*
                            * On whitespace, flush the output buffer
                            * and allow breaking to a macro line.
                            */
   
                         outbuf_flush(st);                          outbuf_flush(st);
                         if (OUST_MAC == st->oust)  
                           /*
                            * End macro lines, and
                            * end text lines at the end of sentences.
                            */
   
                           if (OUST_MAC == st->oust || (start > 3 &&
                               ('.' == buf[start - 2] ||
                                '!' == buf[start - 2] ||
                                '?' == buf[start - 2]) &&
                               islower((unsigned char)buf[start - 3]) &&
                               islower((unsigned char)buf[start - 4]))) {
                                   if (MDOC_MAX == mtype)
                                           fputs(" 3", stdout);
                                 mdoc_newln(st);                                  mdoc_newln(st);
                         else                          }
                                 st->wantws = 1;  
                           /* Advance to the next word. */
   
                           while (isspace((unsigned char)buf[start]))
                                   start++;
                           st->wantws = 1;
                 }                  }
   
                 if (start < end - 1 && '<' == buf[start + 1] &&                  if (start < end - 1 && '<' == buf[start + 1] &&

Legend:
Removed from v.1.41  
changed lines
  Added in v.1.43

CVSweb