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

Diff for /mandoc/Attic/mandoc-db.c between version 1.14 and 1.20

version 1.14, 2011/05/01 11:56:26 version 1.20, 2011/05/12 01:45:55
Line 49  enum type {
Line 49  enum type {
         MANDOC_UTILITY,          MANDOC_UTILITY,
         MANDOC_INCLUDES,          MANDOC_INCLUDES,
         MANDOC_VARIABLE,          MANDOC_VARIABLE,
         MANDOC_STANDARD          MANDOC_STANDARD,
           MANDOC_AUTHOR,
           MANDOC_CONFIG
 };  };
   
 #define MAN_ARGS          DB *db, \  #define MAN_ARGS          DB *db, \
Line 77  static int    pman_node(MAN_ARGS);
Line 79  static int    pman_node(MAN_ARGS);
 static  void              pmdoc(DB *, const char *, DBT *, size_t *,  static  void              pmdoc(DB *, const char *, DBT *, size_t *,
                                 DBT *, DBT *, size_t *, struct mdoc *);                                  DBT *, DBT *, size_t *, struct mdoc *);
 static  void              pmdoc_node(MDOC_ARGS);  static  void              pmdoc_node(MDOC_ARGS);
   static  void              pmdoc_An(MDOC_ARGS);
   static  void              pmdoc_Cd(MDOC_ARGS);
 static  void              pmdoc_Fd(MDOC_ARGS);  static  void              pmdoc_Fd(MDOC_ARGS);
 static  void              pmdoc_In(MDOC_ARGS);  static  void              pmdoc_In(MDOC_ARGS);
 static  void              pmdoc_Fn(MDOC_ARGS);  static  void              pmdoc_Fn(MDOC_ARGS);
