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

Diff for /mandoc/mandocdb.c between version 1.36 and 1.37

version 1.36, 2011/12/16 12:06:35 version 1.37, 2011/12/20 21:41:11
Line 525  index_merge(const struct of *of, struct mparse *mp,
Line 525  index_merge(const struct of *of, struct mparse *mp,
         struct mdoc     *mdoc;          struct mdoc     *mdoc;
         struct man      *man;          struct man      *man;
         const char      *fn, *msec, *mtitle, *arch;          const char      *fn, *msec, *mtitle, *arch;
           uint64_t         mask;
         size_t           sv;          size_t           sv;
         unsigned         seq;          unsigned         seq;
         struct db_val    vbuf;          struct db_val    vbuf;
Line 655  index_merge(const struct of *of, struct mparse *mp,
Line 656  index_merge(const struct of *of, struct mparse *mp,
                 seq = R_FIRST;                  seq = R_FIRST;
                 while (0 == (ch = (*hash->seq)(hash, &key, &val, seq))) {                  while (0 == (ch = (*hash->seq)(hash, &key, &val, seq))) {
                         seq = R_NEXT;                          seq = R_NEXT;
                         vbuf.mask = htobe64(*(uint64_t *)val.data);                          assert(sizeof(uint64_t) == val.size);
                           memcpy(&mask, val.data, val.size);
                           vbuf.mask = htobe64(mask);
                         val.size = sizeof(struct db_val);                          val.size = sizeof(struct db_val);
                         val.data = &vbuf;                          val.data = &vbuf;
                         dbt_put(db, dbf, &key, &val);                          dbt_put(db, dbf, &key, &val);
Line 708  index_prune(const struct of *ofile, DB *db, const char
Line 711  index_prune(const struct of *ofile, DB *db, const char
         seq = R_FIRST;          seq = R_FIRST;
         while (0 == (ch = (*idx->seq)(idx, &key, &val, seq))) {          while (0 == (ch = (*idx->seq)(idx, &key, &val, seq))) {
                 seq = R_NEXT;                  seq = R_NEXT;
                 *maxrec = *(recno_t *)key.data;                  assert(sizeof(recno_t) == key.size);
                   memcpy(maxrec, key.data, key.size);
   
                 /* Deleted records are zero-sized.  Skip them. */                  /* Deleted records are zero-sized.  Skip them. */
   
Line 1068  pmdoc_Sh(MDOC_ARGS)
Line 1072  pmdoc_Sh(MDOC_ARGS)
 static void  static void
 hash_put(DB *db, const struct buf *buf, uint64_t mask)  hash_put(DB *db, const struct buf *buf, uint64_t mask)
 {  {
           uint64_t         oldmask;
         DBT              key, val;          DBT              key, val;
         int              rc;          int              rc;
   
Line 1080  hash_put(DB *db, const struct buf *buf, uint64_t mask)
Line 1085  hash_put(DB *db, const struct buf *buf, uint64_t mask)
         if ((rc = (*db->get)(db, &key, &val, 0)) < 0) {          if ((rc = (*db->get)(db, &key, &val, 0)) < 0) {
                 perror("hash");                  perror("hash");
                 exit((int)MANDOCLEVEL_SYSERR);                  exit((int)MANDOCLEVEL_SYSERR);
         } else if (0 == rc)          } else if (0 == rc) {
                 mask |= *(uint64_t *)val.data;                  assert(sizeof(uint64_t) == val.size);
                   memcpy(&oldmask, val.data, val.size);
                   mask |= oldmask;
           }
   
         val.data = &mask;          val.data = &mask;
         val.size = sizeof(uint64_t);          val.size = sizeof(uint64_t);

Legend:
Removed from v.1.36  
changed lines
  Added in v.1.37

CVSweb