本文整理汇总了C++中cdb_free函数的典型用法代码示例。如果您正苦于以下问题:C++ cdb_free函数的具体用法?C++ cdb_free怎么用?C++ cdb_free使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了cdb_free函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: CheckIfAlreadySeen
time_t CheckIfAlreadySeen(const char *Facility,
StrBuf *guid,
time_t now,
time_t antiexpire,
eCheckType cType,
long ccid,
long ioid)
{
time_t InDBTimeStamp = 0;
struct UseTable ut;
struct cdbdata *cdbut;
if (cType != eWrite)
{
SEEN_syslog(LOG_DEBUG, "Loading [%s]", ChrPtr(guid));
cdbut = cdb_fetch(CDB_USETABLE, SKEY(guid));
if ((cdbut != NULL) && (cdbut->ptr != NULL)) {
memcpy(&ut, cdbut->ptr,
((cdbut->len > sizeof(struct UseTable)) ?
sizeof(struct UseTable) : cdbut->len));
InDBTimeStamp = now - ut.ut_timestamp;
if (InDBTimeStamp < antiexpire)
{
SEEN_syslog(LOG_DEBUG, "Found - Not expired %ld < %ld", InDBTimeStamp, antiexpire);
cdb_free(cdbut);
return InDBTimeStamp;
}
else
{
SEEN_syslog(LOG_DEBUG, "Found - Expired. %ld >= %ld", InDBTimeStamp, antiexpire);
cdb_free(cdbut);
}
}
else
{
if (cdbut) cdb_free(cdbut);
SEENM_syslog(LOG_DEBUG, "not Found");
}
if (cType == eCheckExist)
return InDBTimeStamp;
}
memcpy(ut.ut_msgid, SKEY(guid));
ut.ut_timestamp = now;
SEENM_syslog(LOG_DEBUG, "Saving new Timestamp");
/* rewrite the record anyway, to update the timestamp */
cdb_store(CDB_USETABLE,
SKEY(guid),
&ut, sizeof(struct UseTable) );
SEENM_syslog(LOG_DEBUG, "Done Saving");
return InDBTimeStamp;
}
开发者ID:henri14,项目名称:citadel,代码行数:57,代码来源:database.c
示例2: cdbb_close_read
void cdbb_close_read(struct cdbb *a)
{
if (a->r->fd > 0)
close(a->r->fd);
cdb_free(a->r);
free(a->r);
}
开发者ID:oripka,项目名称:bagunceiro,代码行数:7,代码来源:z_cdbb.c
示例3: respond
int respond(char *q,char qtype[2],char ip[4])
{
int fd;
int r;
char key[6];
tai_now(&now);
fd = open_read("data.cdb");
if (fd == -1) return 0;
cdb_init(&c,fd);
byte_zero(clientloc,2);
key[0] = 0;
key[1] = '%';
byte_copy(key + 2,4,ip);
r = cdb_find(&c,key,6);
if (!r) r = cdb_find(&c,key,5);
if (!r) r = cdb_find(&c,key,4);
if (!r) r = cdb_find(&c,key,3);
if (!r) r = cdb_find(&c,key,2);
if (r == -1) return 0;
if (r && (cdb_datalen(&c) == 2))
if (cdb_read(&c,clientloc,2,cdb_datapos(&c)) == -1) return 0;
r = doit(q,qtype);
cdb_free(&c);
close(fd);
return r;
}
开发者ID:siddhesh,项目名称:djbdns,代码行数:30,代码来源:tdlookup.c
示例4: cmd_oidl
/*
* List the OpenIDs associated with the currently logged in account
*/
void cmd_oidl(char *argbuf) {
struct cdbdata *cdboi;
long usernum = 0L;
if (CtdlGetConfigInt("c_disable_newu"))
{
cprintf("%d this system does not support openid.\n",
ERROR + CMD_NOT_SUPPORTED);
return;
}
if (CtdlAccessCheck(ac_logged_in)) return;
cdb_rewind(CDB_OPENID);
cprintf("%d Associated OpenIDs:\n", LISTING_FOLLOWS);
while (cdboi = cdb_next_item(CDB_OPENID), cdboi != NULL) {
if (cdboi->len > sizeof(long)) {
memcpy(&usernum, cdboi->ptr, sizeof(long));
if (usernum == CC->user.usernum) {
cprintf("%s\n", cdboi->ptr + sizeof(long));
}
}
cdb_free(cdboi);
}
cprintf("000\n");
}
开发者ID:mingodad,项目名称:citadel,代码行数:29,代码来源:serv_openid_rp.c
示例5: main
int main(int argc, char **argv, char **envp) {
uint8_t buf[1024];
cdb_t cdb;
char *key;
uint32_t len;
uint32_t r;
uint32_t pos;
uint32_t skip = 0;
char *skip_str;
if (!*argv || !*++argv)
usage();
key = *argv;
skip_str = *++argv;
if (skip_str) {
if (sscanf(skip_str, "%" PRIu32, &skip) != strlen(skip_str))
usage();
}
/* Initialize the cdb struct using stdin as it's file descriptor. */
if (cdb_init(&cdb, 0) == -1)
strerr_die2x(111, FATAL, "failed to initialize cdb");
for (;;) {
r = cdb_find_next(&cdb, key, strlen(key));
if (r == -1)
strerr_die2sys(111, FATAL, "unable to read input: ");
if (!r)
_exit(100);
if (!skip)
break;
skip--;
}
/* If there's a record in the cdb file, then the cdb structs dlen property
* will be set to a non-zero value and it's position will be set to the
* offset in the file containing the data. Read the data in chunks and send
* it to stdout. */
len = cdb.dlen;
pos = cdb.dpos;
while (len > 0) {
r = sizeof(buf);
if (r > len)
r = len;
if (cdb_read(buf, r, &cdb, pos) == -1)
strerr_die2sys(111, FATAL, "unable to read input: ");
if (bio_put(bio_1, buf, r) == -1)
strerr_die2sys(111, FATAL, "unable to write output: ");
pos += r;
len -= r;
}
if (bio_flush(bio_1) == -1)
strerr_die2sys(111, FATAL, "unable to write output: ");
cdb_free(&cdb);
return 0;
}
开发者ID:dpejesh,项目名称:svcdb,代码行数:60,代码来源:cdbget.c
示例6: cmd_oida
/*
* List ALL OpenIDs in the database
*/
void cmd_oida(char *argbuf) {
struct cdbdata *cdboi;
long usernum;
struct ctdluser usbuf;
if (CtdlGetConfigInt("c_disable_newu"))
{
cprintf("%d this system does not support openid.\n",
ERROR + CMD_NOT_SUPPORTED);
return;
}
if (CtdlAccessCheck(ac_aide)) return;
cdb_rewind(CDB_OPENID);
cprintf("%d List of all OpenIDs in the database:\n", LISTING_FOLLOWS);
while (cdboi = cdb_next_item(CDB_OPENID), cdboi != NULL) {
if (cdboi->len > sizeof(long)) {
memcpy(&usernum, cdboi->ptr, sizeof(long));
if (CtdlGetUserByNumber(&usbuf, usernum) != 0) {
usbuf.fullname[0] = 0;
}
cprintf("%s|%ld|%s\n",
cdboi->ptr + sizeof(long),
usernum,
usbuf.fullname
);
}
cdb_free(cdboi);
}
cprintf("000\n");
}
开发者ID:mingodad,项目名称:citadel,代码行数:34,代码来源:serv_openid_rp.c
示例7: rules
int rules(void (*callback)(char *,unsigned int),int fd,char *ip,char *host,char *info)
{
int r;
cdb_init(&c,fd);
r = doit(callback,ip,host,info);
cdb_free(&c);
return r;
}
开发者ID:KodeKreatif,项目名称:ucspi-tcp,代码行数:8,代码来源:rules.c
示例8: dict_cdbq_close
static void dict_cdbq_close(DICT *dict)
{
DICT_CDBQ *dict_cdbq = (DICT_CDBQ *) dict;
cdb_free(&dict_cdbq->cdb);
close(dict->stat_fd);
if (dict->fold_buf)
vstring_free(dict->fold_buf);
dict_free(dict);
}
开发者ID:pombredanne,项目名称:NetBSD,代码行数:10,代码来源:dict_cdb.c
示例9: PurgeUseTable
/*
* Purge the use table of old entries.
*
*/
int PurgeUseTable(StrBuf *ErrMsg) {
int purged = 0;
struct cdbdata *cdbut;
struct UseTable ut;
struct UPurgeList *ul = NULL;
struct UPurgeList *uptr;
/* Phase 1: traverse through the table, discovering old records... */
if (CheckTDAPVeto(CDB_USETABLE, ErrMsg))
{
syslog(LOG_DEBUG, "Purge use table: VETO!");
return 0;
}
syslog(LOG_DEBUG, "Purge use table: phase 1");
cdb_rewind(CDB_USETABLE);
while(cdbut = cdb_next_item(CDB_USETABLE), cdbut != NULL) {
/*
* TODODRW: change this to create a new function time_t cdb_get_timestamp( struct cdbdata *)
* this will release this file from the serv_network.h
* Maybe it could be a macro that extracts and casts the reult
*/
if (cdbut->len > sizeof(struct UseTable))
memcpy(&ut, cdbut->ptr, sizeof(struct UseTable));
else {
memset(&ut, 0, sizeof(struct UseTable));
memcpy(&ut, cdbut->ptr, cdbut->len);
}
cdb_free(cdbut);
if ( (time(NULL) - ut.ut_timestamp) > USETABLE_RETAIN ) {
uptr = (struct UPurgeList *) malloc(sizeof(struct UPurgeList));
if (uptr != NULL) {
uptr->next = ul;
safestrncpy(uptr->up_key, ut.ut_msgid, sizeof uptr->up_key);
ul = uptr;
}
++purged;
}
}
/* Phase 2: delete the records */
syslog(LOG_DEBUG, "Purge use table: phase 2");
while (ul != NULL) {
cdb_delete(CDB_USETABLE, ul->up_key, strlen(ul->up_key));
uptr = ul->next;
free(ul);
ul = uptr;
}
syslog(LOG_DEBUG, "Purge use table: finished (purged %d records)", purged);
return(purged);
}
开发者ID:henri14,项目名称:citadel,代码行数:59,代码来源:serv_expire.c
示例10: checkpart_deinit
static void checkpart_deinit(UDF_INIT *iid)
{
struct _info *info = (struct _info *)iid->ptr;
cdb_free(&info->cdb);
close(info->fd);
fprintf(stderr, "%s\n", info->msg);
free(info->msg);
free(info->reason);
free(iid->ptr);
}
开发者ID:jpmens,项目名称:powerdns-datacheck,代码行数:12,代码来源:datacheck.c
示例11: sdb_free
SDB_VISIBLE void sdb_free (Sdb* s) {
if (!s) return;
cdb_free (&s->db);
if (s->lock)
sdb_unlock (sdb_lockfile (s->dir));
ls_free (s->ns);
ht_free (s->ht);
if (s->fd != -1)
close (s->fd);
free (s->ndump);
free (s->dir);
free (s);
}
开发者ID:assarbad,项目名称:radare2,代码行数:13,代码来源:sdb.c
示例12: respond
int respond(char *q,char qtype[2],char ip[4])
{
int fd;
int result;
fd = open_read("data.cdb");
if (fd == -1) return 0;
cdb_init(&c,fd);
result = doit(q,qtype,ip);
cdb_free(&c);
close(fd);
return result;
}
开发者ID:kjseefried,项目名称:didentd,代码行数:13,代码来源:pickdns.c
示例13: cdb_advance_fd
/* Given a file descriptor of an open directory (or AT_FDCWD), CDB->fd,
try to open the CDB->fd-relative directory, DIR. If the open succeeds,
update CDB->fd with the resulting descriptor, close the incoming file
descriptor, and return zero. Upon failure, return -1 and set errno. */
static int
cdb_advance_fd (struct cd_buf *cdb, char const *dir)
{
int new_fd = openat (cdb->fd, dir,
O_RDONLY | O_DIRECTORY | O_NOCTTY | O_NONBLOCK);
if (new_fd < 0)
return -1;
cdb_free (cdb);
cdb->fd = new_fd;
return 0;
}
开发者ID:ProjectZeroSlackr,项目名称:CmdLine-Archivers,代码行数:17,代码来源:chdir-long.c
示例14: PurgeEuidIndexTable
/*
* Purge the EUID Index of old records.
*
*/
int PurgeEuidIndexTable(void) {
int purged = 0;
struct cdbdata *cdbei;
struct EPurgeList *el = NULL;
struct EPurgeList *eptr;
long msgnum;
struct CtdlMessage *msg = NULL;
/* Phase 1: traverse through the table, discovering old records... */
syslog(LOG_DEBUG, "Purge EUID index: phase 1");
cdb_rewind(CDB_EUIDINDEX);
while(cdbei = cdb_next_item(CDB_EUIDINDEX), cdbei != NULL) {
memcpy(&msgnum, cdbei->ptr, sizeof(long));
msg = CtdlFetchMessage(msgnum, 0);
if (msg != NULL) {
CM_Free(msg); /* it still exists, so do nothing */
}
else {
eptr = (struct EPurgeList *) malloc(sizeof(struct EPurgeList));
if (eptr != NULL) {
eptr->next = el;
eptr->ep_keylen = cdbei->len - sizeof(long);
eptr->ep_key = malloc(cdbei->len);
memcpy(eptr->ep_key, &cdbei->ptr[sizeof(long)], eptr->ep_keylen);
el = eptr;
}
++purged;
}
cdb_free(cdbei);
}
/* Phase 2: delete the records */
syslog(LOG_DEBUG, "Purge euid index: phase 2");
while (el != NULL) {
cdb_delete(CDB_EUIDINDEX, el->ep_key, el->ep_keylen);
free(el->ep_key);
eptr = el->next;
free(el);
el = eptr;
}
syslog(LOG_DEBUG, "Purge euid index: finished (purged %d records)", purged);
return(purged);
}
开发者ID:henri14,项目名称:citadel,代码行数:52,代码来源:serv_expire.c
示例15: nntp_fetch_msglist
//
// Utility function to fetch the current list of message numbers in a room
//
struct nntp_msglist nntp_fetch_msglist(struct ctdlroom *qrbuf) {
struct nntp_msglist nm;
struct cdbdata *cdbfr;
cdbfr = cdb_fetch(CDB_MSGLISTS, &qrbuf->QRnumber, sizeof(long));
if (cdbfr != NULL) {
nm.msgnums = (long*)cdbfr->ptr;
cdbfr->ptr = NULL;
nm.num_msgs = cdbfr->len / sizeof(long);
cdbfr->len = 0;
cdb_free(cdbfr);
} else {
nm.num_msgs = 0;
nm.msgnums = NULL;
}
return(nm);
}
开发者ID:mingodad,项目名称:citadel,代码行数:20,代码来源:serv_nntp.c
示例16: cdb_init
void cdb_init(struct cdb *c,int fd)
{
struct stat st;
char *x;
cdb_free(c);
cdb_findstart(c);
c->fd = fd;
if (fstat(fd,&st) == 0) {
x = mmap(0,st.st_size,PROT_READ,MAP_SHARED,fd,0);
if (x + 1) {
c->size = st.st_size;
c->map = x;
}
}
}
开发者ID:alepharchives,项目名称:cdb64,代码行数:17,代码来源:cdb.c
示例17: attach_openid
/*
* Attach an OpenID to a Citadel account
*/
int attach_openid(struct ctdluser *who, StrBuf *claimed_id)
{
struct cdbdata *cdboi;
long fetched_usernum;
char *data;
int data_len;
char buf[2048];
if (!who) return(1);
if (StrLength(claimed_id)==0) return(1);
/* Check to see if this OpenID is already in the database */
cdboi = cdb_fetch(CDB_OPENID, ChrPtr(claimed_id), StrLength(claimed_id));
if (cdboi != NULL) {
memcpy(&fetched_usernum, cdboi->ptr, sizeof(long));
cdb_free(cdboi);
if (fetched_usernum == who->usernum) {
syslog(LOG_INFO, "%s already associated; no action is taken", ChrPtr(claimed_id));
return(0);
}
else {
syslog(LOG_INFO, "%s already belongs to another user", ChrPtr(claimed_id));
return(3);
}
}
/* Not already in the database, so attach it now */
data_len = sizeof(long) + StrLength(claimed_id) + 1;
data = malloc(data_len);
memcpy(data, &who->usernum, sizeof(long));
memcpy(&data[sizeof(long)], ChrPtr(claimed_id), StrLength(claimed_id) + 1);
cdb_store(CDB_OPENID, ChrPtr(claimed_id), StrLength(claimed_id), data, data_len);
free(data);
snprintf(buf, sizeof buf, "User <%s> (#%ld) has claimed the OpenID URL %s\n",
who->fullname, who->usernum, ChrPtr(claimed_id));
CtdlAideMessage(buf, "OpenID claim");
syslog(LOG_INFO, "%s", buf);
return(0);
}
开发者ID:mingodad,项目名称:citadel,代码行数:48,代码来源:serv_openid_rp.c
示例18: control_find_highest
/*
* callback to get highest room number when rebuilding control file
*/
void control_find_highest(struct ctdlroom *qrbuf, void *data)
{
struct ctdlroom room;
struct cdbdata *cdbfr;
long *msglist;
int num_msgs=0;
int c;
int room_fixed = 0;
int message_fixed = 0;
if (qrbuf->QRnumber > CitControl.MMnextroom)
{
CitControl.MMnextroom = qrbuf->QRnumber;
room_fixed = 1;
}
CtdlGetRoom (&room, qrbuf->QRname);
/* Load the message list */
cdbfr = cdb_fetch(CDB_MSGLISTS, &room.QRnumber, sizeof(long));
if (cdbfr != NULL) {
msglist = (long *) cdbfr->ptr;
num_msgs = cdbfr->len / sizeof(long);
} else {
return; /* No messages at all? No further action. */
}
if (num_msgs>0)
{
for (c=0; c<num_msgs; c++)
{
if (msglist[c] > CitControl.MMhighest)
{
CitControl.MMhighest = msglist[c];
message_fixed = 1;
}
}
}
cdb_free(cdbfr);
if (room_fixed)
syslog(LOG_INFO, "Control record checking....Fixed room counter\n");
if (message_fixed)
syslog(LOG_INFO, "Control record checking....Fixed message count\n");
return;
}
开发者ID:henri14,项目名称:citadel,代码行数:48,代码来源:control.c
示例19: cdbo_dealloc
static void
cdbo_dealloc(CdbObject *self) { /* del(cdb_o) */
if (self->name_py != NULL) {
/* if cdb_o.name is not None: we open()d it ourselves, so close it */
if (PyString_Check(self->name_py))
close(self->c.fd);
Py_DECREF(self->name_py);
}
Py_XDECREF(self->getkey);
cdb_free(&self->c);
PyObject_DEL(self);
}
开发者ID:jkahn,项目名称:python-cdb,代码行数:18,代码来源:cdbmodule.c
示例20: cmd_gnur
/*
* Get Next Unregistered User
*/
void cmd_gnur(char *argbuf)
{
struct cdbdata *cdbus;
struct ctdluser usbuf;
if (CtdlAccessCheck(ac_aide)) {
return;
}
if ((CtdlGetConfigInt("MMflags") & MM_VALID) == 0) {
cprintf("%d There are no unvalidated users.\n", CIT_OK);
return;
}
/* There are unvalidated users. Traverse the user database,
* and return the first user we find that needs validation.
*/
cdb_rewind(CDB_USERS);
while (cdbus = cdb_next_item(CDB_USERS), cdbus != NULL) {
memset(&usbuf, 0, sizeof(struct ctdluser));
memcpy(&usbuf, cdbus->ptr,
((cdbus->len > sizeof(struct ctdluser)) ?
sizeof(struct ctdluser) : cdbus->len));
cdb_free(cdbus);
if ((usbuf.flags & US_NEEDVALID)
&& (usbuf.axlevel > AxDeleted)) {
cprintf("%d %s\n", MORE_DATA, usbuf.fullname);
cdb_close_cursor(CDB_USERS);
return;
}
}
/* If we get to this point, there are no more unvalidated users.
* Therefore we clear the "users need validation" flag.
*/
begin_critical_section(S_CONTROL);
int flags;
flags = CtdlGetConfigInt("MMflags");
flags = flags & (~MM_VALID);
CtdlSetConfigInt("MMflags", flags);
end_critical_section(S_CONTROL);
cprintf("%d *** End of registration.\n", CIT_OK);
}
开发者ID:mingodad,项目名称:citadel,代码行数:47,代码来源:serv_user.c
注:本文中的cdb_free函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论