ndbm.h 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. /*-
  2. * SPDX-License-Identifier: BSD-3-Clause
  3. *
  4. * Copyright (c) 1990, 1993
  5. * The Regents of the University of California. All rights reserved.
  6. *
  7. * This code is derived from software contributed to Berkeley by
  8. * Margo Seltzer.
  9. *
  10. * Redistribution and use in source and binary forms, with or without
  11. * modification, are permitted provided that the following conditions
  12. * are met:
  13. * 1. Redistributions of source code must retain the above copyright
  14. * notice, this list of conditions and the following disclaimer.
  15. * 2. Redistributions in binary form must reproduce the above copyright
  16. * notice, this list of conditions and the following disclaimer in the
  17. * documentation and/or other materials provided with the distribution.
  18. * 3. Neither the name of the University nor the names of its contributors
  19. * may be used to endorse or promote products derived from this software
  20. * without specific prior written permission.
  21. *
  22. * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  23. * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  24. * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  25. * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  26. * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  27. * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  28. * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  29. * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  30. * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  31. * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  32. * SUCH DAMAGE.
  33. *
  34. * @(#)ndbm.h 8.1 (Berkeley) 6/2/93
  35. * $FreeBSD$ : src/include/ndbm.h
  36. * Nov 20 19:45:28 2017 UTC by pfg
  37. * SVN Revision 326024
  38. */
  39. #ifndef _NDBM_H_
  40. #define _NDBM_H_
  41. /* #include <db.h> */
  42. /*
  43. * The above header-file is directly included in `newlib/libc/search/ndbm.c`
  44. * as `db.h` is present in form of `db_local.h`, inside `newlib/libc/search`
  45. * directory and not in `newlib/libc/include`.
  46. * Necessary data-types are mentioned in form of forward-declarations
  47. */
  48. /* Map dbm interface onto db(3). */
  49. #define DBM_RDONLY O_RDONLY
  50. /* Flags to dbm_store(). */
  51. #define DBM_INSERT 0
  52. #define DBM_REPLACE 1
  53. /*
  54. * The db(3) support for ndbm always appends this suffix to the
  55. * file name to avoid overwriting the user's original database.
  56. */
  57. #define DBM_SUFFIX ".db"
  58. typedef struct {
  59. void *dptr;
  60. int dsize; /* XXX Should be size_t according to 1003.1-2008. */
  61. } datum;
  62. struct __db; /* Forward-declaration */
  63. typedef struct __db DB; /* Forward-declaration */
  64. typedef DB DBM;
  65. #define dbm_pagfno(a) DBM_PAGFNO_NOT_AVAILABLE
  66. __BEGIN_DECLS
  67. int dbm_clearerr(DBM *);
  68. void dbm_close(DBM *);
  69. int dbm_delete(DBM *, datum);
  70. int dbm_error(DBM *);
  71. datum dbm_fetch(DBM *, datum);
  72. datum dbm_firstkey(DBM *);
  73. datum dbm_nextkey(DBM *);
  74. DBM *dbm_open(const char *, int, mode_t);
  75. int dbm_store(DBM *, datum, datum, int);
  76. #if __BSD_VISIBLE
  77. int dbm_dirfno(DBM *);
  78. #endif
  79. __END_DECLS
  80. #endif /* !_NDBM_H_ */