#include <errno.h>#include <signal.h>#include <stdlib.h>#include <string.h>#include <sys/param.h>#include <sys/stat.h>#include <sys/time.h>#include <sys/types.h>#include <time.h>#include <unistd.h>#include <atalk/cnid.h>#include <atalk/compat.h>#include <atalk/list.h>#include <atalk/logger.h>#include <atalk/util.h>#include <atalk/volume.h>Macros | |
| #define | USE_LIST |
Functions | |
| void | cnid_register (struct _cnid_module *module) |
| static int | cnid_dir (const char *dir, mode_t mask) |
| struct _cnid_db * | cnid_open (struct vol *vol, char *type, int flags) |
| static void | block_signal (uint32_t flags) |
| static void | unblock_signal (uint32_t flags) |
| static cnid_t | valide (cnid_t id) |
| void | cnid_close (struct _cnid_db *db) |
| cnid_t | cnid_add (struct _cnid_db *cdb, const struct stat *st, const cnid_t did, const char *name, const size_t len, cnid_t hint) |
| int | cnid_delete (struct _cnid_db *cdb, cnid_t id) |
| cnid_t | cnid_get (struct _cnid_db *cdb, const cnid_t did, char *name, const size_t len) |
| int | cnid_getstamp (struct _cnid_db *cdb, void *buffer, const size_t len) |
| cnid_t | cnid_lookup (struct _cnid_db *cdb, const struct stat *st, const cnid_t did, char *name, const size_t len) |
| int | cnid_find (struct _cnid_db *cdb, const char *name, size_t namelen, void *buffer, size_t buflen, bool *more_available) |
| Search the CNID database for entries whose name contains a substring. | |
| char * | cnid_resolve (struct _cnid_db *cdb, cnid_t *id, void *buffer, size_t len) |
| int | cnid_update (struct _cnid_db *cdb, const cnid_t id, const struct stat *st, const cnid_t did, char *name, const size_t len) |
| cnid_t | cnid_rebuild_add (struct _cnid_db *cdb, const struct stat *st, const cnid_t did, char *name, const size_t len, cnid_t hint) |
| int | cnid_wipe (struct _cnid_db *cdb) |
Variables | |
| static struct list_head | modules = ATALK_LIST_HEAD_INIT(modules) |
| static sigset_t | sigblockset |
| #define USE_LIST |
|
static |
| cnid_t cnid_add | ( | struct _cnid_db * | cdb, |
| const struct stat * | st, | ||
| const cnid_t | did, | ||
| const char * | name, | ||
| const size_t | len, | ||
| cnid_t | hint ) |
| void cnid_close | ( | struct _cnid_db * | db | ) |
Closes CNID database. Currently it's just a wrapper around db->cnid_close().
|
static |
| int cnid_find | ( | struct _cnid_db * | cdb, |
| const char * | name, | ||
| size_t | namelen, | ||
| void * | buffer, | ||
| size_t | buflen, | ||
| bool * | more_available ) |
Search the CNID database for entries whose name contains a substring.
Centralises parameter validation so all three CNID backends (dbd, sqlite, mysql) behave identically against bad input. The 4-byte upper-bound shrink on namelen leaves room for the DBD backend's pagination offset prefix in the wire payload; the constraint is applied uniformly here so callers see consistent behaviour regardless of the configured backend.
The optional more_available out-parameter, when non-NULL, is written unconditionally on entry to false and again by the backend: false on error, true iff the result set was truncated on success (more matches exist than fit in buffer, or were collected within the daemon's wall-clock budget).
| [in] | cdb | CNID database handle |
| [in] | name | UTF-8 substring to search for, not necessarily NUL-terminated |
| [in] | namelen | bytes in name, range 1..MAXPATHLEN-sizeof(uint32_t) |
| [out] | buffer | caller-provided buffer for matching CNIDs in network byte order |
| [in] | buflen | capacity of buffer in bytes, must be >= CNID_FIND_MIN_BUFLEN |
| [out] | more_available | set to true iff result set was truncated, NULL to opt out |
buffer on success, -1 on failure (errno = CNID_ERR_PARAM or CNID_ERR_DB) | int cnid_getstamp | ( | struct _cnid_db * | cdb, |
| void * | buffer, | ||
| const size_t | len ) |
| cnid_t cnid_lookup | ( | struct _cnid_db * | cdb, |
| const struct stat * | st, | ||
| const cnid_t | did, | ||
| char * | name, | ||
| const size_t | len ) |
Opens CNID database using particular back-end
| cnid_t cnid_rebuild_add | ( | struct _cnid_db * | cdb, |
| const struct stat * | st, | ||
| const cnid_t | did, | ||
| char * | name, | ||
| const size_t | len, | ||
| cnid_t | hint ) |
| void cnid_register | ( | struct _cnid_module * | module | ) |
Once module has been registered, it cannot be unregistered.
| int cnid_update | ( | struct _cnid_db * | cdb, |
| const cnid_t | id, | ||
| const struct stat * | st, | ||
| const cnid_t | did, | ||
| char * | name, | ||
| const size_t | len ) |
| int cnid_wipe | ( | struct _cnid_db * | cdb | ) |
|
static |
protect against bogus value from the DB. adddir really doesn't like 2
|
static |
List of all registered modules.
|
static |