Add GNU LGPL headers to all .c .C and .h files
[oweals/cde.git] / cde / programs / dtinfo / DtMmdb / btree_berkeley / db.c
1 /*
2  * CDE - Common Desktop Environment
3  *
4  * Copyright (c) 1993-2012, The Open Group. All rights reserved.
5  *
6  * These libraries and programs are free software; you can
7  * redistribute them and/or modify them under the terms of the GNU
8  * Lesser General Public License as published by the Free Software
9  * Foundation; either version 2 of the License, or (at your option)
10  * any later version.
11  *
12  * These libraries and programs are distributed in the hope that
13  * they will be useful, but WITHOUT ANY WARRANTY; without even the
14  * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15  * PURPOSE. See the GNU Lesser General Public License for more
16  * details.
17  *
18  * You should have received a copy of the GNU Lesser General Public
19  * License along with these librararies and programs; if not, write
20  * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
21  * Floor, Boston, MA 02110-1301 USA
22  */
23 /* $XConsortium: db.c /main/3 1996/06/11 17:13:41 cde-hal $ */
24 /*-
25  * Copyright (c) 1991, 1993
26  *      The Regents of the University of California.  All rights reserved.
27  *
28  * Redistribution and use in source and binary forms, with or without
29  * modification, are permitted provided that the following conditions
30  * are met:
31  * 1. Redistributions of source code must retain the above copyright
32  *    notice, this list of conditions and the following disclaimer.
33  * 2. Redistributions in binary form must reproduce the above copyright
34  *    notice, this list of conditions and the following disclaimer in the
35  *    documentation and/or other materials provided with the distribution.
36  * 3. All advertising materials mentioning features or use of this software
37  *    must display the following acknowledgement:
38  *      This product includes software developed by the University of
39  *      California, Berkeley and its contributors.
40  * 4. Neither the name of the University nor the names of its contributors
41  *    may be used to endorse or promote products derived from this software
42  *    without specific prior written permission.
43  *
44  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
45  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
46  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
47  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
48  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
49  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
50  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
51  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
52  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
53  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
54  * SUCH DAMAGE.
55  */
56
57 #if defined(LIBC_SCCS) && !defined(lint)
58 static char sccsid[] = "@(#)db.c        8.2 (Berkeley) 9/7/93";
59 #endif /* LIBC_SCCS and not lint */
60
61 #include <sys/types.h>
62
63 #include <errno.h>
64 #include <fcntl.h>
65 #include <stddef.h>
66 #include <stdio.h>
67
68 #define __DBINTERFACE_PRIVATE
69 #include <db.h>
70
71 DB *
72 dbopen(fname, flags, mode, type, openinfo)
73         const char *fname;
74         int flags, mode;
75         DBTYPE type;
76         const void *openinfo;
77 {
78
79 #define DB_FLAGS        (DB_LOCK | DB_SHMEM | DB_TXN)
80 #define USE_OPEN_FLAGS                                                  \
81         (O_CREAT | O_EXCL | O_EXLOCK | O_RDONLY | O_RDWR |              \
82             O_SHLOCK | O_TRUNC)
83
84         if ((flags & ~(USE_OPEN_FLAGS | DB_FLAGS)) == 0)
85                 switch (type) {
86                 case DB_BTREE:
87                         return (__bt_open(fname, flags & USE_OPEN_FLAGS,
88                             mode, openinfo, flags & DB_FLAGS));
89 /*
90                 case DB_HASH:
91                         return (__hash_open(fname, flags & USE_OPEN_FLAGS,
92                             mode, openinfo, flags & DB_FLAGS));
93                 case DB_RECNO:
94                         return (__rec_open(fname, flags & USE_OPEN_FLAGS,
95                             mode, openinfo, flags & DB_FLAGS));
96 */
97                 }
98         errno = EINVAL;
99         return (NULL);
100 }
101
102 static int
103 __dberr()
104 {
105         return (RET_ERROR);
106 }
107
108 /*
109  * __DBPANIC -- Stop.
110  *
111  * Parameters:
112  *      dbp:    pointer to the DB structure.
113  */
114 void
115 __dbpanic(dbp)
116         DB *dbp;
117 {
118         /* The only thing that can succeed is a close. */
119         dbp->del = (int (*)())__dberr;
120         dbp->fd = (int (*)())__dberr;
121         dbp->get = (int (*)())__dberr;
122         dbp->put = (int (*)())__dberr;
123         dbp->seq = (int (*)())__dberr;
124         dbp->sync = (int (*)())__dberr;
125 }