]> git.pld-linux.org Git - packages/db1.git/blob - db1.patch
- dropped pre-cvs changelog
[packages/db1.git] / db1.patch
1 --- db.1.85/btree/bt_delete.c.jj        Thu Jul 28 16:30:03 1994
2 +++ db.1.85/btree/bt_delete.c   Wed Apr 19 17:56:12 2000
3 @@ -154,7 +154,7 @@ __bt_stkacq(t, hp, c)
4         pgno_t pgno;
5         recno_t nextpg, prevpg;
6         int exact, level;
7 -       
8 +
9         /*
10          * Find the first occurrence of the key in the tree.  Toss the
11          * currently locked page so we don't hit an already-locked page.
12 @@ -270,7 +270,7 @@ __bt_stkacq(t, hp, c)
13                 if ((h = mpool_get(t->bt_mp, prevpg, 0)) == NULL)
14                         return (1);
15         }
16 -       
17 +
18  
19  ret:   mpool_put(t->bt_mp, h, 0);
20         return ((*hp = mpool_get(t->bt_mp, c->pg.pgno, 0)) == NULL);
21 @@ -402,7 +402,7 @@ __bt_pdelete(t, h)
22                 /* Get the parent page. */
23                 if ((pg = mpool_get(t->bt_mp, parent->pgno, 0)) == NULL)
24                         return (RET_ERROR);
25 -               
26 +
27                 index = parent->index;
28                 bi = GETBINTERNAL(pg, index);
29  
30 @@ -418,7 +418,7 @@ __bt_pdelete(t, h)
31                  * root page. If it's the rootpage, turn it back into an empty
32                  * leaf page.
33                  */
34 -               if (NEXTINDEX(pg) == 1)
35 +               if (NEXTINDEX(pg) == 1) {
36                         if (pg->pgno == P_ROOT) {
37                                 pg->lower = BTDATAOFF;
38                                 pg->upper = t->bt_psize;
39 @@ -428,7 +428,7 @@ __bt_pdelete(t, h)
40                                         return (RET_ERROR);
41                                 continue;
42                         }
43 -               else {
44 +               } else {
45                         /* Pack remaining key items at the end of the page. */
46                         nksize = NBINTERNAL(bi->ksize);
47                         from = (char *)pg + pg->upper;
48 @@ -571,7 +571,7 @@ __bt_curdel(t, key, h, index)
49                         key = &c->key;
50                 }
51                 /* Check previous key, if not at the beginning of the page. */
52 -               if (index > 0) { 
53 +               if (index > 0) {
54                         e.page = h;
55                         e.index = index - 1;
56                         if (__bt_cmp(t, key, &e) == 0) {
57 --- db.1.85/btree/bt_open.c.jj  Thu Aug 18 15:30:42 1994
58 +++ db.1.85/btree/bt_open.c     Wed Apr 19 17:56:12 2000
59 @@ -125,7 +125,7 @@ __bt_open(fname, flags, mode, openinfo, 
60                  */
61                 if (b.psize &&
62                     (b.psize < MINPSIZE || b.psize > MAX_PAGE_OFFSET + 1 ||
63 -                   b.psize & sizeof(indx_t) - 1))
64 +                   b.psize & (sizeof(indx_t) - 1)))
65                         goto einval;
66  
67                 /* Minimum number of keys per page; absolute minimum is 2. */
68 @@ -200,7 +200,7 @@ __bt_open(fname, flags, mode, openinfo, 
69                 default:
70                         goto einval;
71                 }
72 -               
73 +
74                 if ((t->bt_fd = open(fname, flags, mode)) < 0)
75                         goto err;
76  
77 @@ -245,7 +245,7 @@ __bt_open(fname, flags, mode, openinfo, 
78                 if (m.magic != BTREEMAGIC || m.version != BTREEVERSION)
79                         goto eftype;
80                 if (m.psize < MINPSIZE || m.psize > MAX_PAGE_OFFSET + 1 ||
81 -                   m.psize & sizeof(indx_t) - 1)
82 +                   m.psize & (sizeof(indx_t) - 1))
83                         goto eftype;
84                 if (m.flags & ~SAVEMETA)
85                         goto eftype;
86 @@ -259,7 +259,9 @@ __bt_open(fname, flags, mode, openinfo, 
87                  * Don't overflow the page offset type.
88                  */
89                 if (b.psize == 0) {
90 +#ifdef _STATBUF_ST_BLKSIZE
91                         b.psize = sb.st_blksize;
92 +#endif
93                         if (b.psize < MINPSIZE)
94                                 b.psize = MINPSIZE;
95                         if (b.psize > MAX_PAGE_OFFSET + 1)
96 @@ -278,8 +280,8 @@ __bt_open(fname, flags, mode, openinfo, 
97         t->bt_psize = b.psize;
98  
99         /* Set the cache size; must be a multiple of the page size. */
100 -       if (b.cachesize && b.cachesize & b.psize - 1)
101 -               b.cachesize += (~b.cachesize & b.psize - 1) + 1;
102 +       if (b.cachesize && b.cachesize & (b.psize - 1))
103 +               b.cachesize += (~b.cachesize & (b.psize - 1)) + 1;
104         if (b.cachesize < b.psize * MINCACHE)
105                 b.cachesize = b.psize * MINCACHE;
106  
107 @@ -388,18 +390,30 @@ tmp()
108  {
109         sigset_t set, oset;
110         int fd;
111 -       char *envtmp;
112 -       char path[MAXPATHLEN];
113 +       const char *envtmp;
114 +       char *path;
115 +       static const char fmt[] = "%s/bt.XXXXXX";
116 +       size_t n;
117  
118         envtmp = getenv("TMPDIR");
119 -       (void)snprintf(path,
120 -           sizeof(path), "%s/bt.XXXXXX", envtmp ? envtmp : "/tmp");
121 +       if (!envtmp)
122 +         envtmp = "/tmp";
123 +       n = strlen (envtmp) + sizeof fmt;
124 +#ifdef __GNUC__
125 +       path = __builtin_alloca(n);
126 +#else
127 +       path = malloc(n);
128 +#endif
129 +       (void)snprintf(path, n, fmt, envtmp ? envtmp : "/tmp");
130  
131         (void)sigfillset(&set);
132         (void)sigprocmask(SIG_BLOCK, &set, &oset);
133         if ((fd = mkstemp(path)) != -1)
134                 (void)unlink(path);
135         (void)sigprocmask(SIG_SETMASK, &oset, NULL);
136 +#ifndef        __GNUC__
137 +       free(path);
138 +#endif
139         return(fd);
140  }
141  
142 --- db.1.85/btree/bt_page.c.jj  Thu Jul 14 03:29:02 1994
143 +++ db.1.85/btree/bt_page.c     Wed Apr 19 17:56:12 2000
144 @@ -65,6 +65,7 @@ __bt_free(t, h)
145         h->prevpg = P_INVALID;
146         h->nextpg = t->bt_free;
147         t->bt_free = h->pgno;
148 +       F_SET(t, B_METADIRTY);
149  
150         /* Make sure the page gets written back. */
151         return (mpool_put(t->bt_mp, h, MPOOL_DIRTY));
152 @@ -92,6 +93,7 @@ __bt_new(t, npg)
153             (h = mpool_get(t->bt_mp, t->bt_free, 0)) != NULL) {
154                 *npg = t->bt_free;
155                 t->bt_free = h->nextpg;
156 +               F_SET(t, B_METADIRTY);
157                 return (h);
158         }
159         return (mpool_new(t->bt_mp, npg));
160 --- db.1.85/btree/bt_put.c.jj   Tue Jul 26 20:56:14 1994
161 +++ db.1.85/btree/bt_put.c      Wed Apr 19 17:56:12 2000
162 @@ -201,7 +201,7 @@ delete:             if (__bt_dleaf(t, key, h, index
163          * into the offset array, shift the pointers up.
164          */
165         nbytes = NBLEAFDBT(key->size, data->size);
166 -       if (h->upper - h->lower < nbytes + sizeof(indx_t)) {
167 +       if ((u_int32_t) (h->upper - h->lower) < nbytes + sizeof(indx_t)) {
168                 if ((status = __bt_split(t, h, key,
169                     data, dflags, nbytes, index)) != RET_SUCCESS)
170                         return (status);
171 @@ -223,7 +223,7 @@ delete:             if (__bt_dleaf(t, key, h, index
172             t->bt_cursor.pg.pgno == h->pgno && t->bt_cursor.pg.index >= index)
173                 ++t->bt_cursor.pg.index;
174  
175 -       if (t->bt_order == NOT)
176 +       if (t->bt_order == NOT) {
177                 if (h->nextpg == P_INVALID) {
178                         if (index == NEXTINDEX(h) - 1) {
179                                 t->bt_order = FORWARD;
180 @@ -237,6 +237,7 @@ delete:             if (__bt_dleaf(t, key, h, index
181                                 t->bt_last.pgno = h->pgno;
182                         }
183                 }
184 +       }
185  
186         mpool_put(t->bt_mp, h, MPOOL_DIRTY);
187  
188 @@ -284,7 +285,7 @@ bt_fast(t, key, data, exactp)
189          * have to search to get split stack.
190          */
191         nbytes = NBLEAFDBT(key->size, data->size);
192 -       if (h->upper - h->lower < nbytes + sizeof(indx_t))
193 +       if ((u_int32_t) (h->upper - h->lower) < nbytes + sizeof(indx_t))
194                 goto miss;
195  
196         if (t->bt_order == FORWARD) {
197 --- db.1.85/btree/bt_seq.c.jj   Tue Jul 26 18:57:24 1994
198 +++ db.1.85/btree/bt_seq.c      Wed Apr 19 17:56:12 2000
199 @@ -92,7 +92,7 @@ __bt_seq(dbp, key, data, flags)
200         }
201  
202         /*
203 -        * If scan unitialized as yet, or starting at a specific record, set
204 +        * If scan uninitialized as yet, or starting at a specific record, set
205          * the scan to a specific key.  Both __bt_seqset and __bt_seqadv pin
206          * the page the cursor references if they're successful.
207          */
208 @@ -358,13 +358,13 @@ __bt_first(t, key, erval, exactp)
209          * page) and return it.
210          */
211         if ((ep = __bt_search(t, key, exactp)) == NULL)
212 -               return (NULL);
213 +               return (RET_SPECIAL);
214         if (*exactp) {
215                 if (F_ISSET(t, B_NODUPS)) {
216                         *erval = *ep;
217                         return (RET_SUCCESS);
218                 }
219 -                       
220 +
221                 /*
222                  * Walk backwards, as long as the entry matches and there are
223                  * keys left in the tree.  Save a copy of each match in case
224 --- db.1.85/btree/bt_split.c.jj Tue Jul 26 20:22:02 1994
225 +++ db.1.85/btree/bt_split.c    Wed Apr 19 17:56:12 2000
226 @@ -215,7 +215,8 @@ __bt_split(t, sp, key, data, flags, ilen
227                 }
228  
229                 /* Split the parent page if necessary or shift the indices. */
230 -               if (h->upper - h->lower < nbytes + sizeof(indx_t)) {
231 +               if ((u_int32_t) (h->upper - h->lower)
232 +                   < nbytes + sizeof(indx_t)) {
233                         sp = h;
234                         h = h->pgno == P_ROOT ?
235                             bt_root(t, h, &l, &r, &skip, nbytes) :
236 @@ -673,7 +674,8 @@ bt_psplit(t, h, l, r, pskip, ilen)
237                  * where we decide to try and copy too much onto the left page.
238                  * Make sure that doesn't happen.
239                  */
240 -               if (skip <= off && used + nbytes >= full) {
241 +               if ((skip <= off && used + nbytes + sizeof(indx_t) >= full)
242 +                   || nxt == top - 1) {
243                         --off;
244                         break;
245                 }
246 @@ -686,7 +688,7 @@ bt_psplit(t, h, l, r, pskip, ilen)
247                         memmove((char *)l + l->upper, src, nbytes);
248                 }
249  
250 -               used += nbytes;
251 +               used += nbytes + sizeof(indx_t);
252                 if (used >= half) {
253                         if (!isbigkey || bigkeycnt == 3)
254                                 break;
255 --- db.1.85/btree/bt_utils.c.jj Wed Jul 20 17:06:53 1994
256 +++ db.1.85/btree/bt_utils.c    Wed Apr 19 17:56:12 2000
257 @@ -76,7 +76,7 @@ __bt_ret(t, e, key, rkey, data, rdata, c
258         bl = GETBLEAF(e->page, e->index);
259  
260         /*
261 -        * We must copy big keys/data to make them contigous.  Otherwise,
262 +        * We must copy big keys/data to make them contiguous.  Otherwise,
263          * leave the page pinned and don't copy unless the user specified
264          * concurrent access.
265          */
266 --- db.1.85/btree/btree.h.jj    Thu Aug 18 15:30:43 1994
267 +++ db.1.85/btree/btree.h       Wed Apr 19 17:58:46 2000
268 @@ -43,6 +43,14 @@
269  
270  #include <mpool.h>
271  
272 +#define mpool_open __mpool_open
273 +#define mpool_filter __mpool_filter
274 +#define mpool_new __mpool_new
275 +#define mpool_get __mpool_get
276 +#define mpool_put __mpool_put
277 +#define mpool_sync __mpool_sync
278 +#define mpool_close __mpool_close
279 +
280  #define        DEFMINKEYPAGE   (2)             /* Minimum keys per page */
281  #define        MINCACHE        (5)             /* Minimum cached pages */
282  #define        MINPSIZE        (512)           /* Minimum page size */
283 @@ -161,7 +169,7 @@ typedef struct _rinternal {
284  #define NRINTERNAL                                                     \
285         LALIGN(sizeof(recno_t) + sizeof(pgno_t))
286  
287 -/* Copy a RINTERAL entry to the page. */
288 +/* Copy a RINTERNAL entry to the page. */
289  #define        WR_RINTERNAL(p, nrecs, pgno) {                                  \
290         *(recno_t *)p = nrecs;                                          \
291         p += sizeof(recno_t);                                           \
292 --- db.1.85/hash/extern.h.jj    Thu Jun 16 22:30:14 1994
293 +++ db.1.85/hash/extern.h       Wed Apr 19 17:56:12 2000
294 @@ -52,7 +52,7 @@ void   __free_ovflpage __P((HTAB *, BUFHE
295  BUFHEAD        *__get_buf __P((HTAB *, u_int32_t, BUFHEAD *, int));
296  int     __get_page __P((HTAB *, char *, u_int32_t, int, int, int));
297  int     __ibitmap __P((HTAB *, int, int, int));
298 -u_int32_t       __log2 __P((u_int32_t));
299 +u_int32_t       __hash_log2 __P((u_int32_t));
300  int     __put_page __P((HTAB *, char *, u_int32_t, int, int));
301  void    __reclaim_buf __P((HTAB *, BUFHEAD *));
302  int     __split_page __P((HTAB *, u_int32_t, u_int32_t));
303 --- db.1.85/hash/hash.c.jj      Fri Jun 24 17:12:29 1994
304 +++ db.1.85/hash/hash.c Wed Apr 19 17:56:12 2000
305 @@ -157,7 +157,8 @@ __hash_open(file, flags, mode, info, dfl
306                 if (hashp->VERSION != HASHVERSION &&
307                     hashp->VERSION != OLDHASHVERSION)
308                         RETURN_ERROR(EFTYPE, error1);
309 -               if (hashp->hash(CHARKEY, sizeof(CHARKEY)) != hashp->H_CHARKEY)
310 +               if (hashp->hash(CHARKEY, sizeof(CHARKEY))
311 +                   != (u_int32_t) hashp->H_CHARKEY)
312                         RETURN_ERROR(EFTYPE, error1);
313                 /*
314                  * Figure out how many segments we need.  Max_Bucket is the
315 @@ -189,7 +190,7 @@ __hash_open(file, flags, mode, info, dfl
316                 __buf_init(hashp, DEF_BUFSIZE);
317  
318         hashp->new_file = new_table;
319 -       hashp->save_file = file && (hashp->flags & O_RDWR);
320 +       hashp->save_file = file && (hashp->flags & O_ACCMODE) != O_RDONLY;
321         hashp->cbucket = -1;
322         if (!(dbp = (DB *)malloc(sizeof(DB)))) {
323                 save_errno = errno;
324 @@ -281,7 +282,9 @@ init_hash(hashp, file, info)
325         const char *file;
326         HASHINFO *info;
327  {
328 +#ifdef _STATBUF_ST_BLKSIZE
329         struct stat statbuf;
330 +#endif
331         int nelem;
332  
333         nelem = 1;
334 @@ -298,17 +301,19 @@ init_hash(hashp, file, info)
335         memset(hashp->BITMAPS, 0, sizeof (hashp->BITMAPS));
336  
337         /* Fix bucket size to be optimal for file system */
338 +#ifdef _STATBUF_ST_BLKSIZE
339         if (file != NULL) {
340                 if (stat(file, &statbuf))
341                         return (NULL);
342                 hashp->BSIZE = statbuf.st_blksize;
343 -               hashp->BSHIFT = __log2(hashp->BSIZE);
344 +               hashp->BSHIFT = __hash_log2(hashp->BSIZE);
345         }
346 +#endif
347  
348         if (info) {
349                 if (info->bsize) {
350                         /* Round pagesize up to power of 2 */
351 -                       hashp->BSHIFT = __log2(info->bsize);
352 +                       hashp->BSHIFT = __hash_log2(info->bsize);
353                         hashp->BSIZE = 1 << hashp->BSHIFT;
354                         if (hashp->BSIZE > MAX_BSIZE) {
355                                 errno = EINVAL;
356 @@ -357,7 +362,7 @@ init_htab(hashp, nelem)
357          */
358         nelem = (nelem - 1) / hashp->FFACTOR + 1;
359  
360 -       l2 = __log2(MAX(nelem, 2));
361 +       l2 = __hash_log2(MAX(nelem, 2));
362         nbuckets = 1 << l2;
363  
364         hashp->SPARES[l2] = l2 + 1;
365 @@ -375,7 +380,7 @@ init_htab(hashp, nelem)
366             hashp->BSHIFT) + 1;
367  
368         nsegs = (nbuckets - 1) / hashp->SGSIZE + 1;
369 -       nsegs = 1 << __log2(nsegs);
370 +       nsegs = 1 << __hash_log2(nsegs);
371  
372         if (nsegs > hashp->DSIZE)
373                 hashp->DSIZE = nsegs;
374 @@ -505,7 +510,7 @@ flush_meta(hashp)
375         else
376                 if (wsize != sizeof(HASHHDR)) {
377                         errno = EFTYPE;
378 -                       hashp->errno = errno;
379 +                       hashp->errnum = errno;
380                         return (-1);
381                 }
382         for (i = 0; i < NCACHED; i++)
383 @@ -536,7 +541,7 @@ hash_get(dbp, key, data, flag)
384  
385         hashp = (HTAB *)dbp->internal;
386         if (flag) {
387 -               hashp->errno = errno = EINVAL;
388 +               hashp->errnum = errno = EINVAL;
389                 return (ERROR);
390         }
391         return (hash_access(hashp, HASH_GET, (DBT *)key, data));
392 @@ -553,11 +558,11 @@ hash_put(dbp, key, data, flag)
393  
394         hashp = (HTAB *)dbp->internal;
395         if (flag && flag != R_NOOVERWRITE) {
396 -               hashp->errno = errno = EINVAL;
397 +               hashp->errnum = errno = EINVAL;
398                 return (ERROR);
399         }
400         if ((hashp->flags & O_ACCMODE) == O_RDONLY) {
401 -               hashp->errno = errno = EPERM;
402 +               hashp->errnum = errno = EPERM;
403                 return (ERROR);
404         }
405         return (hash_access(hashp, flag == R_NOOVERWRITE ?
406 @@ -574,11 +579,11 @@ hash_delete(dbp, key, flag)
407  
408         hashp = (HTAB *)dbp->internal;
409         if (flag && flag != R_CURSOR) {
410 -               hashp->errno = errno = EINVAL;
411 +               hashp->errnum = errno = EINVAL;
412                 return (ERROR);
413         }
414         if ((hashp->flags & O_ACCMODE) == O_RDONLY) {
415 -               hashp->errno = errno = EPERM;
416 +               hashp->errnum = errno = EPERM;
417                 return (ERROR);
418         }
419         return (hash_access(hashp, HASH_DELETE, (DBT *)key, NULL));
420 @@ -729,7 +734,7 @@ hash_seq(dbp, key, data, flag)
421  
422         hashp = (HTAB *)dbp->internal;
423         if (flag && flag != R_FIRST && flag != R_NEXT) {
424 -               hashp->errno = errno = EINVAL;
425 +               hashp->errnum = errno = EINVAL;
426                 return (ERROR);
427         }
428  #ifdef HASH_STATISTICS
429 @@ -744,7 +749,7 @@ hash_seq(dbp, key, data, flag)
430         for (bp = NULL; !bp || !bp[0]; ) {
431                 if (!(bufp = hashp->cpage)) {
432                         for (bucket = hashp->cbucket;
433 -                           bucket <= hashp->MAX_BUCKET;
434 +                           bucket <= (u_int32_t) hashp->MAX_BUCKET;
435                             bucket++, hashp->cndx = 1) {
436                                 bufp = __get_buf(hashp, bucket, NULL, 0);
437                                 if (!bufp)
438 @@ -842,13 +847,13 @@ __expand_table(hashp)
439          * * increases), we need to copy the current contents of the spare
440          * split bucket to the next bucket.
441          */
442 -       spare_ndx = __log2(hashp->MAX_BUCKET + 1);
443 +       spare_ndx = __hash_log2(hashp->MAX_BUCKET + 1);
444         if (spare_ndx > hashp->OVFL_POINT) {
445                 hashp->SPARES[spare_ndx] = hashp->SPARES[hashp->OVFL_POINT];
446                 hashp->OVFL_POINT = spare_ndx;
447         }
448  
449 -       if (new_bucket > hashp->HIGH_MASK) {
450 +       if (new_bucket > (u_int32_t) hashp->HIGH_MASK) {
451                 /* Starting a new doubling */
452                 hashp->LOW_MASK = hashp->HIGH_MASK;
453                 hashp->HIGH_MASK = new_bucket | hashp->LOW_MASK;
454 @@ -868,7 +873,7 @@ hash_realloc(p_ptr, oldsize, newsize)
455  {
456         register void *p;
457  
458 -       if (p = malloc(newsize)) {
459 +       if ((p = malloc(newsize))) {
460                 memmove(p, *p_ptr, oldsize);
461                 memset((char *)p + oldsize, 0, newsize - oldsize);
462                 free(*p_ptr);
463 --- db.1.85/hash/hash.h.jj      Fri Jun 24 17:12:29 1994
464 +++ db.1.85/hash/hash.h Wed Apr 19 17:56:12 2000
465 @@ -71,28 +71,28 @@ typedef struct hashhdr {            /* Disk reside
466         int             dsize;          /* Directory Size */
467         int             ssize;          /* Segment Size */
468         int             sshift;         /* Segment shift */
469 -       int             ovfl_point;     /* Where overflow pages are being 
470 +       int             ovfl_point;     /* Where overflow pages are being
471                                          * allocated */
472         int             last_freed;     /* Last overflow page freed */
473         int             max_bucket;     /* ID of Maximum bucket in use */
474         int             high_mask;      /* Mask to modulo into entire table */
475 -       int             low_mask;       /* Mask to modulo into lower half of 
476 +       int             low_mask;       /* Mask to modulo into lower half of
477                                          * table */
478         int             ffactor;        /* Fill factor */
479         int             nkeys;          /* Number of keys in hash table */
480         int             hdrpages;       /* Size of table header */
481         int             h_charkey;      /* value of hash(CHARKEY) */
482 -#define NCACHED        32                      /* number of bit maps and spare 
483 +#define NCACHED        32                      /* number of bit maps and spare
484                                          * points */
485         int             spares[NCACHED];/* spare pages for overflow */
486 -       u_int16_t       bitmaps[NCACHED];       /* address of overflow page 
487 +       u_int16_t       bitmaps[NCACHED];       /* address of overflow page
488                                                  * bitmaps */
489  } HASHHDR;
490  
491  typedef struct htab     {              /* Memory resident data structure */
492         HASHHDR         hdr;            /* Header */
493         int             nsegs;          /* Number of allocated segments */
494 -       int             exsegs;         /* Number of extra allocated 
495 +       int             exsegs;         /* Number of extra allocated
496                                          * segments */
497         u_int32_t                       /* Hash function */
498             (*hash)__P((const void *, size_t));
499 @@ -103,16 +103,16 @@ typedef struct htab        {              /* Memory reside
500         BUFHEAD         *cpage;         /* Current page */
501         int             cbucket;        /* Current bucket */
502         int             cndx;           /* Index of next item on cpage */
503 -       int             errno;          /* Error Number -- for DBM 
504 -                                        * compatability */
505 -       int             new_file;       /* Indicates if fd is backing store 
506 +       int             errnum;         /* Error Number -- for DBM
507 +                                        * compatibility */
508 +       int             new_file;       /* Indicates if fd is backing store
509                                          * or no */
510 -       int             save_file;      /* Indicates whether we need to flush 
511 +       int             save_file;      /* Indicates whether we need to flush
512                                          * file at
513                                          * exit */
514         u_int32_t       *mapp[NCACHED]; /* Pointers to page maps */
515         int             nmaps;          /* Initial number of bitmaps */
516 -       int             nbufs;          /* Number of buffers left to 
517 +       int             nbufs;          /* Number of buffers left to
518                                          * allocate */
519         BUFHEAD         bufhead;        /* Header of buffer lru list */
520         SEGMENT         *dir;           /* Hash Bucket directory */
521 @@ -170,7 +170,7 @@ typedef struct htab  {              /* Memory reside
522  #define        OADDR_OF(S,O)   ((u_int32_t)((u_int32_t)(S) << SPLITSHIFT) + (O))
523  
524  #define BUCKET_TO_PAGE(B) \
525 -       (B) + hashp->HDRPAGES + ((B) ? hashp->SPARES[__log2((B)+1)-1] : 0)
526 +       (B) + hashp->HDRPAGES + ((B) ? hashp->SPARES[__hash_log2((B)+1)-1] : 0)
527  #define OADDR_TO_PAGE(B)       \
528         BUCKET_TO_PAGE ( (1 << SPLITNUM((B))) -1 ) + OPAGENUM((B));
529  
530 @@ -194,7 +194,7 @@ typedef struct htab  {              /* Memory reside
531   *             so it starts on this page and continues on the next.
532   *             The format of the page is:
533   *                 KEY_OFF PARTIAL_KEY OVFL_PAGENO OVFLPAGE
534 - *             
535 + *
536   *                 KEY_OFF -- offset of the beginning of the key
537   *                 PARTIAL_KEY -- 1
538   *                 OVFL_PAGENO - page number of the next overflow page
539 @@ -229,7 +229,7 @@ typedef struct htab  {              /* Memory reside
540   *                 OVFL_PAGENO - page number of the next overflow page
541   *                 OVFLPAGE -- 0
542   *
543 - * FULL_KEY_DATA 
544 + * FULL_KEY_DATA
545   *             This must be the first key/data pair on the page.
546   *             There are two cases:
547   *
548 --- db.1.85/hash/hash_bigkey.c.jj       Fri Jun 24 17:12:30 1994
549 +++ db.1.85/hash/hash_bigkey.c  Wed Apr 19 17:56:12 2000
550 @@ -121,7 +121,7 @@ __big_insert(hashp, bufp, key, val)
551                 if (!bufp)
552                         return (-1);
553                 n = p[0];
554 -               if (!key_size)
555 +               if (!key_size) {
556                         if (FREESPACE(p)) {
557                                 move_bytes = MIN(FREESPACE(p), val_size);
558                                 off = OFFSET(p) - move_bytes;
559 @@ -134,6 +134,7 @@ __big_insert(hashp, bufp, key, val)
560                                 OFFSET(p) = off;
561                         } else
562                                 p[n - 2] = FULL_KEY;
563 +               }
564                 p = (u_int16_t *)bufp->page;
565                 cp = bufp->page;
566                 bufp->flags |= BUF_MOD;
567 @@ -147,7 +148,7 @@ __big_insert(hashp, bufp, key, val)
568                  * Here's the hack to make sure that if the data ends on the
569                  * same page as the key ends, FREESPACE is at least one.
570                  */
571 -               if (space == val_size && val_size == val->size)
572 +               if ((int) space == val_size && (size_t) val_size == val->size)
573                         move_bytes--;
574                 off = OFFSET(p) - move_bytes;
575                 memmove(cp + off, val_data, move_bytes);
576 @@ -249,7 +250,7 @@ __big_delete(hashp, bufp)
577         bufp->flags |= BUF_MOD;
578         if (rbufp)
579                 __free_ovflpage(hashp, rbufp);
580 -       if (last_bfp != rbufp)
581 +       if (last_bfp && last_bfp != rbufp)
582                 __free_ovflpage(hashp, last_bfp);
583  
584         hashp->NKEYS--;
585 @@ -431,7 +432,7 @@ __big_return(hashp, bufp, ndx, val, set_
586                 }
587  
588         val->size = collect_data(hashp, bufp, (int)len, set_current);
589 -       if (val->size == -1)
590 +       if (val->size == (size_t) -1)
591                 return (-1);
592         if (save_p->addr != save_addr) {
593                 /* We are pretty short on buffers. */
594 @@ -510,7 +511,7 @@ __big_keydata(hashp, bufp, key, val, set
595         int set;
596  {
597         key->size = collect_key(hashp, bufp, 0, val, set);
598 -       if (key->size == -1)
599 +       if (key->size == (size_t) -1)
600                 return (-1);
601         key->data = (u_char *)hashp->tmp_key;
602         return (0);
603 @@ -590,7 +591,7 @@ __big_split(hashp, op, np, big_keyp, add
604                 return (-1);
605         change = (__call_hash(hashp, key.data, key.size) != obucket);
606  
607 -       if (ret->next_addr = __find_last_page(hashp, &big_keyp)) {
608 +       if ((ret->next_addr = __find_last_page(hashp, &big_keyp))) {
609                 if (!(ret->nextp =
610                     __get_buf(hashp, ret->next_addr, big_keyp, 0)))
611                         return (-1);;
612 --- db.1.85/hash/hash_log2.c.jj Tue May 31 22:56:53 1994
613 +++ db.1.85/hash/hash_log2.c    Wed Apr 19 17:56:12 2000
614 @@ -42,8 +42,10 @@ static char sccsid[] = "@(#)hash_log2.c      
615  
616  #include <db.h>
617  
618 +u_int32_t __hash_log2 __P((u_int32_t));
619 +
620  u_int32_t
621 -__log2(num)
622 +__hash_log2(num)
623         u_int32_t num;
624  {
625         register u_int32_t i, limit;
626 --- db.1.85/hash/ndbm.c.jj      Thu Jul 21 20:02:40 1994
627 +++ db.1.85/hash/ndbm.c Wed Apr 19 17:56:12 2000
628 @@ -47,6 +47,7 @@ static char sccsid[] = "@(#)ndbm.c    8.4 (
629  
630  #include <stdio.h>
631  #include <string.h>
632 +#include <stdlib.h>
633  
634  #include <ndbm.h>
635  #include "hash.h"
636 @@ -61,8 +62,16 @@ dbm_open(file, flags, mode)
637         const char *file;
638         int flags, mode;
639  {
640 +       DBM *db;
641         HASHINFO info;
642 -       char path[MAXPATHLEN];
643 +       const size_t len = strlen(file) + sizeof (DBM_SUFFIX);
644 +#ifdef __GNUC__
645 +       char path[len];
646 +#else
647 +       char *path = malloc(len);
648 +       if (path == NULL)
649 +               return NULL;
650 +#endif
651  
652         info.bsize = 4096;
653         info.ffactor = 40;
654 @@ -72,7 +81,11 @@ dbm_open(file, flags, mode)
655         info.lorder = 0;
656         (void)strcpy(path, file);
657         (void)strcat(path, DBM_SUFFIX);
658 -       return ((DBM *)__hash_open(path, flags, mode, &info, 0));
659 +       db = (DBM *)__hash_open(path, flags, mode, &info, 0);
660 +#ifndef        __GNUC__
661 +       free(path);
662 +#endif
663 +       return db;
664  }
665  
666  extern void
667 @@ -180,7 +193,7 @@ dbm_error(db)
668         HTAB *hp;
669  
670         hp = (HTAB *)db->internal;
671 -       return (hp->errno);
672 +       return (hp->errnum);
673  }
674  
675  extern int
676 @@ -190,7 +203,7 @@ dbm_clearerr(db)
677         HTAB *hp;
678  
679         hp = (HTAB *)db->internal;
680 -       hp->errno = 0;
681 +       hp->errnum = 0;
682         return (0);
683  }
684  
685 --- db.1.85/recno/rec_close.c.jj        Thu Aug 18 17:23:29 1994
686 +++ db.1.85/recno/rec_close.c   Wed Apr 19 17:56:12 2000
687 @@ -79,13 +79,14 @@ __rec_close(dbp)
688         if (F_ISSET(t, R_MEMMAPPED) && munmap(t->bt_smap, t->bt_msize))
689                 status = RET_ERROR;
690  
691 -       if (!F_ISSET(t, R_INMEM))
692 +       if (!F_ISSET(t, R_INMEM)) {
693                 if (F_ISSET(t, R_CLOSEFP)) {
694                         if (fclose(t->bt_rfp))
695                                 status = RET_ERROR;
696                 } else
697                         if (close(t->bt_rfd))
698                                 status = RET_ERROR;
699 +       }
700  
701         if (__bt_close(dbp) == RET_ERROR)
702                 status = RET_ERROR;
703 @@ -150,7 +151,7 @@ __rec_sync(dbp, flags)
704                  */
705                 status = (dbp->seq)(dbp, &key, &data, R_FIRST);
706                 while (status == RET_SUCCESS) {
707 -                       if (write(t->bt_rfd, data.data, data.size) != data.size)
708 +                       if ((size_t) write(t->bt_rfd, data.data, data.size) != data.size)
709                                 return (RET_ERROR);
710                         status = (dbp->seq)(dbp, &key, &data, R_NEXT);
711                 }
712 @@ -162,7 +163,7 @@ __rec_sync(dbp, flags)
713                 while (status == RET_SUCCESS) {
714                         iov[0].iov_base = data.data;
715                         iov[0].iov_len = data.size;
716 -                       if (writev(t->bt_rfd, iov, 2) != data.size + 1)
717 +                       if ((size_t) writev(t->bt_rfd, iov, 2) != data.size + 1)
718                                 return (RET_ERROR);
719                         status = (dbp->seq)(dbp, &key, &data, R_NEXT);
720                 }
721 --- db.1.85/recno/rec_put.c.jj  Thu Aug 18 17:24:16 1994
722 +++ db.1.85/recno/rec_put.c     Wed Apr 19 17:56:12 2000
723 @@ -170,7 +170,7 @@ einval:             errno = EINVAL;
724  
725         if (flags == R_SETCURSOR)
726                 t->bt_cursor.rcursor = nrec;
727 -       
728 +
729         F_SET(t, R_MODIFIED);
730         return (__rec_ret(t, NULL, nrec, key, NULL));
731  }
732 @@ -256,7 +256,7 @@ __rec_iput(t, nrec, data, flags)
733          * the offset array, shift the pointers up.
734          */
735         nbytes = NRLEAFDBT(data->size);
736 -       if (h->upper - h->lower < nbytes + sizeof(indx_t)) {
737 +       if ((u_int32_t) (h->upper - h->lower) < nbytes + sizeof(indx_t)) {
738                 status = __bt_split(t, h, NULL, data, dflags, nbytes, index);
739                 if (status == RET_SUCCESS)
740                         ++t->bt_nrecs;
741 --- db.1.85/recno/rec_seq.c.jj  Thu Jul 14 03:35:40 1994
742 +++ db.1.85/recno/rec_seq.c     Wed Apr 19 17:56:12 2000
743 @@ -31,7 +31,7 @@
744   * SUCH DAMAGE.
745   */
746  
747 -#ifndef lint
748 +#if defined(LIBC_SCCS) && !defined(lint)
749  static char sccsid[] = "@(#)rec_seq.c  8.3 (Berkeley) 7/14/94";
750  #endif /* not lint */
751  
752 --- db.1.85/recno/rec_utils.c.jj        Sat Jul 16 16:55:08 1994
753 +++ db.1.85/recno/rec_utils.c   Wed Apr 19 17:56:12 2000
754 @@ -90,7 +90,7 @@ dataonly:
755                 return (RET_SUCCESS);
756  
757         /*
758 -        * We must copy big keys/data to make them contigous.  Otherwise,
759 +        * We must copy big keys/data to make them contiguous.  Otherwise,
760          * leave the page pinned and don't copy unless the user specified
761          * concurrent access.
762          */
763 --- db.1.85/mpool/mpool.c.jj    Tue Jul 26 21:19:35 1994
764 +++ db.1.85/mpool/mpool.c       Wed Apr 19 18:06:21 2000
765 @@ -50,6 +50,14 @@ static char sccsid[] = "@(#)mpool.c  8.5 
766  #define        __MPOOLINTERFACE_PRIVATE
767  #include <mpool.h>
768  
769 +#define mpool_open __mpool_open
770 +#define mpool_filter __mpool_filter
771 +#define mpool_new __mpool_new
772 +#define mpool_get __mpool_get
773 +#define mpool_put __mpool_put
774 +#define mpool_sync __mpool_sync
775 +#define mpool_close __mpool_close
776 +
777  static BKT *mpool_bkt __P((MPOOL *));
778  static BKT *mpool_look __P((MPOOL *, pgno_t));
779  static int  mpool_write __P((MPOOL *, BKT *));
780 @@ -109,7 +117,7 @@ mpool_filter(mp, pgin, pgout, pgcookie)
781         mp->pgout = pgout;
782         mp->pgcookie = pgcookie;
783  }
784 -       
785 +
786  /*
787   * mpool_new --
788   *     Get a new page of memory.
789 @@ -205,7 +213,8 @@ mpool_get(mp, pgno, flags)
790         off = mp->pagesize * pgno;
791         if (lseek(mp->fd, off, SEEK_SET) != off)
792                 return (NULL);
793 -       if ((nr = read(mp->fd, bp->page, mp->pagesize)) != mp->pagesize) {
794 +       if ((u_long) (nr = read(mp->fd, bp->page, mp->pagesize))
795 +           != mp->pagesize) {
796                 if (nr >= 0)
797                         errno = EFTYPE;
798                 return (NULL);
799 @@ -300,6 +309,23 @@ mpool_sync(mp)
800         return (fsync(mp->fd) ? RET_ERROR : RET_SUCCESS);
801  }
802  
803 +#undef mpool_open
804 +#undef mpool_filter
805 +#undef mpool_new
806 +#undef mpool_get
807 +#undef mpool_put
808 +#undef mpool_close
809 +#undef mpool_sync
810 +#define weak_alias(original, alias) \
811 +       asm (".weak " #alias "\n" #alias " = " #original);
812 +weak_alias (__mpool_open, mpool_open)
813 +weak_alias (__mpool_filter, mpool_filter)
814 +weak_alias (__mpool_new, mpool_new)
815 +weak_alias (__mpool_get, mpool_get)
816 +weak_alias (__mpool_put, mpool_put)
817 +weak_alias (__mpool_close, mpool_close)
818 +weak_alias (__mpool_sync, mpool_sync)
819 +
820  /*
821   * mpool_bkt
822   *     Get a page from the cache (or create one).
823 @@ -380,7 +406,7 @@ mpool_write(mp, bp)
824         off = mp->pagesize * bp->pgno;
825         if (lseek(mp->fd, off, SEEK_SET) != off)
826                 return (RET_ERROR);
827 -       if (write(mp->fd, bp->page, mp->pagesize) != mp->pagesize)
828 +       if ((u_long) write(mp->fd, bp->page, mp->pagesize) != mp->pagesize)
829                 return (RET_ERROR);
830  
831         bp->flags &= ~MPOOL_DIRTY;
832 @@ -436,7 +462,7 @@ mpool_stat(mp)
833             mp->pagealloc, mp->pageflush);
834         if (mp->cachehit + mp->cachemiss)
835                 (void)fprintf(stderr,
836 -                   "%.0f%% cache hit rate (%lu hits, %lu misses)\n", 
837 +                   "%.0f%% cache hit rate (%lu hits, %lu misses)\n",
838                     ((double)mp->cachehit / (mp->cachehit + mp->cachemiss))
839                     * 100, mp->cachehit, mp->cachemiss);
840         (void)fprintf(stderr, "%lu page reads, %lu page writes\n",
841 @@ -456,7 +482,7 @@ mpool_stat(mp)
842                         cnt = 0;
843                 } else
844                         sep = ", ";
845 -                       
846 +
847         }
848         (void)fprintf(stderr, "\n");
849  }
850 --- db.1.85/db/db.c.jj  Tue Feb 22 00:07:47 1994
851 +++ db.1.85/db/db.c     Wed Apr 19 18:06:46 2000
852 @@ -44,6 +44,8 @@ static char sccsid[] = "@(#)db.c      8.4 (Be
853  
854  #include <db.h>
855  
856 +#define dbopen __dbopen
857 +
858  DB *
859  dbopen(fname, flags, mode, type, openinfo)
860         const char *fname;
861 @@ -72,9 +74,13 @@ dbopen(fname, flags, mode, type, openinf
862         errno = EINVAL;
863         return (NULL);
864  }
865 +#undef dbopen
866 +#define weak_alias(original, alias) \
867 +        asm (".weak " #alias "\n" #alias " = " #original);
868 +weak_alias (__dbopen, dbopen)
869  
870  static int
871 -__dberr()
872 +__dberr __P((void))
873  {
874         return (RET_ERROR);
875  }
876 @@ -90,10 +96,14 @@ __dbpanic(dbp)
877         DB *dbp;
878  {
879         /* The only thing that can succeed is a close. */
880 -       dbp->del = (int (*)())__dberr;
881 -       dbp->fd = (int (*)())__dberr;
882 -       dbp->get = (int (*)())__dberr;
883 -       dbp->put = (int (*)())__dberr;
884 -       dbp->seq = (int (*)())__dberr;
885 -       dbp->sync = (int (*)())__dberr;
886 +       dbp->del = (int (*)__P((const struct __db *,
887 +                               const DBT *, u_int))) __dberr;
888 +       dbp->get = (int (*)__P((const struct __db *,
889 +                               const DBT *, DBT *, u_int))) __dberr;
890 +       dbp->put = (int (*)__P((const struct __db *,
891 +                               DBT *, const DBT *, u_int))) __dberr;
892 +       dbp->seq = (int (*)__P((const struct __db *,
893 +                               DBT *, DBT *, u_int))) __dberr;
894 +       dbp->sync = (int (*)__P((const struct __db *, u_int))) __dberr;
895 +       dbp->fd = (int (*)__P((const struct __db *))) __dberr;
896  }
897 --- db.1.85/PORT/include/ndbm.h.jj      Thu Jun  3 05:32:29 1993
898 +++ db.1.85/PORT/include/ndbm.h Wed Apr 19 17:56:12 2000
899 @@ -36,8 +36,8 @@
900   *     @(#)ndbm.h      8.1 (Berkeley) 6/2/93
901   */
902  
903 -#ifndef _NDBM_H_
904 -#define        _NDBM_H_
905 +#ifndef _NDBM_H
906 +#define        _NDBM_H 1
907  
908  #include <db.h>
909  
910 @@ -72,6 +72,8 @@ datum  dbm_nextkey __P((DBM *));
911  DBM    *dbm_open __P((const char *, int, int));
912  int     dbm_store __P((DBM *, datum, datum, int));
913  int     dbm_dirfno __P((DBM *));
914 +int     dbm_error __P((DBM *));
915 +int     dbm_clearerr __P((DBM *));
916  __END_DECLS
917  
918 -#endif /* !_NDBM_H_ */
919 +#endif /* ndbm.h */
920 --- db.1.85/PORT/linux/include/compat.h.jj      Tue Jun 21 00:13:19 1994
921 +++ db.1.85/PORT/linux/include/compat.h Wed Apr 19 17:56:12 2000
922 @@ -1,155 +1,9 @@
923 -/*-
924 - * Copyright (c) 1991, 1993
925 - *     The Regents of the University of California.  All rights reserved.
926 - *
927 - * Redistribution and use in source and binary forms, with or without
928 - * modification, are permitted provided that the following conditions
929 - * are met:
930 - * 1. Redistributions of source code must retain the above copyright
931 - *    notice, this list of conditions and the following disclaimer.
932 - * 2. Redistributions in binary form must reproduce the above copyright
933 - *    notice, this list of conditions and the following disclaimer in the
934 - *    documentation and/or other materials provided with the distribution.
935 - * 3. All advertising materials mentioning features or use of this software
936 - *    must display the following acknowledgement:
937 - *     This product includes software developed by the University of
938 - *     California, Berkeley and its contributors.
939 - * 4. Neither the name of the University nor the names of its contributors
940 - *    may be used to endorse or promote products derived from this software
941 - *    without specific prior written permission.
942 - *
943 - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
944 - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
945 - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
946 - * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
947 - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
948 - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
949 - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
950 - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
951 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
952 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
953 - * SUCH DAMAGE.
954 - *
955 - *     @(#)compat.h    8.13 (Berkeley) 2/21/94
956 - */
957 -
958 -#ifndef        _COMPAT_H_
959 -#define        _COMPAT_H_
960 +/* Values for building 4.4 BSD db routines in the GNU C library.  */
961  
962 -#include <sys/types.h>
963 +#ifndef _compat_h_
964 +#define _compat_h_
965  
966 -/*
967 - * If your system doesn't typedef u_long, u_short, or u_char, change
968 - * the 0 to a 1.
969 - */
970 -#if 0
971 -typedef unsigned char  u_char;         /* 4.[34]BSD names. */
972 -typedef unsigned int   u_int;
973 -typedef unsigned long  u_long;
974 -typedef unsigned short u_short;
975 -#endif
976 -
977 -/* If your system doesn't typedef size_t, change the 0 to a 1. */
978 -#if 0
979 -typedef unsigned int   size_t;         /* POSIX, 4.[34]BSD names. */
980 -#endif
981 -
982 -/* If your system doesn't typedef ssize_t, change the 0 to a 1. */
983 -#if 0
984 -typedef        int             ssize_t;        /* POSIX names. */
985 -#endif
986 -
987 -/*
988 - * If your system doesn't have the POSIX type for a signal mask,
989 - * change the 0 to a 1.
990 - */
991 -#if 0                                  /* POSIX 1003.1 signal mask type. */
992 -typedef unsigned int   sigset_t;
993 -#endif
994 -
995 -/*
996 - * If your system's vsprintf returns a char *, not an int,
997 - * change the 0 to a 1.
998 - */
999 -#if 0
1000 -#define        VSPRINTF_CHARSTAR
1001 -#endif
1002 -
1003 -/*
1004 - * If you don't have POSIX 1003.1 signals, the signal code surrounding the 
1005 - * temporary file creation is intended to block all of the possible signals
1006 - * long enough to create the file and unlink it.  All of this stuff is
1007 - * intended to use old-style BSD calls to fake POSIX 1003.1 calls.
1008 - */
1009 -#ifdef NO_POSIX_SIGNALS
1010 -#define        sigemptyset(set)        (*(set) = 0)
1011 -#define        sigfillset(set)         (*(set) = ~(sigset_t)0, 0)
1012 -#define        sigaddset(set,signo)    (*(set) |= sigmask(signo), 0)
1013 -#define        sigdelset(set,signo)    (*(set) &= ~sigmask(signo), 0)
1014 -#define        sigismember(set,signo)  ((*(set) & sigmask(signo)) != 0)
1015 -
1016 -#define        SIG_BLOCK       1
1017 -#define        SIG_UNBLOCK     2
1018 -#define        SIG_SETMASK     3
1019 -
1020 -static int __sigtemp;          /* For the use of sigprocmask */
1021 -
1022 -/* Repeated test of oset != NULL is to avoid "*0". */
1023 -#define        sigprocmask(how, set, oset)                                     \
1024 -       ((__sigtemp =                                                   \
1025 -       (((how) == SIG_BLOCK) ?                                         \
1026 -               sigblock(0) | *(set) :                                  \
1027 -       (((how) == SIG_UNBLOCK) ?                                       \
1028 -               sigblock(0) & ~(*(set)) :                               \
1029 -       ((how) == SIG_SETMASK ?                                         \
1030 -               *(set) : sigblock(0))))),                               \
1031 -       ((oset) ? (*(oset ? oset : set) = sigsetmask(__sigtemp)) :      \
1032 -               sigsetmask(__sigtemp)), 0)
1033 -#endif
1034 -
1035 -/*
1036 - * If your system doesn't have an include file with the appropriate
1037 - * byte order set, make sure you specify the correct one.
1038 - */
1039 -#ifndef BYTE_ORDER
1040 -#define        LITTLE_ENDIAN   1234            /* LSB first: i386, vax */
1041 -#define        BIG_ENDIAN      4321            /* MSB first: 68000, ibm, net */
1042 -#define        BYTE_ORDER      LITTLE_ENDIAN   /* Set for your system. */
1043 -#endif
1044 -
1045 -#if defined(SYSV) || defined(SYSTEM5)
1046 -#define        index(a, b)             strchr(a, b)
1047 -#define        rindex(a, b)            strrchr(a, b)
1048 -#define        bzero(a, b)             memset(a, 0, b)
1049 -#define        bcmp(a, b, n)           memcmp(a, b, n)
1050 -#define        bcopy(a, b, n)          memmove(b, a, n)
1051 -#endif
1052 -
1053 -#if defined(BSD) || defined(BSD4_3)
1054 -#define        strchr(a, b)            index(a, b)
1055 -#define        strrchr(a, b)           rindex(a, b)
1056 -#define        memcmp(a, b, n)         bcmp(a, b, n)
1057 -#define        memmove(a, b, n)        bcopy(b, a, n)
1058 -#endif
1059 -
1060 -/*
1061 - * 32-bit machine.  The db routines are theoretically independent of
1062 - * the size of u_shorts and u_longs, but I don't know that anyone has
1063 - * ever actually tried it.  At a minimum, change the following #define's
1064 - * if you are trying to compile on a different type of system.
1065 - */
1066 -#ifndef USHRT_MAX
1067 -#define        USHRT_MAX               0xFFFF
1068 -#define        ULONG_MAX               0xFFFFFFFF
1069 -#endif
1070 -
1071 -#ifndef O_ACCMODE                      /* POSIX 1003.1 access mode mask. */
1072 -#define        O_ACCMODE       (O_RDONLY|O_WRONLY|O_RDWR)
1073 -#endif
1074 -
1075 -#ifndef        _POSIX2_RE_DUP_MAX              /* POSIX 1003.2 RE limit. */
1076 -#define        _POSIX2_RE_DUP_MAX      255
1077 -#endif
1078 +#include <fcntl.h>
1079  
1080  /*
1081   * If you can't provide lock values in the open(2) call.  Note, this
1082 @@ -163,41 +17,26 @@ static int __sigtemp;              /* For the use of
1083  #define        O_SHLOCK        0
1084  #endif
1085  
1086 +#include <errno.h>
1087 +
1088  #ifndef EFTYPE
1089  #define        EFTYPE          EINVAL          /* POSIX 1003.1 format errno. */
1090  #endif
1091  
1092 -#ifndef        WCOREDUMP                       /* 4.4BSD extension */
1093 -#define        WCOREDUMP(a)    0
1094 -#endif
1095 -
1096 -#ifndef        STDERR_FILENO
1097 -#define        STDIN_FILENO    0               /* ANSI C #defines */
1098 -#define        STDOUT_FILENO   1
1099 -#define        STDERR_FILENO   2
1100 -#endif
1101 -
1102 -#ifndef SEEK_END
1103 -#define        SEEK_SET        0               /* POSIX 1003.1 seek values */
1104 -#define        SEEK_CUR        1
1105 -#define        SEEK_END        2
1106 -#endif
1107 +#include <unistd.h>
1108 +#include <limits.h>
1109  
1110  #ifndef _POSIX_VDISABLE                        /* POSIX 1003.1 disabling char. */
1111  #define        _POSIX_VDISABLE 0               /* Some systems used 0. */
1112  #endif
1113  
1114 +#include <termios.h>
1115 +
1116  #ifndef        TCSASOFT                        /* 4.4BSD extension. */
1117  #define        TCSASOFT        0
1118  #endif
1119  
1120 -#ifndef _POSIX2_RE_DUP_MAX             /* POSIX 1003.2 values. */
1121 -#define        _POSIX2_RE_DUP_MAX      255
1122 -#endif
1123 -
1124 -#ifndef NULL                           /* ANSI C #defines NULL everywhere. */
1125 -#define        NULL            0
1126 -#endif
1127 +#include <sys/param.h>
1128  
1129  #ifndef        MAX                             /* Usually found in <sys/param.h>. */
1130  #define        MAX(_a,_b)      ((_a)<(_b)?(_b):(_a))
1131 @@ -206,26 +45,5 @@ static int __sigtemp;               /* For the use of
1132  #define        MIN(_a,_b)      ((_a)<(_b)?(_a):(_b))
1133  #endif
1134  
1135 -/* Default file permissions. */
1136 -#ifndef DEFFILEMODE                    /* 4.4BSD extension. */
1137 -#define        DEFFILEMODE     (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH)
1138 -#endif
1139 -
1140 -#ifndef S_ISDIR                                /* POSIX 1003.1 file type tests. */
1141 -#define        S_ISDIR(m)      ((m & 0170000) == 0040000)      /* directory */
1142 -#define        S_ISCHR(m)      ((m & 0170000) == 0020000)      /* char special */
1143 -#define        S_ISBLK(m)      ((m & 0170000) == 0060000)      /* block special */
1144 -#define        S_ISREG(m)      ((m & 0170000) == 0100000)      /* regular file */
1145 -#define        S_ISFIFO(m)     ((m & 0170000) == 0010000)      /* fifo */
1146 -#endif
1147 -#ifndef S_ISLNK                                /* BSD POSIX 1003.1 extensions */
1148 -#define        S_ISLNK(m)      ((m & 0170000) == 0120000)      /* symbolic link */
1149 -#define        S_ISSOCK(m)     ((m & 0170000) == 0140000)      /* socket */
1150 -#endif
1151 -
1152 -/* The type of a va_list. */
1153 -#ifndef _BSD_VA_LIST_                  /* 4.4BSD #define. */
1154 -#define        _BSD_VA_LIST_   char *
1155 -#endif
1156  
1157 -#endif /* !_COMPAT_H_ */
1158 +#endif /* compat.h */
1159 --- db.1.85/PORT/linux/Makefile.jj      Thu Jul 14 03:43:16 1994
1160 +++ db.1.85/PORT/linux/Makefile Thu Apr 20 08:54:43 2000
1161 @@ -1,8 +1,16 @@
1162  #      @(#)Makefile    8.9 (Berkeley) 7/14/94
1163  
1164  LIBDB= libdb.a
1165 +ARCH=$(shell uname -m)
1166 +ifeq ($(ARCH),alpha)
1167 +SOVER=2.1
1168 +else
1169 +SOVER=2
1170 +endif
1171 +LIBDBSO=libdb.so.$(SOVER)
1172 +PROG=  db_dump185
1173  OBJ1=  hash.o hash_bigkey.o hash_buf.o hash_func.o hash_log2.o hash_page.o \
1174 -       hsearch.o ndbm.o
1175 +       ndbm.o
1176  OBJ2=  bt_close.o bt_conv.o bt_debug.o bt_delete.o bt_get.o bt_open.o \
1177         bt_overflow.o bt_page.o bt_put.o bt_search.o bt_seq.o bt_split.o \
1178         bt_utils.o
1179 @@ -10,93 +18,49 @@ OBJ3=       db.o
1180  OBJ4=  mpool.o
1181  OBJ5=  rec_close.o rec_delete.o rec_get.o rec_open.o rec_put.o rec_search.o \
1182         rec_seq.o rec_utils.o
1183 +MISC=
1184 +OBJS=  $(OBJ1) $(OBJ2) $(OBJ3) $(OBJ4) $(OBJ5) $(MISC)
1185 +SHOBJS=        $(patsubst %.o,%.os,$(OBJS))
1186  
1187 -MISC=  snprintf.o
1188 +all: $(LIBDB) $(LIBDBSO) $(PROG)
1189  
1190 -${LIBDB}: ${OBJ1} ${OBJ2} ${OBJ3} ${OBJ4} ${OBJ5} ${MISC}
1191 +$(LIBDB): $(OBJS)
1192         rm -f $@
1193 -       ar cq $@ \
1194 -           `lorder ${OBJ1} ${OBJ2} ${OBJ3} ${OBJ4} ${OBJ5} ${MISC} | tsort`
1195 +       ar cq $@ $(OBJS)
1196         ranlib $@
1197  
1198 -clean:
1199 -       rm -f ${LIBDB} ${OBJ1} ${OBJ2} ${OBJ3} ${OBJ4} ${OBJ5} ${MISC}
1200 +$(LIBDBSO): $(SHOBJS)
1201 +       $(CC) -Wl,-O1 -Wl,--version-script=libdb.map -Wl,-soname=$(LIBDBSO) -shared -o $@ $^
1202 +       ln -sf $@ libdb.so
1203  
1204 -OORG=  -O
1205 -CL=    ${CC} -c -D__DBINTERFACE_PRIVATE ${OORG} -I. -Iinclude
1206 +$(PROG): db_dump185.o $(LIBDBSO)
1207 +       $(CC) -o $@ db_dump185.o -L. -ldb
1208  
1209 -hash.o: ../../hash/hash.c
1210 -       ${CL} -I../../hash ../../hash/hash.c
1211 -hash_bigkey.o: ../../hash/hash_bigkey.c
1212 -       ${CL} -I../../hash ../../hash/hash_bigkey.c
1213 -hash_buf.o: ../../hash/hash_buf.c
1214 -       ${CL} -I../../hash ../../hash/hash_buf.c
1215 -hash_func.o: ../../hash/hash_func.c
1216 -       ${CL} -I../../hash ../../hash/hash_func.c
1217 -hash_log2.o: ../../hash/hash_log2.c
1218 -       ${CL} -I../../hash ../../hash/hash_log2.c
1219 -hash_page.o: ../../hash/hash_page.c
1220 -       ${CL} -I../../hash ../../hash/hash_page.c
1221 -hsearch.o: ../../hash/hsearch.c
1222 -       ${CL} -I../../hash ../../hash/hsearch.c
1223 -ndbm.o: ../../hash/ndbm.c
1224 -       ${CL} -I../../hash ../../hash/ndbm.c
1225 -
1226 -bt_close.o: ../../btree/bt_close.c
1227 -       ${CL} -I../../btree ../../btree/bt_close.c
1228 -bt_conv.o: ../../btree/bt_conv.c
1229 -       ${CL} -I../../btree ../../btree/bt_conv.c
1230 -bt_debug.o: ../../btree/bt_debug.c
1231 -       ${CL} -I../../btree ../../btree/bt_debug.c
1232 -bt_delete.o: ../../btree/bt_delete.c
1233 -       ${CL} -I../../btree ../../btree/bt_delete.c
1234 -bt_get.o: ../../btree/bt_get.c
1235 -       ${CL} -I../../btree ../../btree/bt_get.c
1236 -bt_open.o: ../../btree/bt_open.c
1237 -       ${CL} -I../../btree ../../btree/bt_open.c
1238 -bt_overflow.o: ../../btree/bt_overflow.c
1239 -       ${CL} -I../../btree ../../btree/bt_overflow.c
1240 -bt_page.o: ../../btree/bt_page.c
1241 -       ${CL} -I../../btree ../../btree/bt_page.c
1242 -bt_put.o: ../../btree/bt_put.c
1243 -       ${CL} -I../../btree ../../btree/bt_put.c
1244 -bt_search.o: ../../btree/bt_search.c
1245 -       ${CL} -I../../btree ../../btree/bt_search.c
1246 -bt_seq.o: ../../btree/bt_seq.c
1247 -       ${CL} -I../../btree ../../btree/bt_seq.c
1248 -bt_split.o: ../../btree/bt_split.c
1249 -       ${CL} -I../../btree ../../btree/bt_split.c
1250 -bt_stack.o: ../../btree/bt_stack.c
1251 -       ${CL} -I../../btree ../../btree/bt_stack.c
1252 -bt_utils.o: ../../btree/bt_utils.c
1253 -       ${CL} -I../../btree ../../btree/bt_utils.c
1254 +clean:
1255 +       rm -f $(LIBDB) $(LIBDBSO) $(OBJS) $(SHOBJS)
1256  
1257 -db.o: ../../db/db.c
1258 -       ${CL} ../../db/db.c
1259 +OORG=  -O2
1260 +CL=    $(CC) -c -D__DBINTERFACE_PRIVATE $(OORG) -I. -Iinclude
1261  
1262 +db_dump185.o: db_dump185.c
1263 +       $(CL) -o $@ $<
1264 +%.o: ../../hash/%.c
1265 +       $(CL) -I../../hash -o $@ $<
1266 +%.os: ../../hash/%.c
1267 +       $(CL) -I../../hash -fpic -o $@ $<
1268 +%.o: ../../btree/%.c
1269 +       $(CL) -I../../btree -o $@ $<
1270 +%.os: ../../btree/%.c
1271 +       $(CL) -I../../btree -fpic -o $@ $<
1272 +db.o: ../../db/db.c
1273 +       $(CL) -o $@ $<
1274 +db.os: ../../db/db.c
1275 +       $(CL) -fpic -o $@ $<
1276  mpool.o: ../../mpool/mpool.c
1277 -       ${CL} -I../../mpool ../../mpool/mpool.c
1278 -
1279 -rec_close.o: ../../recno/rec_close.c
1280 -       ${CL} -I../../recno ../../recno/rec_close.c
1281 -rec_delete.o: ../../recno/rec_delete.c
1282 -       ${CL} -I../../recno ../../recno/rec_delete.c
1283 -rec_get.o: ../../recno/rec_get.c
1284 -       ${CL} -I../../recno ../../recno/rec_get.c
1285 -rec_open.o: ../../recno/rec_open.c
1286 -       ${CL} -I../../recno ../../recno/rec_open.c
1287 -rec_put.o: ../../recno/rec_put.c
1288 -       ${CL} -I../../recno ../../recno/rec_put.c
1289 -rec_search.o: ../../recno/rec_search.c
1290 -       ${CL} -I../../recno ../../recno/rec_search.c
1291 -rec_seq.o: ../../recno/rec_seq.c
1292 -       ${CL} -I../../recno ../../recno/rec_seq.c
1293 -rec_utils.o: ../../recno/rec_utils.c
1294 -       ${CL} -I../../recno ../../recno/rec_utils.c
1295 -
1296 -memmove.o:
1297 -       ${CC} -DMEMMOVE -c -O -I. -Iinclude clib/memmove.c
1298 -mktemp.o:
1299 -       ${CC} -c -O -I. -Iinclude clib/mktemp.c
1300 -snprintf.o:
1301 -       ${CC} -c -O -I. -Iinclude clib/snprintf.c
1302 +       $(CL) -o $@ $<
1303 +mpool.os: ../../mpool/mpool.c
1304 +       $(CL) -fpic -o $@ $<
1305 +%.o: ../../recno/%.c
1306 +       $(CL) -I../../recno -o $@ $<
1307 +%.os: ../../recno/%.c
1308 +       $(CL) -I../../recno -fpic -o $@ $<
1309 --- db.1.85/PORT/linux/libdb.map.jj     Wed Apr 19 17:56:12 2000
1310 +++ db.1.85/PORT/linux/libdb.map        Wed Apr 19 17:56:12 2000
1311 @@ -0,0 +1,11 @@
1312 +GLIBC_2.0 {
1313 +  global:
1314 +    # the real DB entry point.
1315 +    dbopen; __dbopen;
1316 +
1317 +    # The compatibility functions.
1318 +    dbm_clearerr; dbm_close; dbm_delete; dbm_dirfno; dbm_error;
1319 +    dbm_fetch; dbm_firstkey; dbm_nextkey; dbm_open; dbm_store;
1320 +  local:
1321 +    *;
1322 +};
1323 --- db.1.85/PORT/linux/db_dump185.c.jj  Thu Apr 20 08:49:24 2000
1324 +++ db.1.85/PORT/linux/db_dump185.c     Thu Apr 20 08:50:25 2000
1325 @@ -0,0 +1,350 @@
1326 +/*-
1327 + * See the file LICENSE for redistribution information.
1328 + *
1329 + * Copyright (c) 1996, 1997, 1998
1330 + *     Sleepycat Software.  All rights reserved.
1331 + */
1332 +
1333 +#ifndef lint
1334 +static const char copyright[] =
1335 +"@(#) Copyright (c) 1996, 1997, 1998\n\
1336 +       Sleepycat Software Inc.  All rights reserved.\n";
1337 +static const char sccsid[] = "@(#)db_dump185.c 10.10 (Sleepycat) 4/10/98";
1338 +#endif
1339 +
1340 +#ifndef NO_SYSTEM_INCLUDES
1341 +#include <sys/types.h>
1342 +
1343 +#include <ctype.h>
1344 +#include <errno.h>
1345 +#include <fcntl.h>
1346 +#include <stdlib.h>
1347 +#include <stdio.h>
1348 +#include <string.h>
1349 +#include <unistd.h>
1350 +#endif
1351 +
1352 +#include "db.h"
1353 +
1354 +/* Hash Table Information */
1355 +typedef struct hashhdr185 {            /* Disk resident portion */
1356 +       int             magic;          /* Magic NO for hash tables */
1357 +       int             version;        /* Version ID */
1358 +       u_int32_t       lorder;         /* Byte Order */
1359 +       int             bsize;          /* Bucket/Page Size */
1360 +       int             bshift;         /* Bucket shift */
1361 +       int             dsize;          /* Directory Size */
1362 +       int             ssize;          /* Segment Size */
1363 +       int             sshift;         /* Segment shift */
1364 +       int             ovfl_point;     /* Where overflow pages are being
1365 +                                        * allocated */
1366 +       int             last_freed;     /* Last overflow page freed */
1367 +       int             max_bucket;     /* ID of Maximum bucket in use */
1368 +       int             high_mask;      /* Mask to modulo into entire table */
1369 +       int             low_mask;       /* Mask to modulo into lower half of
1370 +                                        * table */
1371 +       int             ffactor;        /* Fill factor */
1372 +       int             nkeys;          /* Number of keys in hash table */
1373 +} HASHHDR185;
1374 +typedef struct htab185  {              /* Memory resident data structure */
1375 +       HASHHDR185      hdr;            /* Header */
1376 +} HTAB185;
1377 +
1378 +/* Hash Table Information */
1379 +typedef struct hashhdr186 {    /* Disk resident portion */
1380 +       int32_t magic;          /* Magic NO for hash tables */
1381 +       int32_t version;        /* Version ID */
1382 +       int32_t lorder;         /* Byte Order */
1383 +       int32_t bsize;          /* Bucket/Page Size */
1384 +       int32_t bshift;         /* Bucket shift */
1385 +       int32_t ovfl_point;     /* Where overflow pages are being allocated */
1386 +       int32_t last_freed;     /* Last overflow page freed */
1387 +       int32_t max_bucket;     /* ID of Maximum bucket in use */
1388 +       int32_t high_mask;      /* Mask to modulo into entire table */
1389 +       int32_t low_mask;       /* Mask to modulo into lower half of table */
1390 +       int32_t ffactor;        /* Fill factor */
1391 +       int32_t nkeys;          /* Number of keys in hash table */
1392 +       int32_t hdrpages;       /* Size of table header */
1393 +       int32_t h_charkey;      /* value of hash(CHARKEY) */
1394 +#define NCACHED        32              /* number of bit maps and spare points */
1395 +       int32_t spares[NCACHED];/* spare pages for overflow */
1396 +       u_int16_t       bitmaps[NCACHED];       /* address of overflow page bitmaps */
1397 +} HASHHDR186;
1398 +typedef struct htab186  {              /* Memory resident data structure */
1399 +       HASHHDR186      hdr;            /* Header */
1400 +} HTAB186;
1401 +
1402 +typedef struct _epgno {
1403 +       u_int32_t pgno;                 /* the page number */
1404 +       u_int16_t index;                /* the index on the page */
1405 +} EPGNO;
1406 +
1407 +typedef struct _epg {
1408 +       void    *page;                  /* the (pinned) page */
1409 +       u_int16_t index;                /* the index on the page */
1410 +} EPG;
1411 +
1412 +typedef struct _cursor {
1413 +       EPGNO    pg;                    /* B: Saved tree reference. */
1414 +       DBT      key;                   /* B: Saved key, or key.data == NULL. */
1415 +       u_int32_t rcursor;              /* R: recno cursor (1-based) */
1416 +
1417 +#define        CURS_ACQUIRE    0x01            /*  B: Cursor needs to be reacquired. */
1418 +#define        CURS_AFTER      0x02            /*  B: Unreturned cursor after key. */
1419 +#define        CURS_BEFORE     0x04            /*  B: Unreturned cursor before key. */
1420 +#define        CURS_INIT       0x08            /* RB: Cursor initialized. */
1421 +       u_int8_t flags;
1422 +} CURSOR;
1423 +
1424 +/* The in-memory btree/recno data structure. */
1425 +typedef struct _btree {
1426 +       void     *bt_mp;                /* memory pool cookie */
1427 +
1428 +       void     *bt_dbp;               /* pointer to enclosing DB */
1429 +
1430 +       EPG       bt_cur;               /* current (pinned) page */
1431 +       void     *bt_pinned;            /* page pinned across calls */
1432 +
1433 +       CURSOR    bt_cursor;            /* cursor */
1434 +
1435 +       EPGNO     bt_stack[50];         /* stack of parent pages */
1436 +       EPGNO    *bt_sp;                /* current stack pointer */
1437 +
1438 +       DBT       bt_rkey;              /* returned key */
1439 +       DBT       bt_rdata;             /* returned data */
1440 +
1441 +       int       bt_fd;                /* tree file descriptor */
1442 +
1443 +       u_int32_t bt_free;              /* next free page */
1444 +       u_int32_t bt_psize;             /* page size */
1445 +       u_int16_t bt_ovflsize;          /* cut-off for key/data overflow */
1446 +       int       bt_lorder;            /* byte order */
1447 +                                       /* sorted order */
1448 +       enum { NOT, BACK, FORWARD } bt_order;
1449 +       EPGNO     bt_last;              /* last insert */
1450 +
1451 +                                       /* B: key comparison function */
1452 +       int     (*bt_cmp) __P((const DBT *, const DBT *));
1453 +                                       /* B: prefix comparison function */
1454 +       size_t  (*bt_pfx) __P((const DBT *, const DBT *));
1455 +                                       /* R: recno input function */
1456 +       int     (*bt_irec) __P((struct _btree *, u_int32_t));
1457 +
1458 +       FILE     *bt_rfp;               /* R: record FILE pointer */
1459 +       int       bt_rfd;               /* R: record file descriptor */
1460 +
1461 +       void     *bt_cmap;              /* R: current point in mapped space */
1462 +       void     *bt_smap;              /* R: start of mapped space */
1463 +       void     *bt_emap;              /* R: end of mapped space */
1464 +       size_t    bt_msize;             /* R: size of mapped region. */
1465 +
1466 +       u_int32_t bt_nrecs;             /* R: number of records */
1467 +       size_t    bt_reclen;            /* R: fixed record length */
1468 +       u_char    bt_bval;              /* R: delimiting byte/pad character */
1469 +
1470 +/*
1471 + * NB:
1472 + * B_NODUPS and R_RECNO are stored on disk, and may not be changed.
1473 + */
1474 +#define        B_INMEM         0x00001         /* in-memory tree */
1475 +#define        B_METADIRTY     0x00002         /* need to write metadata */
1476 +#define        B_MODIFIED      0x00004         /* tree modified */
1477 +#define        B_NEEDSWAP      0x00008         /* if byte order requires swapping */
1478 +#define        B_RDONLY        0x00010         /* read-only tree */
1479 +
1480 +#define        B_NODUPS        0x00020         /* no duplicate keys permitted */
1481 +#define        R_RECNO         0x00080         /* record oriented tree */
1482 +
1483 +#define        R_CLOSEFP       0x00040         /* opened a file pointer */
1484 +#define        R_EOF           0x00100         /* end of input file reached. */
1485 +#define        R_FIXLEN        0x00200         /* fixed length records */
1486 +#define        R_MEMMAPPED     0x00400         /* memory mapped file. */
1487 +#define        R_INMEM         0x00800         /* in-memory file */
1488 +#define        R_MODIFIED      0x01000         /* modified file */
1489 +#define        R_RDONLY        0x02000         /* read-only file */
1490 +
1491 +#define        B_DB_LOCK       0x04000         /* DB_LOCK specified. */
1492 +#define        B_DB_SHMEM      0x08000         /* DB_SHMEM specified. */
1493 +#define        B_DB_TXN        0x10000         /* DB_TXN specified. */
1494 +       u_int32_t flags;
1495 +} BTREE;
1496 +
1497 +void   db_btree __P((DB *, int));
1498 +void   db_hash __P((DB *, int));
1499 +void   dbt_dump __P((DBT *));
1500 +void   dbt_print __P((DBT *));
1501 +int    main __P((int, char *[]));
1502 +void   usage __P((void));
1503 +
1504 +const char
1505 +       *progname = "db_dump185";                       /* Program name. */
1506 +
1507 +int
1508 +main(argc, argv)
1509 +       int argc;
1510 +       char *argv[];
1511 +{
1512 +       extern char *optarg;
1513 +       extern int optind;
1514 +       DB *dbp;
1515 +       DBT key, data;
1516 +       int ch, pflag, rval;
1517 +
1518 +       pflag = 0;
1519 +       while ((ch = getopt(argc, argv, "f:p")) != EOF)
1520 +               switch (ch) {
1521 +               case 'f':
1522 +                       if (freopen(optarg, "w", stdout) == NULL)
1523 +                               err(1, "%s", optarg);
1524 +                       break;
1525 +               case 'p':
1526 +                       pflag = 1;
1527 +                       break;
1528 +               case '?':
1529 +               default:
1530 +                       usage();
1531 +               }
1532 +       argc -= optind;
1533 +       argv += optind;
1534 +
1535 +       if (argc != 1)
1536 +               usage();
1537 +
1538 +       if ((dbp = dbopen(argv[0], O_RDONLY, 0, DB_BTREE, NULL)) == NULL) {
1539 +               if ((dbp = dbopen(argv[0], O_RDONLY, 0, DB_HASH, NULL)) == NULL)
1540 +                       err(1, "%s", argv[0]);
1541 +               db_hash(dbp, pflag);
1542 +       } else
1543 +               db_btree(dbp, pflag);
1544 +
1545 +       /*
1546 +        * !!!
1547 +        * DB 1.85 DBTs are a subset of DB 2.0 DBTs, so we just use the
1548 +        * new dump/print routines.
1549 +        */
1550 +       if (pflag)
1551 +               while (!(rval = dbp->seq(dbp, &key, &data, R_NEXT))) {
1552 +                       dbt_print(&key);
1553 +                       dbt_print(&data);
1554 +               }
1555 +       else
1556 +               while (!(rval = dbp->seq(dbp, &key, &data, R_NEXT))) {
1557 +                       dbt_dump(&key);
1558 +                       dbt_dump(&data);
1559 +               }
1560 +
1561 +       if (rval == -1)
1562 +               err(1, "seq");
1563 +       return (0);
1564 +}
1565 +
1566 +/*
1567 + * db_hash --
1568 + *     Dump out hash header information.
1569 + */
1570 +void
1571 +db_hash(dbp, pflag)
1572 +       DB *dbp;
1573 +       int pflag;
1574 +{
1575 +       HTAB185 *hash185p;
1576 +       HTAB186 *hash186p;
1577 +
1578 +       printf("format=%s\n", pflag ? "print" : "bytevalue");
1579 +       printf("type=hash\n");
1580 +
1581 +       /* DB 1.85 was version 2, DB 1.86 was version 3. */
1582 +       hash185p = dbp->internal;
1583 +       if (hash185p->hdr.version > 2) {
1584 +               hash186p = dbp->internal;
1585 +               printf("h_ffactor=%lu\n", (u_long)hash186p->hdr.ffactor);
1586 +               if (hash186p->hdr.lorder != 0)
1587 +                       printf("db_lorder=%lu\n", (u_long)hash186p->hdr.lorder);
1588 +               printf("db_pagesize=%lu\n", (u_long)hash186p->hdr.bsize);
1589 +       } else {
1590 +               printf("h_ffactor=%lu\n", (u_long)hash185p->hdr.ffactor);
1591 +               if (hash185p->hdr.lorder != 0)
1592 +                       printf("db_lorder=%lu\n", (u_long)hash185p->hdr.lorder);
1593 +               printf("db_pagesize=%lu\n", (u_long)hash185p->hdr.bsize);
1594 +       }
1595 +       printf("HEADER=END\n");
1596 +}
1597 +
1598 +/*
1599 + * db_btree --
1600 + *     Dump out btree header information.
1601 + */
1602 +void
1603 +db_btree(dbp, pflag)
1604 +       DB *dbp;
1605 +       int pflag;
1606 +{
1607 +       BTREE *btp;
1608 +
1609 +       btp = dbp->internal;
1610 +
1611 +       printf("format=%s\n", pflag ? "print" : "bytevalue");
1612 +       printf("type=btree\n");
1613 +#ifdef NOT_AVAILABLE_IN_185
1614 +       printf("bt_minkey=%lu\n", (u_long)XXX);
1615 +       printf("bt_maxkey=%lu\n", (u_long)XXX);
1616 +#endif
1617 +       if (btp->bt_lorder != 0)
1618 +               printf("db_lorder=%lu\n", (u_long)btp->bt_lorder);
1619 +       printf("db_pagesize=%lu\n", (u_long)btp->bt_psize);
1620 +       if (!(btp->flags & B_NODUPS))
1621 +               printf("duplicates=1\n");
1622 +       printf("HEADER=END\n");
1623 +}
1624 +
1625 +static char hex[] = "0123456789abcdef";
1626 +
1627 +/*
1628 + * dbt_dump --
1629 + *     Write out a key or data item using byte values.
1630 + */
1631 +void
1632 +dbt_dump(dbtp)
1633 +       DBT *dbtp;
1634 +{
1635 +       size_t len;
1636 +       u_int8_t *p;
1637 +
1638 +       for (len = dbtp->size, p = dbtp->data; len--; ++p)
1639 +               (void)printf("%c%c",
1640 +                   hex[(*p & 0xf0) >> 4], hex[*p & 0x0f]);
1641 +       printf("\n");
1642 +}
1643 +
1644 +/*
1645 + * dbt_print --
1646 + *     Write out a key or data item using printable characters.
1647 + */
1648 +void
1649 +dbt_print(dbtp)
1650 +       DBT *dbtp;
1651 +{
1652 +       size_t len;
1653 +       u_int8_t *p;
1654 +
1655 +       for (len = dbtp->size, p = dbtp->data; len--; ++p)
1656 +               if (isprint(*p)) {
1657 +                       if (*p == '\\')
1658 +                               (void)printf("\\");
1659 +                       (void)printf("%c", *p);
1660 +               } else
1661 +                       (void)printf("\\%c%c",
1662 +                           hex[(*p & 0xf0) >> 4], hex[*p & 0x0f]);
1663 +       printf("\n");
1664 +}
1665 +
1666 +/*
1667 + * usage --
1668 + *     Display the usage message.
1669 + */
1670 +void
1671 +usage()
1672 +{
1673 +       (void)fprintf(stderr, "usage: db_dump185 [-p] [-f file] db_file\n");
1674 +       exit(1);
1675 +}
1676 --- db.1.85/include/mpool.h.jj  Thu Jul 14 03:33:26 1994
1677 +++ db.1.85/include/mpool.h     Wed Apr 19 17:56:12 2000
1678 @@ -33,6 +33,9 @@
1679   *     @(#)mpool.h     8.2 (Berkeley) 7/14/94
1680   */
1681  
1682 +#ifndef _MPOOL_H
1683 +#define _MPOOL_H 1
1684 +
1685  #include <sys/queue.h>
1686  
1687  /*
1688 @@ -67,9 +70,9 @@ typedef struct MPOOL {
1689         u_long  pagesize;               /* file page size */
1690         int     fd;                     /* file descriptor */
1691                                         /* page in conversion routine */
1692 -       void    (*pgin) __P((void *, pgno_t, void *));
1693 +       void    (*pgin) __PMT((void *, pgno_t, void *));
1694                                         /* page out conversion routine */
1695 -       void    (*pgout) __P((void *, pgno_t, void *));
1696 +       void    (*pgout) __PMT((void *, pgno_t, void *));
1697         void    *pgcookie;              /* cookie for page in/out routines */
1698  #ifdef STATISTICS
1699         u_long  cachehit;
1700 @@ -85,15 +88,25 @@ typedef struct MPOOL {
1701  } MPOOL;
1702  
1703  __BEGIN_DECLS
1704 +MPOOL  *__mpool_open __P((void *, int, pgno_t, pgno_t));
1705  MPOOL  *mpool_open __P((void *, int, pgno_t, pgno_t));
1706 +void    __mpool_filter __P((MPOOL *, void (*)(void *, pgno_t, void *),
1707 +           void (*)(void *, pgno_t, void *), void *));
1708  void    mpool_filter __P((MPOOL *, void (*)(void *, pgno_t, void *),
1709             void (*)(void *, pgno_t, void *), void *));
1710 +void   *__mpool_new __P((MPOOL *, pgno_t *));
1711  void   *mpool_new __P((MPOOL *, pgno_t *));
1712 +void   *__mpool_get __P((MPOOL *, pgno_t, u_int));
1713  void   *mpool_get __P((MPOOL *, pgno_t, u_int));
1714 +int     __mpool_put __P((MPOOL *, void *, u_int));
1715  int     mpool_put __P((MPOOL *, void *, u_int));
1716 +int     __mpool_sync __P((MPOOL *));
1717  int     mpool_sync __P((MPOOL *));
1718 +int     __mpool_close __P((MPOOL *));
1719  int     mpool_close __P((MPOOL *));
1720  #ifdef STATISTICS
1721  void    mpool_stat __P((MPOOL *));
1722  #endif
1723  __END_DECLS
1724 +
1725 +#endif /* mpool.h */
1726 --- db.1.85/include/db.h.jj     Tue Jun 21 21:59:28 1994
1727 +++ db.1.85/include/db.h        Wed Apr 19 17:56:12 2000
1728 @@ -33,8 +33,8 @@
1729   *     @(#)db.h        8.7 (Berkeley) 6/16/94
1730   */
1731  
1732 -#ifndef _DB_H_
1733 -#define        _DB_H_
1734 +#ifndef _DB_H
1735 +#define        _DB_H 1
1736  
1737  #include <sys/types.h>
1738  #include <sys/cdefs.h>
1739 @@ -117,14 +117,14 @@ typedef enum { DB_BTREE, DB_HASH, DB_REC
1740  /* Access method description structure. */
1741  typedef struct __db {
1742         DBTYPE type;                    /* Underlying db type. */
1743 -       int (*close)    __P((struct __db *));
1744 -       int (*del)      __P((const struct __db *, const DBT *, u_int));
1745 -       int (*get)      __P((const struct __db *, const DBT *, DBT *, u_int));
1746 -       int (*put)      __P((const struct __db *, DBT *, const DBT *, u_int));
1747 -       int (*seq)      __P((const struct __db *, DBT *, DBT *, u_int));
1748 -       int (*sync)     __P((const struct __db *, u_int));
1749 +       int (*close)    __PMT((struct __db *));
1750 +       int (*del)      __PMT((const struct __db *, const DBT *, u_int));
1751 +       int (*get)      __PMT((const struct __db *, const DBT *, DBT *, u_int));
1752 +       int (*put)      __PMT((const struct __db *, DBT *, const DBT *, u_int));
1753 +       int (*seq)      __PMT((const struct __db *, DBT *, DBT *, u_int));
1754 +       int (*sync)     __PMT((const struct __db *, u_int));
1755         void *internal;                 /* Access method private. */
1756 -       int (*fd)       __P((const struct __db *));
1757 +       int (*fd)       __PMT((const struct __db *));
1758  } DB;
1759  
1760  #define        BTREEMAGIC      0x053162
1761 @@ -139,9 +139,9 @@ typedef struct {
1762         int     minkeypage;     /* minimum keys per page */
1763         u_int   psize;          /* page size */
1764         int     (*compare)      /* comparison function */
1765 -           __P((const DBT *, const DBT *));
1766 +           __PMT((const DBT *, const DBT *));
1767         size_t  (*prefix)       /* prefix function */
1768 -           __P((const DBT *, const DBT *));
1769 +           __PMT((const DBT *, const DBT *));
1770         int     lorder;         /* byte order */
1771  } BTREEINFO;
1772  
1773 @@ -155,7 +155,7 @@ typedef struct {
1774         u_int   nelem;          /* number of elements */
1775         u_int   cachesize;      /* bytes to cache */
1776         u_int32_t               /* hash function */
1777 -               (*hash) __P((const void *, size_t));
1778 +               (*hash) __PMT((const void *, size_t));
1779         int     lorder;         /* byte order */
1780  } HASHINFO;
1781  
1782 @@ -224,6 +224,7 @@ typedef struct {
1783  #endif
1784  
1785  __BEGIN_DECLS
1786 +DB *__dbopen __P((const char *, int, int, DBTYPE, const void *));
1787  DB *dbopen __P((const char *, int, int, DBTYPE, const void *));
1788  
1789  #ifdef __DBINTERFACE_PRIVATE
1790 @@ -233,4 +234,5 @@ DB  *__rec_open __P((const char *, int, i
1791  void    __dbpanic __P((DB *dbp));
1792  #endif
1793  __END_DECLS
1794 -#endif /* !_DB_H_ */
1795 +
1796 +#endif /* db.h */
This page took 0.357997 seconds and 3 git commands to generate.