Sat Oct 5 18:07:58 2019 UTC ()
__dberr: tweak signature to make gcc8 -Wbad-function-cast happy about
casts in __dbpanic.  Admittedly this is a bit too "cute".


(uwe)
diff -r1.19 -r1.20 src/lib/libc/db/db/db.c

cvs diff -r1.19 -r1.20 src/lib/libc/db/db/db.c (switch to unified diff)

--- src/lib/libc/db/db/db.c 2019/10/05 18:01:52 1.19
+++ src/lib/libc/db/db/db.c 2019/10/05 18:07:58 1.20
@@ -1,106 +1,106 @@ @@ -1,106 +1,106 @@
1/* $NetBSD: db.c,v 1.19 2019/10/05 18:01:52 uwe Exp $ */ 1/* $NetBSD: db.c,v 1.20 2019/10/05 18:07:58 uwe Exp $ */
2 2
3/*- 3/*-
4 * Copyright (c) 1991, 1993 4 * Copyright (c) 1991, 1993
5 * The Regents of the University of California. All rights reserved. 5 * The Regents of the University of California. All rights reserved.
6 * 6 *
7 * Redistribution and use in source and binary forms, with or without 7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions 8 * modification, are permitted provided that the following conditions
9 * are met: 9 * are met:
10 * 1. Redistributions of source code must retain the above copyright 10 * 1. Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer. 11 * notice, this list of conditions and the following disclaimer.
12 * 2. Redistributions in binary form must reproduce the above copyright 12 * 2. Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in the 13 * notice, this list of conditions and the following disclaimer in the
14 * documentation and/or other materials provided with the distribution. 14 * documentation and/or other materials provided with the distribution.
15 * 3. Neither the name of the University nor the names of its contributors 15 * 3. Neither the name of the University nor the names of its contributors
16 * may be used to endorse or promote products derived from this software 16 * may be used to endorse or promote products derived from this software
17 * without specific prior written permission. 17 * without specific prior written permission.
18 * 18 *
19 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 19 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
20 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 20 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 21 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 22 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
23 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 24 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
25 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 25 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
26 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 26 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
27 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 27 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
28 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 28 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
29 * SUCH DAMAGE. 29 * SUCH DAMAGE.
30 */ 30 */
31 31
32#if HAVE_NBTOOL_CONFIG_H 32#if HAVE_NBTOOL_CONFIG_H
33#include "nbtool_config.h" 33#include "nbtool_config.h"
34#endif 34#endif
35 35
36#include <sys/cdefs.h> 36#include <sys/cdefs.h>
37__RCSID("$NetBSD: db.c,v 1.19 2019/10/05 18:01:52 uwe Exp $"); 37__RCSID("$NetBSD: db.c,v 1.20 2019/10/05 18:07:58 uwe Exp $");
38 38
39#include "namespace.h" 39#include "namespace.h"
40#include <sys/types.h> 40#include <sys/types.h>
41 41
42#include <errno.h> 42#include <errno.h>
43#include <fcntl.h> 43#include <fcntl.h>
44#include <stddef.h> 44#include <stddef.h>
45#include <stdio.h> 45#include <stdio.h>
46 46
47#include <db.h> 47#include <db.h>
48static int __dberr(void); 48static int __dberr(const DB *, ...);
49 49
50#ifdef __weak_alias 50#ifdef __weak_alias
51__weak_alias(dbopen,_dbopen) 51__weak_alias(dbopen,_dbopen)
52#endif 52#endif
53 53
54#ifndef O_CLOEXEC 54#ifndef O_CLOEXEC
55#define O_CLOEXEC 0 55#define O_CLOEXEC 0
56#endif 56#endif
57 57
58DB * 58DB *
59dbopen(const char *fname, int flags, mode_t mode, DBTYPE type, 59dbopen(const char *fname, int flags, mode_t mode, DBTYPE type,
60 const void *openinfo) 60 const void *openinfo)
61{ 61{
62 62
63#define DB_FLAGS (DB_LOCK | DB_SHMEM | DB_TXN) 63#define DB_FLAGS (DB_LOCK | DB_SHMEM | DB_TXN)
64#define USE_OPEN_FLAGS \ 64#define USE_OPEN_FLAGS \
65 (O_CREAT | O_EXCL | O_EXLOCK | O_NONBLOCK | O_RDONLY | \ 65 (O_CREAT | O_EXCL | O_EXLOCK | O_NONBLOCK | O_RDONLY | \
66 O_RDWR | O_SHLOCK | O_TRUNC | O_CLOEXEC) 66 O_RDWR | O_SHLOCK | O_TRUNC | O_CLOEXEC)
67 67
68 if ((flags & ~(USE_OPEN_FLAGS | DB_FLAGS)) == 0) 68 if ((flags & ~(USE_OPEN_FLAGS | DB_FLAGS)) == 0)
69 switch (type) { 69 switch (type) {
70 case DB_BTREE: 70 case DB_BTREE:
71 return (__bt_open(fname, flags & USE_OPEN_FLAGS, 71 return (__bt_open(fname, flags & USE_OPEN_FLAGS,
72 mode, openinfo, (int)(flags & DB_FLAGS))); 72 mode, openinfo, (int)(flags & DB_FLAGS)));
73 case DB_HASH: 73 case DB_HASH:
74 return (__hash_open(fname, flags & USE_OPEN_FLAGS, 74 return (__hash_open(fname, flags & USE_OPEN_FLAGS,
75 mode, openinfo, (int)(flags & DB_FLAGS))); 75 mode, openinfo, (int)(flags & DB_FLAGS)));
76 case DB_RECNO: 76 case DB_RECNO:
77 return (__rec_open(fname, flags & USE_OPEN_FLAGS, 77 return (__rec_open(fname, flags & USE_OPEN_FLAGS,
78 mode, openinfo, (int)(flags & DB_FLAGS))); 78 mode, openinfo, (int)(flags & DB_FLAGS)));
79 } 79 }
80 errno = EINVAL; 80 errno = EINVAL;
81 return (NULL); 81 return (NULL);
82} 82}
83 83
84static int 84static int
85__dberr(void) 85__dberr(const DB *dbp, ...)
86{ 86{
87 return (RET_ERROR); 87 return (RET_ERROR);
88} 88}
89 89
90/* 90/*
91 * __DBPANIC -- Stop. 91 * __DBPANIC -- Stop.
92 * 92 *
93 * Parameters: 93 * Parameters:
94 * dbp: pointer to the DB structure. 94 * dbp: pointer to the DB structure.
95 */ 95 */
96void 96void
97__dbpanic(DB *dbp) 97__dbpanic(DB *dbp)
98{ 98{
99 /* The only thing that can succeed is a close. */ 99 /* The only thing that can succeed is a close. */
100 dbp->del = (int (*)(const DB *, const DBT *, u_int))__dberr; 100 dbp->del = (int (*)(const DB *, const DBT *, u_int))__dberr;
101 dbp->fd = (int (*)(const DB *))__dberr; 101 dbp->fd = (int (*)(const DB *))__dberr;
102 dbp->get = (int (*)(const DB *, const DBT *, DBT *, u_int))__dberr; 102 dbp->get = (int (*)(const DB *, const DBT *, DBT *, u_int))__dberr;
103 dbp->put = (int (*)(const DB *, DBT *, const DBT *, u_int))__dberr; 103 dbp->put = (int (*)(const DB *, DBT *, const DBT *, u_int))__dberr;
104 dbp->seq = (int (*)(const DB *, DBT *, DBT *, u_int))__dberr; 104 dbp->seq = (int (*)(const DB *, DBT *, DBT *, u_int))__dberr;
105 dbp->sync = (int (*)(const DB *, u_int))__dberr; 105 dbp->sync = (int (*)(const DB *, u_int))__dberr;
106} 106}