Line 106  static const pmdoc_nf   mdocs[MDOC_MAX] = {
Line 110  static const pmdoc_nf   mdocs[MDOC_MAX] = {
         NULL, /* El */          NULL, /* El */
         NULL, /* It */          NULL, /* It */
         NULL, /* Ad */          NULL, /* Ad */
         NULL, /* An */          pmdoc_An, /* An */
         NULL, /* Ar */          NULL, /* Ar */
         NULL, /* Cd */          pmdoc_Cd, /* Cd */
         NULL, /* Cm */          NULL, /* Cm */
         NULL, /* Dv */          NULL, /* Dv */
         NULL, /* Er */          NULL, /* Er */
Line 223  main(int argc, char *argv[])
Line 227  main(int argc, char *argv[])
         struct man      *man; /* resulting man */          struct man      *man; /* resulting man */
         char            *fn; /* current file being parsed */          char            *fn; /* current file being parsed */
         const char      *msec, /* manual section */          const char      *msec, /* manual section */
                           *mtitle, /* manual title */
                           *arch, /* manual architecture */
                         *dir; /* result dir (default: cwd) */                          *dir; /* result dir (default: cwd) */
         char             ibuf[MAXPATHLEN], /* index fname */          char             ibuf[MAXPATHLEN], /* index fname */
                          ibbuf[MAXPATHLEN], /* index backup fname */                           ibbuf[MAXPATHLEN], /* index backup fname */
Line 356  main(int argc, char *argv[])
Line 362  main(int argc, char *argv[])
                 msec = NULL != mdoc ?                  msec = NULL != mdoc ?
                         mdoc_meta(mdoc)->msec :                          mdoc_meta(mdoc)->msec :
                         man_meta(man)->msec;                          man_meta(man)->msec;
                   mtitle = NULL != mdoc ?
                           mdoc_meta(mdoc)->title :
                           man_meta(man)->title;
                   arch = NULL != mdoc ? mdoc_meta(mdoc)->arch : NULL;
   
                 assert(msec);                  assert(msec);
                   assert(mtitle);
   
                 /*                  /*
                  * The index record value consists of a nil-terminated                   * The index record value consists of a nil-terminated
Line 370  main(int argc, char *argv[])
Line 381  main(int argc, char *argv[])
                 dbt_init(&rval, &rsz);                  dbt_init(&rval, &rsz);
                 dbt_appendb(&rval, &rsz, fn, strlen(fn) + 1);                  dbt_appendb(&rval, &rsz, fn, strlen(fn) + 1);
                 dbt_appendb(&rval, &rsz, msec, strlen(msec) + 1);                  dbt_appendb(&rval, &rsz, msec, strlen(msec) + 1);
                   dbt_appendb(&rval, &rsz, mtitle, strlen(mtitle) + 1);
                   dbt_appendb(&rval, &rsz, arch ? arch : "",
                                   arch ? strlen(arch) + 1 : 1);
   
                 sv = rval.size;                  sv = rval.size;
   
                 /* Fix the record number in the btree value. */                  /* Fix the record number in the btree value. */
Line 443  dbt_init(DBT *key, size_t *ksz)
Line 458  dbt_init(DBT *key, size_t *ksz)
 static void  static void
 dbt_appendb(DBT *key, size_t *ksz, const void *cp, size_t sz)  dbt_appendb(DBT *key, size_t *ksz, const void *cp, size_t sz)
 {  {
         void            *dstp, *endp;  
         int              ssz;  
         enum mandoc_esc  esc;  
   
         assert(key->data);          assert(key->data);
   
Line 456  dbt_appendb(DBT *key, size_t *ksz, const void *cp, siz
Line 468  dbt_appendb(DBT *key, size_t *ksz, const void *cp, siz
                 key->data = mandoc_realloc(key->data, *ksz);                  key->data = mandoc_realloc(key->data, *ksz);
         }          }
   
   #if 0
         dstp = key->data + (int)key->size;          dstp = key->data + (int)key->size;
   
         while (NULL != (endp = memchr(cp, '\\', sz))) {          while (NULL != (endp = memchr(cp, '\\', sz))) {
Line 495  dbt_appendb(DBT *key, size_t *ksz, const void *cp, siz
Line 508  dbt_appendb(DBT *key, size_t *ksz, const void *cp, siz
   
                 cp = endp;                  cp = endp;
         }          }
   #endif
   
         memcpy(dstp, cp, sz);          memcpy(key->data + (int)key->size, cp, sz);
         key->size += sz;          key->size += sz;
 }  }
   
Line 523  dbt_append(DBT *key, size_t *ksz, const char *cp)
Line 537  dbt_append(DBT *key, size_t *ksz, const char *cp)
   
 /* ARGSUSED */  /* ARGSUSED */
 static void  static void
   pmdoc_An(MDOC_ARGS)
   {
           uint32_t         fl;
   
           if (SEC_AUTHORS != n->sec)
                   return;
   
           for (n = n->child; n; n = n->next)
                   if (MDOC_TEXT == n->type)
                           dbt_append(key, ksz, n->string);
   
           fl = MANDOC_AUTHOR;
           memcpy(val->data, &fl, 4);
   }
   
   /* ARGSUSED */
   static void
 pmdoc_Fd(MDOC_ARGS)  pmdoc_Fd(MDOC_ARGS)
 {  {
         uint32_t         fl;          uint32_t         fl;
Line 569  pmdoc_Fd(MDOC_ARGS)
Line 600  pmdoc_Fd(MDOC_ARGS)
   
 /* ARGSUSED */  /* ARGSUSED */
 static void  static void
   pmdoc_Cd(MDOC_ARGS)
   {
           uint32_t         fl;
   
           if (SEC_SYNOPSIS != n->sec)
                   return;
   
           for (n = n->child; n; n = n->next)
                   if (MDOC_TEXT == n->type)
                           dbt_append(key, ksz, n->string);
   
           fl = MANDOC_CONFIG;
           memcpy(val->data, &fl, 4);
   }
   
   /* ARGSUSED */
   static void
 pmdoc_In(MDOC_ARGS)  pmdoc_In(MDOC_ARGS)
 {  {
         uint32_t         fl;          uint32_t         fl;
Line 823  pman_node(MAN_ARGS)
Line 871  pman_node(MAN_ARGS)
                         /*                          /*
                          * Go through a special heuristic dance here.                           * Go through a special heuristic dance here.
                          * This is why -man manuals are great!                           * This is why -man manuals are great!
                            * (I'm being sarcastic: my eyes are bleeding.)
                          * Conventionally, one or more manual names are                           * Conventionally, one or more manual names are
                          * comma-specified prior to a whitespace, then a                           * comma-specified prior to a whitespace, then a
                          * dash, then a description.  Try to puzzle out                           * dash, then a description.  Try to puzzle out
Line 860  pman_node(MAN_ARGS)
Line 909  pman_node(MAN_ARGS)
                         while (' ' == *start)                          while (' ' == *start)
                                 start++;                                  start++;
   
                         if ('\\' == *start && '-' == *(start + 1))                          if (0 == strncmp(start, "-", 1))
                                   start += 1;
                           else if (0 == strncmp(start, "\\-", 2))
                                 start += 2;                                  start += 2;
                         else if ('-' == *start)                          else if (0 == strncmp(start, "\\(en", 4))
                                 start++;                                  start += 4;
                           else if (0 == strncmp(start, "\\(em", 4))
                                   start += 4;
   
                         while (' ' == *start)                          while (' ' == *start)
                                 start++;                                  start++;

Legend:
Removed from v.1.14  
changed lines
  Added in v.1.20

CVSweb