Loading...
Searching...
No Matches
SDBM library
APR Utility Functions » DBM routines
Collaboration diagram for SDBM library:

## Data Structures

struct | apr_sdbm_datum_t

## Macros

#define | APR_SDBM_DIRFEXT ".dir"
#define | APR_SDBM_PAGFEXT ".pag"
#define | APR_SDBM_INSERT 0
#define | APR_SDBM_REPLACE 1
#define | APR_SDBM_INSERTDUP 2

## Typedefs

typedef struct apr_sdbm_t | apr_sdbm_t

## Functions

apr_status_t | apr_sdbm_open (apr_sdbm_t **db, const char *name, apr_int32_t mode, apr_fileperms_t perms, apr_pool_t *p)
apr_status_t | apr_sdbm_close (apr_sdbm_t *db)
apr_status_t | apr_sdbm_lock (apr_sdbm_t *db, int type)
apr_status_t | apr_sdbm_unlock (apr_sdbm_t *db)
apr_status_t | apr_sdbm_fetch (apr_sdbm_t *db, apr_sdbm_datum_t *value, apr_sdbm_datum_t key)
apr_status_t | apr_sdbm_store (apr_sdbm_t *db, apr_sdbm_datum_t key, apr_sdbm_datum_t value, int opt)
apr_status_t | apr_sdbm_delete (apr_sdbm_t *db, const apr_sdbm_datum_t key)
apr_status_t | apr_sdbm_firstkey (apr_sdbm_t *db, apr_sdbm_datum_t *key)
apr_status_t | apr_sdbm_nextkey (apr_sdbm_t *db, apr_sdbm_datum_t *key)
int | apr_sdbm_rdonly (apr_sdbm_t *db)

## Detailed Description

## Macro Definition Documentation

## APR_SDBM_DIRFEXT

#define APR_SDBM_DIRFEXT ".dir"

SDBM Directory file extension

## APR_SDBM_INSERT

#define APR_SDBM_INSERT 0

Insert

## APR_SDBM_INSERTDUP

#define APR_SDBM_INSERTDUP 2

Insert with duplicates

## APR_SDBM_PAGFEXT

#define APR_SDBM_PAGFEXT ".pag"

SDBM page file extension

## APR_SDBM_REPLACE

#define APR_SDBM_REPLACE 1

Replace

## Typedef Documentation

## apr_sdbm_t

typedef struct apr_sdbm_t apr_sdbm_t

Structure for referencing an sdbm

## Function Documentation

## apr_sdbm_close()

apr_status_t apr_sdbm_close | ( | apr_sdbm_t * | db | ) |

Close an sdbm file previously opened by apr_sdbm_open

Parameters

  db | The database to close

## apr_sdbm_delete()

apr_status_t apr_sdbm_delete | ( | apr_sdbm_t * | db,
|  | const apr_sdbm_datum_t | key
| ) |  |

Delete an sdbm record value by key

Parameters

  db | The database
  key | The key datum of the record to delete

Remarks
  It is not an error to delete a non-existent record.

## apr_sdbm_fetch()

apr_status_t apr_sdbm_fetch | ( | apr_sdbm_t * | db,
|  | apr_sdbm_datum_t * | value,
|  | apr_sdbm_datum_t | key
| ) |  |

Fetch an sdbm record value by key

Parameters

  db | The database
  value | The value datum retrieved for this record
  key | The key datum to find this record

## apr_sdbm_firstkey()

apr_status_t apr_sdbm_firstkey | ( | apr_sdbm_t * | db,
|  | apr_sdbm_datum_t * | key
| ) |  |

Retrieve the first record key from a dbm

Parameters

  db | The database
  key | The key datum of the first record

Remarks
  The keys returned are not ordered. To traverse the list of keys for an sdbm opened with APR_SHARELOCK, the caller must use apr_sdbm_lock prior to retrieving the first record, and hold the lock until after the last call to apr_sdbm_nextkey.

## apr_sdbm_lock()

apr_status_t apr_sdbm_lock | ( | apr_sdbm_t * | db,
|  | int | type
| ) |  |

Lock an sdbm database for concurency of multiple operations

Parameters

  db | The database to lock

  type

  The lock type

                APR_FLOCK_SHARED
                APR_FLOCK_EXCLUSIVE

Remarks
  Calls to apr_sdbm_lock may be nested. All apr_sdbm functions perform implicit locking. Since an APR_FLOCK_SHARED lock cannot be portably promoted to an APR_FLOCK_EXCLUSIVE lock, apr_sdbm_store and apr_sdbm_delete calls will fail if an APR_FLOCK_SHARED lock is held. The apr_sdbm_lock call requires the database to be opened with the APR_SHARELOCK mode value.

## apr_sdbm_nextkey()

apr_status_t apr_sdbm_nextkey | ( | apr_sdbm_t * | db,
|  | apr_sdbm_datum_t * | key
| ) |  |

Retrieve the next record key from an sdbm

Parameters

  db | The database
  key | The key datum of the next record

## apr_sdbm_open()

apr_status_t apr_sdbm_open | ( | apr_sdbm_t ** | db,
|  | const char * | name,
|  | apr_int32_t | mode,
|  | apr_fileperms_t | perms,
|  | apr_pool_t * | p
| ) |  |

Open an sdbm database by file name

Parameters

  db | The newly opened database
  name | The sdbm file to open

  mode

  The flag values (APR_READ and APR_BINARY flags are implicit)

                APR_WRITE          open for read-write access
                APR_CREATE         create the sdbm if it does not exist
                APR_TRUNCATE       empty the contents of the sdbm
                APR_EXCL           fail for APR_CREATE if the file exists
                APR_DELONCLOSE     delete the sdbm when closed
                APR_SHARELOCK      support locking across process/machines

  perms | Permissions to apply to if created
  p | The pool to use when creating the sdbm

Remarks
  The sdbm name is not a true file name, as sdbm appends suffixes for seperate data and index files.

## apr_sdbm_rdonly()

int apr_sdbm_rdonly | ( | apr_sdbm_t * | db | ) |

Returns true if the sdbm database opened for read-only access

Parameters

  db | The database to test

## apr_sdbm_store()

apr_status_t apr_sdbm_store | ( | apr_sdbm_t * | db,
|  | apr_sdbm_datum_t | key,
|  | apr_sdbm_datum_t | value,
|  | int | opt
| ) |  |

Store an sdbm record value by key

Parameters

  db | The database
  key | The key datum to store this record by
  value | The value datum to store in this record

  opt

  The method used to store the record

                APR_SDBM_INSERT     return an error if the record exists
                APR_SDBM_REPLACE    overwrite any existing record for key

## apr_sdbm_unlock()

apr_status_t apr_sdbm_unlock | ( | apr_sdbm_t * | db | ) |

Release an sdbm lock previously aquired by apr_sdbm_lock

Parameters

  db | The database to unlock