ndbm.h

Upload User: acmefrp
Upload Date: 2010-03-06
Package Size: 23768k
Code Size: 2k
Category: OS Develop
Development Platform: C/C++
  1. /*  @(#)ndbm.h 1.1 92/07/30 SMI; from UCB 4.3 5/30/85 */
  2. /*
  3.  * Copyright (c) 1983 Regents of the University of California.
  4.  * All rights reserved.  The Berkeley software License Agreement
  5.  * specifies the terms and conditions for redistribution.
  6.  *
  7.  */
  8. /*
  9.  * Hashed key data base library.
  10.  */
  11. #ifndef _ndbm_h
  12. #define _ndbm_h
  13. #define PBLKSIZ 1024
  14. #define DBLKSIZ 4096
  15. typedef struct {
  16. int dbm_dirf; /* open directory file */
  17. int dbm_pagf; /* open page file */
  18. int dbm_flags; /* flags, see below */
  19. long dbm_maxbno; /* last ``bit'' in dir file */
  20. long dbm_bitno; /* current bit number */
  21. long dbm_hmask; /* hash mask */
  22. long dbm_blkptr; /* current block for dbm_nextkey */
  23. int dbm_keyptr; /* current key for dbm_nextkey */
  24. long dbm_blkno; /* current page to read/write */
  25. long dbm_pagbno; /* current page in pagbuf */
  26. char dbm_pagbuf[PBLKSIZ]; /* page file block buffer */
  27. long dbm_dirbno; /* current block in dirbuf */
  28. char dbm_dirbuf[DBLKSIZ]; /* directory file block buffer */
  29. } DBM;
  30. #define _DBM_RDONLY 0x1 /* data base open read-only */
  31. #define _DBM_IOERR 0x2 /* data base I/O error */
  32. #define dbm_rdonly(db) ((db)->dbm_flags & _DBM_RDONLY)
  33. #define dbm_error(db) ((db)->dbm_flags & _DBM_IOERR)
  34. /* use this one at your own risk! */
  35. #define dbm_clearerr(db) ((db)->dbm_flags &= ~_DBM_IOERR)
  36. /* for flock(2) and fstat(2) */
  37. #define dbm_dirfno(db) ((db)->dbm_dirf)
  38. #define dbm_pagfno(db) ((db)->dbm_pagf)
  39. typedef struct {
  40. char *dptr;
  41. int dsize;
  42. } datum;
  43. /*
  44.  * flags to dbm_store()
  45.  */
  46. #define DBM_INSERT 0
  47. #define DBM_REPLACE 1
  48. DBM *dbm_open();
  49. void dbm_close();
  50. datum dbm_fetch();
  51. datum dbm_firstkey();
  52. datum dbm_nextkey();
  53. datum dbm_do_nextkey();
  54. long dbm_forder();
  55. int dbm_delete();
  56. int dbm_store();
  57. #endif /*!_ndbm_h*/