GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages


Manual Reference Pages  -  NTDB (3)

.ds Aq ’

NAME

ntdb - A not-so trivial keyword/data database system

CONTENTS

SYNOPSIS

#include <ntdb.h>

DESCRIPTION

If you have previously used the tdb library from Samba, much of this will seem familiar, but there are some API changes which a compiler will warn you about if you simply replace tdb with ntdb in your code! The on-disk format for ntdb is incompatible with tdb.

tdbs API was based on gdbm, and ntdb continues this tradition, with enhancements. A differences guide is available in the text file lib/ntdb/doc/TDB_porting.txt in the SAMBA source tree.

NTDB API OVERVIEW

The complete API is documented in the ntdb.h header, which is kept up-to-date and recommended reading.

Normal usage is to call ntdb_open() to create or open an ntdb file. ntdb_store() is used to add records, ntdb_fetch() is used to fetch them. Traversals are supported via callback (ntdb_traverse()) or iteration (ntdb_firstkey() and ntdb_nextkey()). Transactions are supported for batching updates or reads atomically, using ntdb_transaction_start() and ntdb_transaction_commit().

    Use With Talloc

ntdb_open() takes an optional linked list of attributes: in particular you can specify an alternate allocator (such as talloc):

#include <talloc.h>
#include <ntdb.h>

static void *my_alloc(const void *owner, size_t len, void *priv) { return talloc_size(owner, len); }

static void *my_expand(void *old, size_t newlen, void *priv) { return talloc_realloc_size(NULL, old, newlen); }

static void my_free(void *old, void *priv) { talloc_free(old); }

/* This opens an ntdb file as a talloc object with given parent. */ struct ntdb_context *ntdb_open_talloc(const void *parent, const char *filename) { struct ntdb_context *ntdb; union ntdb_attribute alloc;

alloc.base.attr = NTDB_ATTRIBUTE_ALLOCATOR; alloc.base.next = NULL; alloc.alloc.alloc = my_alloc; alloc.alloc.expand = my_expand; alloc.alloc.free = my_free;

ntdb = ntdb_open(filename, NTDB_DEFAULT, O_RDWR|O_CREAT, 0600, &alloc); if (ntdb) { talloc_steal(parent, ntdb); talloc_set_name(ntdb, "%s", filename); } return ntdb; }

SEE ALSO

\m[blue] http://tdb.samba.org/\m[]

AUTHOR

The original tdb software was created by Andrew Tridgell, and is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed. ntdb was derived from tdb, but mostly rewritten by Rusty Russell.

COPYRIGHT/LICENSE

Copyright (C) Rusty Russell 2013, IBM Corporation

This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, see http://www.gnu.org/licenses/.

Search for    or go to Top of page |  Section 3 |  Main Index


Samba 4&.1 NTDB (3) 03/12/2014

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with manServer 1.07.