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

Diff for /pod2mdoc/pod2mdoc.c between version 1.19 and 1.21

version 1.19, 2014/04/03 10:17:14 version 1.21, 2014/04/03 11:55:01
Line 179  formatescape(const char *buf, size_t *start, size_t en
Line 179  formatescape(const char *buf, size_t *start, size_t en
 static int  static int
 trylink(const char *buf, size_t *start, size_t end, size_t dsz)  trylink(const char *buf, size_t *start, size_t end, size_t dsz)
 {  {
         size_t           linkstart, realend, linkend, i, j, textsz;          size_t           linkstart, realend, linkend,
                            i, j, textsz, stack;
         const char      *text;          const char      *text;
   
         /*          /*
Line 187  trylink(const char *buf, size_t *start, size_t end, si
Line 188  trylink(const char *buf, size_t *start, size_t end, si
          * This function is more or less replicated in the formatcode()           * This function is more or less replicated in the formatcode()
          * for null or index formatting codes.           * for null or index formatting codes.
          */           */
           stack = 0;
         for (linkstart = realend = *start; realend < end; realend++) {          for (linkstart = realend = *start; realend < end; realend++) {
                 if ('>' != buf[realend])                  if ('>' != buf[realend])
                         continue;                          continue;
Line 215  trylink(const char *buf, size_t *start, size_t end, si
Line 217  trylink(const char *buf, size_t *start, size_t end, si
                 if ('|' == buf[textsz] || '/' == buf[textsz])                  if ('|' == buf[textsz] || '/' == buf[textsz])
                         break;                          break;
   
         /* If we have a title, find the section. */  
         if (textsz < linkend && '|' == buf[textsz]) {          if (textsz < linkend && '|' == buf[textsz]) {
                   /* With title: set start, then end at section. */
                 linkstart = textsz + 1;                  linkstart = textsz + 1;
                 textsz = textsz - *start;                  textsz = textsz - *start;
                 for (i = linkstart; i < linkend; i++)                  for (i = linkstart; i < linkend; i++)
Line 224  trylink(const char *buf, size_t *start, size_t end, si
Line 226  trylink(const char *buf, size_t *start, size_t end, si
                                 break;                                  break;
                 if (i < linkend)                  if (i < linkend)
                         linkend = i;                          linkend = i;
         } else {          } else if (textsz < linkend && '/' == buf[textsz]) {
                   /* With section: set end at section. */
                   linkend = textsz;
                 textsz = 0;                  textsz = 0;
                 if (textsz < linkend && '/' == buf[textsz])          } else
                         linkend = textsz;                  /* No title, no section. */
         }                  textsz = 0;
   
         *start = realend;          *start = realend;
   
         j = linkend - linkstart;          j = linkend - linkstart;
   
         if (0 == j)          /* Do we have only subsection material? */
           if (0 == j && '/' == buf[linkend]) {
                   linkstart = linkend + 1;
                   linkend = dsz > 1 ? realend - 1 : realend;
                   if (0 == (j = linkend - linkstart))
                           return(0);
                   printf("Sx %.*s", (int)j, &buf[linkstart]);
                   return(1);
           } else if (0 == j)
                 return(0);                  return(0);
   
         /* See if we qualify as being a link or not. */          /* See if we qualify as being a link or not. */
         if ((j > 5 && 0 == memcmp("http:", &buf[linkstart], j)) ||          if ((j > 4 && 0 == memcmp("http:", &buf[linkstart], j)) ||
                 (j > 6 && 0 == memcmp("https:", &buf[linkstart], j)) ||                  (j > 5 && 0 == memcmp("https:", &buf[linkstart], j)) ||
                 (j > 4 && 0 == memcmp("ftp:", &buf[linkstart], j)) ||                  (j > 3 && 0 == memcmp("ftp:", &buf[linkstart], j)) ||
                 (j > 5 && 0 == memcmp("sftp:", &buf[linkstart], j)) ||                  (j > 4 && 0 == memcmp("sftp:", &buf[linkstart], j)) ||
                 (j > 4 && 0 == memcmp("smb:", &buf[linkstart], j)) ||                  (j > 3 && 0 == memcmp("smb:", &buf[linkstart], j)) ||
                 (j > 4 && 0 == memcmp("afs:", &buf[linkstart], j))) {                  (j > 3 && 0 == memcmp("afs:", &buf[linkstart], j))) {
                 printf("Lk %.*s", (int)j, &buf[linkstart]);                  /* Gross. */
                   printf("Lk %.*s", (int)((dsz > 1 ? realend - 1 :
                           realend) - linkstart), &buf[linkstart]);
                 return(1);                  return(1);
         }          }
   
         /* See if we qualify as a mailto. */          /* See if we qualify as a mailto. */
         if (j > 7 && 0 == memcmp("mailto:", &buf[linkstart], j)) {          if (j > 6 && 0 == memcmp("mailto:", &buf[linkstart], j)) {
                 printf("Mt %.*s", (int)j, &buf[linkstart]);                  printf("Mt %.*s", (int)j, &buf[linkstart]);
                 return(1);                  return(1);
         }          }

Legend:
Removed from v.1.19  
changed lines
  Added in v.1.21

CVSweb