NTSTATUS status;
int32_t value = (int32_t)strtol(data, NULL, 10);
- status = dbwrap_trans_store_int32_bystring(db, keyname, value);
-
+ if (dbwrap_is_persistent(db)) {
+ status = dbwrap_trans_store_int32_bystring(db, keyname, value);
+ } else {
+ status = dbwrap_store_int32_bystring(db, keyname, value);
+ }
if (!NT_STATUS_IS_OK(status)) {
d_fprintf(stderr, "ERROR: could not store int32 key '%s': %s\n",
keyname, nt_errstr(status));
NTSTATUS status;
uint32_t value = (uint32_t)strtol(data, NULL, 10);
- status = dbwrap_trans_store_uint32_bystring(db, keyname, value);
-
+ if (dbwrap_is_persistent(db)) {
+ status = dbwrap_trans_store_uint32_bystring(db, keyname, value);
+ } else {
+ status = dbwrap_store_uint32_bystring(db, keyname, value);
+ }
if (!NT_STATUS_IS_OK(status)) {
d_fprintf(stderr,
"ERROR: could not store uint32 key '%s': %s\n",
const char *data)
{
NTSTATUS status;
+ TDB_DATA tdbdata;
- status = dbwrap_trans_store_bystring(db, keyname,
- string_term_tdb_data(data), TDB_REPLACE);
+ tdbdata = string_term_tdb_data(data);
+ if (dbwrap_is_persistent(db)) {
+ status = dbwrap_trans_store_bystring(db, keyname,
+ tdbdata,
+ TDB_REPLACE);
+ } else {
+ status = dbwrap_store_bystring(db, keyname,
+ tdbdata,
+ TDB_REPLACE);
+ }
if (!NT_STATUS_IS_OK(status)) {
d_fprintf(stderr,
"ERROR: could not store string key '%s': %s\n",
tdbdata.dptr = (unsigned char *)datablob.data;
tdbdata.dsize = datablob.length;
- status = dbwrap_trans_store_bystring(db, keyname,
- tdbdata,
- TDB_REPLACE);
+ if (dbwrap_is_persistent(db)) {
+ status = dbwrap_trans_store_bystring(db, keyname,
+ tdbdata,
+ TDB_REPLACE);
+ } else {
+ status = dbwrap_store_bystring(db, keyname,
+ tdbdata,
+ TDB_REPLACE);
+ }
if (!NT_STATUS_IS_OK(status)) {
d_fprintf(stderr,
"ERROR: could not store string key '%s': %s\n",
{
NTSTATUS status;
- status = dbwrap_trans_delete_bystring(db, keyname);
+ if (dbwrap_is_persistent(db)) {
+ status = dbwrap_trans_delete_bystring(db, keyname);
+ } else {
+ status = dbwrap_delete_bystring(db, keyname);
+ }
if (!NT_STATUS_IS_OK(status)) {
d_fprintf(stderr, "ERROR deleting record %s : %s\n",
const char *keytype = "int32";
enum dbwrap_type type;
const char *valuestr = "0";
+ int persistent = 0;
+ int tdb_flags = TDB_DEFAULT;
TALLOC_CTX *mem_ctx = talloc_stackframe();
struct poptOption popt_options[] = {
POPT_AUTOHELP
POPT_COMMON_SAMBA
+ { "persistent", 'p', POPT_ARG_NONE, &persistent, 0, "treat the database as persistent", NULL },
POPT_TABLEEND
};
int opt;
if ((extra_argc < 2) || (extra_argc > 5)) {
d_fprintf(stderr,
- "USAGE: %s <database> <op> [<key> [<type> [<value>]]]\n"
+ "USAGE: %s [options] <database> <op> [<key> [<type> "
+ "[<value>]]]\n"
" ops: fetch, store, delete, erase, listkeys, "
"listwatchers\n"
" types: int32, uint32, string, hex\n",
goto done;
}
+ if (persistent == 0) {
+ tdb_flags |= TDB_CLEAR_IF_FIRST;
+ }
+
switch (op) {
case OP_FETCH:
case OP_STORE:
case OP_DELETE:
case OP_ERASE:
case OP_LISTKEYS:
- db = db_open(mem_ctx, dbname, 0, TDB_DEFAULT, O_RDWR | O_CREAT,
+ db = db_open(mem_ctx, dbname, 0, tdb_flags, O_RDWR | O_CREAT,
0644, DBWRAP_LOCK_ORDER_1);
if (db == NULL) {
d_fprintf(stderr, "ERROR: could not open dbname\n");