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

Diff for /pod2mdoc/pod2mdoc.c between version 1.46 and 1.51

version 1.46, 2015/02/14 15:34:39 version 1.51, 2015/02/19 11:09:44
Line 1105  again:
Line 1105  again:
                         putchar('\n');                          putchar('\n');
                         if (start < end && '\n' == buf[start])                          if (start < end && '\n' == buf[start])
                                 start++;                                  start++;
   
                           /* Remember #define for Dv or Fn. */
   
                           if (strncmp(buf + i + 1, "define", 6) ||
                               ! isspace((unsigned char)buf[i + 7]))
                                   goto again;
   
                           ifo = i + 7;
                           while (ifo < start &&
                               isspace((unsigned char)buf[ifo]))
                                   ifo++;
                           ifa = ifo;
                           while ('_' == buf[ifa] ||
                               isalnum((unsigned char)buf[ifa]))
                                   ifa++;
                           dict_put(buf + ifo, ifa - ifo,
                               '(' == buf[ifa] ? MDOC_Fo : MDOC_Dv);
   
                         goto again;                          goto again;
                 }                  }
   
Line 1182  again:
Line 1200  again:
                                 if ('\0' != *cp2)                                  if ('\0' != *cp2)
                                         dict_put(cp2, 0, MDOC_Fa);                                          dict_put(cp2, 0, MDOC_Fa);
                                 register_type(buf + ifa);                                  register_type(buf + ifa);
                                 printf(".Fa \"%s\"\n", buf + ifa);                                  if (strchr(buf + ifa, ' ') == NULL)
                                           printf(".Fa %s\n", buf + ifa);
                                   else
                                           printf(".Fa \"%s\"\n", buf + ifa);
                                 if (cp == NULL)                                  if (cp == NULL)
                                         break;                                          break;
                                 while (*cp == ' ' || *cp == '\t')                                  while (*cp == ' ' || *cp == '\t')
