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

Diff for /mandoc/mandocdb.c between version 1.27 and 1.31

version 1.27, 2011/12/08 02:24:31 version 1.31, 2011/12/09 11:16:34
Line 1288  pformatted(DB *hash, struct buf *buf, struct buf *dbuf
Line 1288  pformatted(DB *hash, struct buf *buf, struct buf *dbuf
         buf_append(buf, of->title);          buf_append(buf, of->title);
         hash_put(hash, buf, TYPE_Nm);          hash_put(hash, buf, TYPE_Nm);
   
         while (NULL != (line = fgetln(stream, &len)) && '\n' != *line)          /* Skip to first blank line. */
                 /* Skip to first blank line. */ ;  
   
         while (NULL != (line = fgetln(stream, &len)) &&          while (NULL != (line = fgetln(stream, &len)))
                         ('\n' == *line || ' ' == *line))                  if ('\n' == *line)
                 /* Skip to first section header. */ ;                          break;
   
         /*          /*
          * If no page content can be found,           * Assume the first line that is not indented
          * reuse the page title as the page description.           * is the first section header.  Skip to it.
          */           */
   
         if (NULL == (line = fgetln(stream, &len))) {          while (NULL != (line = fgetln(stream, &len)))
                   if ('\n' != *line && ' ' != *line)
                           break;
   
           /*
            * If no page content can be found, or the input line
            * is already the next section header, or there is no
            * trailing newline, reuse the page title as the page
            * description.
            */
   
           line = fgetln(stream, &len);
           if (NULL == line || ' ' != *line || '\n' != line[(int)len - 1]) {
                 buf_appendb(dbuf, buf->cp, buf->size);                  buf_appendb(dbuf, buf->cp, buf->size);
                 hash_put(hash, buf, TYPE_Nd);                  hash_put(hash, buf, TYPE_Nd);
                 fclose(stream);                  fclose(stream);
                 return;                  return;
         }          }
         fclose(stream);  
   
           line[(int)--len] = '\0';
   
         /*          /*
          * If there is a dash, skip to the text following it.           * Skip to the first dash.
            * Use the remaining line as the description (no more than 70
            * bytes).
          */           */
   
         for (p = line, plen = len; plen; p++, plen--)          if (NULL != (p = strstr(line, "- "))) {
                 if ('-' == *p)                  for (p += 2; ' ' == *p || '\b' == *p; p++)
                         break;                          /* Skip to next word. */ ;
         for ( ; plen; p++, plen--)          } else
                 if ('-' != *p && ' ' != *p && 8 != *p)  
                         break;  
         if (0 == plen) {  
                 p = line;                  p = line;
                 plen = len;  
           if ((plen = strlen(p)) > 70) {
                   plen = 70;
                   p[plen] = '\0';
         }          }
   
         /*          /* Strip backspace-encoding from line. */
          * Copy the rest of the line, but no more than 70 bytes.  
          */  
   
         if (70 < plen)          while (NULL != (line = memchr(p, '\b', plen))) {
                 plen = 70;                  len = line - p;
         p[plen-1] = '\0';                  if (0 == len) {
         buf_appendb(dbuf, p, plen);                          memmove(line, line + 1, plen--);
                           continue;
                   }
                   memmove(line - 1, line + 1, plen - len);
                   plen -= 2;
           }
   
           buf_appendb(dbuf, p, plen + 1);
         buf->len = 0;          buf->len = 0;
         buf_appendb(buf, p, plen);          buf_appendb(buf, p, plen + 1);
         hash_put(hash, buf, TYPE_Nd);          hash_put(hash, buf, TYPE_Nd);
           fclose(stream);
 }  }
   
 static void  static void

Legend:
Removed from v.1.27  
changed lines
  Added in v.1.31

CVSweb