Line 1287  donamenm(struct state *st, const char *buf, size_t *st
Line 1308  donamenm(struct state *st, const char *buf, size_t *st
         assert(OUST_NL == st->oust);          assert(OUST_NL == st->oust);
         assert(st->wantws);          assert(st->wantws);
   
         while (*start < end && ' ' == buf[*start])          while (*start < end && isspace((unsigned char)buf[*start]))
                 (*start)++;                  (*start)++;
   
         if (end == *start) {          if (end == *start) {
Line 1308  donamenm(struct state *st, const char *buf, size_t *st
Line 1329  donamenm(struct state *st, const char *buf, size_t *st
                 printf(" ,");                  printf(" ,");
                 mdoc_newln(st);                  mdoc_newln(st);
                 (*start)++;                  (*start)++;
                 while (*start < end && ' ' == buf[*start])                  while (*start < end && isspace((unsigned char)buf[*start]))
                         (*start)++;                          (*start)++;
         }          }
 }  }
Line 1333  ordinary(struct state *st, const char *buf, size_t sta
Line 1354  ordinary(struct state *st, const char *buf, size_t sta
         size_t          i, j, opstack, wend;          size_t          i, j, opstack, wend;
         enum mdoc_type  mtype;          enum mdoc_type  mtype;
         int             eos, noeos, seq;          int             eos, noeos, seq;
           char            savechar;
   
         if ( ! st->parsing || st->paused)          if ( ! st->parsing || st->paused)
                 return;                  return;
Line 1345  ordinary(struct state *st, const char *buf, size_t sta
Line 1367  ordinary(struct state *st, const char *buf, size_t sta
          */           */
         if (SECT_NAME == st->sect) {          if (SECT_NAME == st->sect) {
                 for (i = end - 2; i > start; i--)                  for (i = end - 2; i > start; i--)
                         if ('-' == buf[i] && ' ' == buf[i + 1])                          if ('-' == buf[i] &&
                               isspace((unsigned char)buf[i + 1]))
                                 break;                                  break;
                 if ('-' == buf[i]) {                  if ('-' == buf[i]) {
                         j = i;                          j = i;
Line 1355  ordinary(struct state *st, const char *buf, size_t sta
Line 1378  ordinary(struct state *st, const char *buf, size_t sta
                                         break;                                          break;
                         donamenm(st, buf, &start, i + 1);                          donamenm(st, buf, &start, i + 1);
                         start = j + 1;                          start = j + 1;
                         while (start < end && ' ' == buf[start])                          while (start < end &&
                                isspace((unsigned char)buf[start]))
                                 start++;                                  start++;
                         formatcodeln(st, "Nd", buf, &start, end, 1);                          formatcodeln(st, "Nd", buf, &start, end, 1);
                         mdoc_newln(st);                          mdoc_newln(st);
Line 1435  ordinary(struct state *st, const char *buf, size_t sta
Line 1459  ordinary(struct state *st, const char *buf, size_t sta
                          */                           */
   
                         mtype = MDOC_Fa;                          mtype = MDOC_Fa;
                           savechar = '\0';
                         if (wend && ')' == st->outbuf[wend] &&                          if (wend && ')' == st->outbuf[wend] &&
                             '(' == st->outbuf[wend - 1]) {                              '(' == st->outbuf[wend - 1]) {
                                 mtype = dict_get(st->outbuf, --wend);                                  mtype = dict_get(st->outbuf, --wend);
                                   if (MDOC_Dv == mtype)
                                           mtype = MDOC_Fo;
                                 if (MDOC_Fo == mtype || MDOC_MAX == mtype) {                                  if (MDOC_Fo == mtype || MDOC_MAX == mtype) {
                                         st->outbuflen = wend;                                          st->outbuflen = wend;
                                         st->outbuf[wend] = '\0';                                          st->outbuf[wend] = '\0';
Line 1448  ordinary(struct state *st, const char *buf, size_t sta
Line 1475  ordinary(struct state *st, const char *buf, size_t sta
                                                 fputs(".Xr ", stdout);                                                  fputs(".Xr ", stdout);
                                         st->oust = OUST_MAC;                                          st->oust = OUST_MAC;
                                 }                                  }
                           } else {
                                   mtype = dict_get(st->outbuf, wend);
                                   if (MDOC_Dv == mtype) {
                                           savechar = st->outbuf[wend];
                                           st->outbuf[wend] = '\0';
                                           mdoc_newln(st);
                                           fputs(".Dv ", stdout);
                                           st->oust = OUST_MAC;
                                   } else
                                           mtype = MDOC_Fa;
                         }                          }
   
                         /*                          /*
Line 1466  ordinary(struct state *st, const char *buf, size_t sta
Line 1503  ordinary(struct state *st, const char *buf, size_t sta
                             islower((unsigned char)st->outbuf[wend - 1]))) {                              islower((unsigned char)st->outbuf[wend - 1]))) {
                                 if (MDOC_MAX == mtype)                                  if (MDOC_MAX == mtype)
                                         fputs(" 3", stdout);                                          fputs(" 3", stdout);
                                 if (MDOC_Fa != mtype)                                  if (MDOC_Fa != mtype) {
                                         for (wend += 2;                                          if (MDOC_Dv == mtype)
                                              '\0' != st->outbuf[wend];                                                  st->outbuf[wend] = savechar;
                                              wend++)                                          else
                                                   wend += 2;
                                           while ('\0' != st->outbuf[wend])
                                                 printf(" %c",                                                  printf(" %c",
                                                     st->outbuf[wend]);                                                      st->outbuf[wend++]);
                                   }
                                 mdoc_newln(st);                                  mdoc_newln(st);
                         }                          }
   
Line 1492  ordinary(struct state *st, const char *buf, size_t sta
Line 1532  ordinary(struct state *st, const char *buf, size_t sta
                                  * XXX Some punctuation characters                                   * XXX Some punctuation characters
                                  *     are not handled yet.                                   *     are not handled yet.
                                  */                                   */
                                 if ((start == end - 1 ||                                  if ((start == end - 1 ||
                                         (start < end - 1 &&                                       (start < end - 1 &&
                                          (' ' == buf[start + 1] ||                                        (' ' == buf[start + 1] ||
                                           '\n' == buf[start + 1]))) &&                                         '\n' == buf[start + 1]))) &&
                                         ('.' == buf[start] ||                                      NULL != strchr("|.,;:?!)]", buf[start])) {
                                          ',' == buf[start])) {  
                                         putchar(' ');                                          putchar(' ');
                                         putchar(buf[start++]);                                          putchar(buf[start++]);
                                 }                                  }
Line 1632  dofile(const struct args *args, const char *fname, 
Line 1671  dofile(const struct args *args, const char *fname, 
   
         date = args->date;          date = args->date;
         format = (NULL == date) ? "%B %d, %Y" :          format = (NULL == date) ? "%B %d, %Y" :
             strcmp(date, "Mdocdate") ? NULL : "$Mdocdate$";              strcmp(date, "Mdocdate") ? NULL : "$" "Mdocdate: %B %d %Y $";
   
         if (NULL != format) {          if (NULL != format) {
                 strftime(datebuf, sizeof(datebuf), format, tm);                  strftime(datebuf, sizeof(datebuf), format, tm);

Legend:
Removed from v.1.46  
changed lines
  Added in v.1.51

CVSweb