[SCM] Samba Shared Repository - branch master updated

Michael Adam obnox at samba.org
Tue Oct 11 07:52:03 MDT 2011


The branch, master has been updated
       via  6760011 s3:dbwrap: change dbwrap_store_uint32() to NTSTATUS return type
       via  c9bc1e4 s3:dbwrap: change dbwrap_store_int32() to NTSTATUS return type
       via  658f721 s3:dbwrap: change dbwrap_fetch_uint32() to NTSTATUS return type (instead of bool)
       via  603c3e1 s3:dbwrap: convert dbwrap_fetch_int32() to NTSTATUS return code
       via  ce8626c s3:idmap_tdb2: fix hwm-handling to use uint32 consistently
       via  ba88e4e s3:idmap_tdb: fix hwm-handling to use uint32 consistently
       via  f03e4ae s3:passdb:account_pol: use dbwrap_fetch_uint32, not dbwrap_fetch_int32 for the DB version
       via  f8cad3a s3:idmap_autorid: make a debug message more precise
       via  b4e528a s3:idmap_autorid: untangle function from check and log status in idmap_autorid_db_init()
       via  8750e3f s3:dbwrap: move definitions of db_record and db_contect structs to dbwrap_private.h
       via  6fb5c47 s3:torture: convert torture.c to only use dbwrap wrapper functions
       via  311ed56 s3:locking: convert posix.c to use dbwrap wrapper functions only
       via  f0ab22e s3:locking: convert locking.c to use dbwrap wrapper functions only
       via  5cbc505 s3:locking: convert brlock to only use dbwrap wrapper functions
       via  e2328ac s3:messages: convert to use only dbwrap wrapper functions
       via  82428ad s3:groupdb: convert mapping_tdb.c to use dbwrap wrapper functions only
       via  3340597 s3:rpc_server: convert srvsvc to only use dbwrap wrapper functions
       via  5063498 s3:smbd: convert notify db to use dbwrap wrapper functions
       via  ec057c3 s3:smbd: convert session.c to use dbwrap wrapper functions only
       via  43a13b5 s3:smbd: convert connections.c to use only dbrwap wrapper functions
       via  608ac61 s3:conn_tdb: convert connections tdb to only use dbwrap wrapper functions
       via  4bfda2d s3:vfs: convert the acl_tdb module to use dbwrap wrapper functions.
       via  4cb75bd s3:vfs: convert nfs4_acls sidmap db code to use dbwrap_wrapper functions
       via  ceb9f57 s3:vfs: change the xattr_tdb module to use dbwrap wrapper functions
       via  c7c1a3e s3:printing: convert printer_list to use dbwrap wrapper functions
       via  3f21428 s3:secrets: convert to use dbwrap wrapper functions only
       via  8b4845b s3:passdb: convert account_pol to use dbwrap wrapper functions only
       via  8b4dd99 s3:passdb: convert machine_sid to use dbwrap wrapper functions only
       via  a91f06a s3:passdb: convert pdb_tdb to use dbwrap wrapper functions.
       via  7458aac s3:net: convert net idmap check to use dbwrap wrapper functions.
       via  1f57f9e s3:net: convert net idmap to use only dbwrap wrapper functions
       via  3d52de3 s3:idmap: convert idmap_tdb to use dbwrap wrapper functions.
       via  f1057ac s3:libnet: convert libnet_dssync_passdb to only use dbwrap wrapper functions.
       via  79a4911 s3:privileges: convert privileges.c to use dbwrap wrapper functions.
       via  736af26 s3:g_lock: convert to use only dbwrap wrapper functions.
       via  7057b4d s3:registry: convert reg_backend_db to use dbwrap wrapper functions
       via  ff79187 s3:talloc_dict: change to only use dbwrap wrapper functions
       via  248cb23 s3:sharesec: convert sharesec.c to use dbwrap wrapper functions
       via  bbe7811 s3:sessionid: convert to using dbwrap wrapper functions only
       via  bdee945 s3:sessionid: use dbwrap_travers_read() in sessionid_travers_read()
       via  6656de1 s3:sessionid: use dbwrap_travers() in sessionid_traverse()
       via  c8924ec s3:net: convert net serverid to only use dbwrap wrapper functions
       via  85ae3c3 s3:serverid: convert to using dbwrap wrapper functions only
       via  5bfdd73 s3:net: fix the exit code of net serverid wipe
       via  8645564 s3:net: fix the exit code of net serverid list
       via  91e77f3 s3:serverid: use dbwrap_traverse_read() in serverid_traverse_read()
       via  81258c0 s3:serverid: use dbwrap_traverse() in serverid_traverse()
       via  0b7108b s3:dbwrap_torture: convert to using wrapper functions only
       via  64748e8 s3:dbwrap_tool: convert to using wrapper functions only
       via  f21a66f s3:dbwrap: convert dbwrap_util.c to use dbwrap wrapper functions
       via  e39cd86 s3:dbwrap: use dbwrap_fetch_bystring() in dbwrap_fetch_[u]int32()
       via  0e28448 s3:dbwrap: convert dbwrap_fetch(), dbwrap_fetch_bystring() and dbwrap_fetch_bystring_upper() to NTSTATUS
       via  25a9978 s3:dbwrap: add dbwrap_fetch_locked(), a wrapper for db->fetch_locked
       via  4637044 s3:dbwrap: add dbwrap_record_delete(), a wrapper for record->delete_rec
       via  b257e83 s3:dbwrap: add dbwrap_record_store(), a wrapper for record->store
       via  bfed62c s3:dbwrap: add get-functions for db_record key, value and private_data
       via  3ed2fb4 s3:dbwrap: add wrapper function dbwrap_get_seqnum()
       via  373b060 s3:dbwrap: add wrappers for transactions start/cancel/commit
       via  d8ce5bc s3:dbwrap: add wrapper dbwrap_get_flags()
       via  7b9bf28 s3:dbwrap: fix db_rbt_traverse() to return the record count on success
       via  ebcb921 s3:dbwrap: add specific dbwrap_wipe() implementation to dbwrap_rbt
       via  97fef0c s3:dbwrap: add specific dbwrap_wipe() implementation to dbwrap_tdb
       via  3dc607c s3:dbwrap: add a comment
       via  dc4a5f5 s3:dbwrap: add function dbwrap_wipe()
       via  63c5c0e s3:dbwrap: add specific dbwrap_parse_record() implementation to dbwrap_rbt
       via  c5d03cb s3:dbwrap: implement dbwrap_fallback_exists() with dbwrap_parse_record()
       via  99fa6fa s3:dbwrap: allow NULL parser for dbwrap_parse_record()
       via  f5b7d87 s3:dbwrap: dbwrap_parse_record() should always return -1 on "not found"
       via  893805b s3:dbwrap: add function dbwrap_parse_record()
       via  fff09d0 s3:dbwrap: add specific dbwrap_exists() implementation to dbwrap_rbt
       via  28e4c41 s3:dbwrap: factor out db_rpt_search_internal()
       via  5953839 s3:dbwrap: add specific dbwrap_exists() implementation to dbwrap_tdb
       via  87b68ce s3:dbwrap: add function dbwrap_exists()
       via  87f51bf s3:dbwrap: add a wrapper dbwrap_traverse_read()
       via  8f098a6 s3:dbwrap: change the dbwrap_traverse() wrapper to return the count in an additional parameter
       via  6608ba8 s3:dbwrap: reorganize dbwrap.h some
       via  2d52f6f s3:dbwrap: move dbwrap_traverse() to dbwrap.c, the core of the dbrwap subsystem
       via  663c661 s3:dbwrap: move dbwrap_store() back to dbwrap.c, the core of the dbwrap subsystem
       via  2aa5601 s3:dbwrap: move dbwrap_delete() back to dbwrap.c, the core of the dbwrap subsystem
       via  c3868b7 s3:dbwrap: move dbwrap_fetch() back to dbwrap.c, the core of the dbwrap subsystem
       via  7a72c84 s3:dbwrap: move the db_open_rbt() prototype to a new header dbwrap_rbt.h
       via  c768121 s3:dbwrap: move the db_open_file() prototype to a new header dbwrap_file.h
       via  38f7f8e s3:dbwrap: move the db_open_tdb() prototype to a new header dbwrap_tdb.h
       via  82bc3fa s3:dbwrap: move the db_open_ctdb() prototype to a new header dbwrap_ctdb.h
      from  b3b6906 s3:vfs_acl_common: also parse xattr.NTACL version 1

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 67600117610eda2bd7ad2802bcc7a9147720e659
Author: Michael Adam <obnox at samba.org>
Date:   Thu Oct 6 21:29:04 2011 +0200

    s3:dbwrap: change dbwrap_store_uint32() to NTSTATUS return type
    
    for consistency and better error propagation
    
    Autobuild-User: Michael Adam <obnox at samba.org>
    Autobuild-Date: Tue Oct 11 15:51:00 CEST 2011 on sn-devel-104

commit c9bc1e492404077c6b40b5cefe33e859503a4227
Author: Michael Adam <obnox at samba.org>
Date:   Thu Oct 6 21:24:07 2011 +0200

    s3:dbwrap: change dbwrap_store_int32() to NTSTATUS return type
    
    for consistency and better error propagation

commit 658f72128ff6950c6a03994198b4464a273fb300
Author: Michael Adam <obnox at samba.org>
Date:   Thu Oct 6 21:07:27 2011 +0200

    s3:dbwrap: change dbwrap_fetch_uint32() to NTSTATUS return type (instead of bool)
    
    for consistency and better error propagation

commit 603c3e1bcb7b4106afe4aefdfed43e7832ede956
Author: Michael Adam <obnox at samba.org>
Date:   Thu Oct 6 20:34:55 2011 +0200

    s3:dbwrap: convert dbwrap_fetch_int32() to NTSTATUS return code
    
    Return the int32 value retrieved from the db by reference.
    Before this, return value "-1" was used as a error indication,
    but it could also be a valid value from the database.

commit ce8626cbbe99b26f4e39ace87221792b468b9c93
Author: Michael Adam <obnox at samba.org>
Date:   Thu Oct 6 20:28:39 2011 +0200

    s3:idmap_tdb2: fix hwm-handling to use uint32 consistently
    
    The initialization code user int32, later writes used uint32...

commit ba88e4e0d86302e7efe2398d5be5cfb32c0dbdeb
Author: Michael Adam <obnox at samba.org>
Date:   Thu Oct 6 20:19:41 2011 +0200

    s3:idmap_tdb: fix hwm-handling to use uint32 consistently
    
    The initialization code user int32, later writes used uint32...

commit f03e4aea66aa59662a49b3dc60917d7b619d7af2
Author: Michael Adam <obnox at samba.org>
Date:   Thu Oct 6 20:00:17 2011 +0200

    s3:passdb:account_pol: use dbwrap_fetch_uint32, not dbwrap_fetch_int32 for the DB version
    
    This is also stored as uint32_t.

commit f8cad3a7683c7d026a1a038688c3b7b649db48fc
Author: Michael Adam <obnox at samba.org>
Date:   Thu Oct 6 19:22:51 2011 +0200

    s3:idmap_autorid: make a debug message more precise

commit b4e528ab54bbca8968cf8f601dd65e3b80cad9a2
Author: Michael Adam <obnox at samba.org>
Date:   Thu Oct 6 19:17:25 2011 +0200

    s3:idmap_autorid: untangle function from check and log status in idmap_autorid_db_init()

commit 8750e3f22c9b62840fd7e90eb99b95204542a592
Author: Michael Adam <obnox at samba.org>
Date:   Wed Aug 24 14:53:42 2011 +0200

    s3:dbwrap: move definitions of db_record and db_contect structs to dbwrap_private.h
    
    The API and callers now only need the forward declarations.

commit 6fb5c47f21a4b0d5998de37d13b3cab61afd5bac
Author: Michael Adam <obnox at samba.org>
Date:   Thu Aug 25 10:59:06 2011 +0200

    s3:torture: convert torture.c to only use dbwrap wrapper functions
    
    Avoid direct use of the db_record and db_context structs.

commit 311ed56afe147634d55b39d00b8c3c26ad961fad
Author: Michael Adam <obnox at samba.org>
Date:   Thu Aug 25 01:22:43 2011 +0200

    s3:locking: convert posix.c to use dbwrap wrapper functions only
    
    Avoid direct use of the db_record and db_context structs.

commit f0ab22e6eccb6bb502094afdf14362641e37f1a5
Author: Michael Adam <obnox at samba.org>
Date:   Wed Aug 17 11:28:12 2011 +0200

    s3:locking: convert locking.c to use dbwrap wrapper functions only
    
    Avoid direct use of the db_record and db_context structs.

commit 5cbc505e6d6bfcc02b2764a2d9c5310095f4ad4c
Author: Michael Adam <obnox at samba.org>
Date:   Wed Aug 17 10:53:58 2011 +0200

    s3:locking: convert brlock to only use dbwrap wrapper functions
    
    Avoid direct use of the db_record and db_context structs.

commit e2328ac33cb0e62b0afbf87787ae2a1d23af5be0
Author: Michael Adam <obnox at samba.org>
Date:   Wed Aug 24 15:47:46 2011 +0200

    s3:messages: convert to use only dbwrap wrapper functions
    
    Avoid direct use of the db_record and db_context structs.

commit 82428adee630ce1bba691543562c70ecceb6d7a4
Author: Michael Adam <obnox at samba.org>
Date:   Wed Aug 17 11:18:49 2011 +0200

    s3:groupdb: convert mapping_tdb.c to use dbwrap wrapper functions only

commit 33405972b233055dbae0e0d88710ce2b7d59c4c3
Author: Michael Adam <obnox at samba.org>
Date:   Thu Aug 25 00:49:17 2011 +0200

    s3:rpc_server: convert srvsvc to only use dbwrap wrapper functions
    
    Avoid direct use of the db_record and db_context structs.

commit 506349832ce2f323313b7f2eb043e0ae8d63e63a
Author: Michael Adam <obnox at samba.org>
Date:   Thu Aug 25 01:35:16 2011 +0200

    s3:smbd: convert notify db to use dbwrap wrapper functions
    
    Avoid direct use of the db_record and db_context structs.

commit ec057c369f64b35853c13c54af94c3bf5bebd630
Author: Michael Adam <obnox at samba.org>
Date:   Thu Aug 25 00:46:42 2011 +0200

    s3:smbd: convert session.c to use dbwrap wrapper functions only
    
    Avoid direct use of the db_record and db_context structs.

commit 43a13b55fc75c24a4a90c271d5ea6ea8f468b6cf
Author: Michael Adam <obnox at samba.org>
Date:   Thu Aug 25 00:42:10 2011 +0200

    s3:smbd: convert connections.c to use only dbrwap wrapper functions
    
    Avoid direct use of the db_record and db_context structs.

commit 608ac61729b96ed301524eb0cd64281fa68ec393
Author: Michael Adam <obnox at samba.org>
Date:   Thu Aug 25 00:01:44 2011 +0200

    s3:conn_tdb: convert connections tdb to only use dbwrap wrapper functions
    
    Avoid direct use of the db_record and db_context structs.

commit 4bfda2d3feca228d83f3dde0f08d66bd4dfe27aa
Author: Michael Adam <obnox at samba.org>
Date:   Wed Aug 24 15:40:09 2011 +0200

    s3:vfs: convert the acl_tdb module to use dbwrap wrapper functions.
    
    Avoid direct use of the db_record and db_context structs.

commit 4cb75bdbb1b2e9c40a31992e1ac23125098b2d42
Author: Michael Adam <obnox at samba.org>
Date:   Wed Aug 24 15:36:31 2011 +0200

    s3:vfs: convert nfs4_acls sidmap db code to use dbwrap_wrapper functions
    
    Avoid direct use of the db_record and db_context structs.

commit ceb9f572abda526e01d9b5f35158464768119c96
Author: Michael Adam <obnox at samba.org>
Date:   Wed Aug 24 15:32:59 2011 +0200

    s3:vfs: change the xattr_tdb module to use dbwrap wrapper functions
    
    Avoid direct use of the db_record and db_context structs.

commit c7c1a3e2768c83579069ba0c5667490307d541e0
Author: Michael Adam <obnox at samba.org>
Date:   Wed Aug 17 11:49:59 2011 +0200

    s3:printing: convert printer_list to use dbwrap wrapper functions
    
    Avoid direct use of the db_record and db_context structs.

commit 3f214284c71a07b8153b9c94d97cd869872007c2
Author: Michael Adam <obnox at samba.org>
Date:   Thu Aug 25 00:30:15 2011 +0200

    s3:secrets: convert to use dbwrap wrapper functions only
    
    Avoid direct use of the db_record and db_context structs.

commit 8b4845bd75805e4bcb9082c798f8d4a48ad24e20
Author: Michael Adam <obnox at samba.org>
Date:   Thu Aug 25 00:38:51 2011 +0200

    s3:passdb: convert account_pol to use dbwrap wrapper functions only
    
    Avoid direct use of the db_record and db_context structs.

commit 8b4dd99dae73462e019d160c94b9a1e92f30eec4
Author: Michael Adam <obnox at samba.org>
Date:   Thu Aug 25 00:36:05 2011 +0200

    s3:passdb: convert machine_sid to use dbwrap wrapper functions only
    
    Avoid direct use of the db_record and db_context structs.

commit a91f06a7226812ec5725b05dede78c9f89e315b5
Author: Michael Adam <obnox at samba.org>
Date:   Wed Aug 17 10:58:15 2011 +0200

    s3:passdb: convert pdb_tdb to use dbwrap wrapper functions.
    
    Avoid direct use of the db_record and db_context structs

commit 7458aac0f1e600c55627239c3020bc84ce88356a
Author: Michael Adam <obnox at samba.org>
Date:   Wed Aug 24 15:27:00 2011 +0200

    s3:net: convert net idmap check to use dbwrap wrapper functions.
    
    Avoid direct use of the db_record and db_context structs.

commit 1f57f9ed131db5dc4481a88680d7072728671cd1
Author: Michael Adam <obnox at samba.org>
Date:   Wed Aug 17 11:47:48 2011 +0200

    s3:net: convert net idmap to use only dbwrap wrapper functions
    
    Avoid direct use of the db_record and db_context structs.

commit 3d52de343ae7623f9e1821dc53e06c1bf385d8e9
Author: Michael Adam <obnox at samba.org>
Date:   Wed Aug 17 11:45:31 2011 +0200

    s3:idmap: convert idmap_tdb to use dbwrap wrapper functions.
    
    Avoid direct use of the db_record and db_context structs.

commit f1057ac3dd77989c8f91c4c0aeff9d7af45bc1d9
Author: Michael Adam <obnox at samba.org>
Date:   Thu Aug 25 10:50:01 2011 +0200

    s3:libnet: convert libnet_dssync_passdb to only use dbwrap wrapper functions.
    
    Avoid direct use of the db_record and db_context structs.

commit 79a4911d755a320557ca1a2d53525a7f56953a68
Author: Michael Adam <obnox at samba.org>
Date:   Wed Aug 17 11:24:09 2011 +0200

    s3:privileges: convert privileges.c to use dbwrap wrapper functions.
    
    Avoid direct use of the db_record and db_context structs.

commit 736af260628aa725aa8c45410722e9fe9db9a80b
Author: Michael Adam <obnox at samba.org>
Date:   Wed Aug 17 11:21:31 2011 +0200

    s3:g_lock: convert to use only dbwrap wrapper functions.
    
    Avoid direct use of the db_record and db_context structs.

commit 7057b4d1ac196907e4fd860a7a6f12fdcfe73606
Author: Michael Adam <obnox at samba.org>
Date:   Wed Aug 17 11:40:50 2011 +0200

    s3:registry: convert reg_backend_db to use dbwrap wrapper functions
    
    Avoid direct use of the db_record and db_context structs

commit ff7918770db3be78a22d0be83415698ad03036e0
Author: Michael Adam <obnox at samba.org>
Date:   Wed Aug 17 10:50:31 2011 +0200

    s3:talloc_dict: change to only use dbwrap wrapper functions
    
    Avoid direct use of the db_record and db_context structs.

commit 248cb2310c1b338da60d7849c8006a4a5ad5fa84
Author: Michael Adam <obnox at samba.org>
Date:   Wed Aug 17 10:46:22 2011 +0200

    s3:sharesec: convert sharesec.c to use dbwrap wrapper functions
    
    Avoid direct use of the db_record and db_context structs

commit bbe78110194712b5ff06f1420ce628cb78c7e269
Author: Michael Adam <obnox at samba.org>
Date:   Thu Aug 25 00:08:36 2011 +0200

    s3:sessionid: convert to using dbwrap wrapper functions only
    
    Avoid direct use of the db_record and db_context structs.

commit bdee9458f66210a06eb29836a66e14d5d8a7fd33
Author: Michael Adam <obnox at samba.org>
Date:   Wed Aug 17 10:33:58 2011 +0200

    s3:sessionid: use dbwrap_travers_read() in sessionid_travers_read()
    
    This also changes the return code of sessionid_traverse_read() to NTSTATUS.
    It also uses traverse_read instead of traverse.

commit 6656de134612935ed12643064f307cb995cd5cbc
Author: Michael Adam <obnox at samba.org>
Date:   Wed Aug 17 10:20:46 2011 +0200

    s3:sessionid: use dbwrap_travers() in sessionid_traverse()
    
    This also changes sessionid_traverse to NTSTATUS return type.

commit c8924ecc41db8da01d2918c9b82abc2cfce4351f
Author: Michael Adam <obnox at samba.org>
Date:   Thu Aug 25 10:39:53 2011 +0200

    s3:net: convert net serverid to only use dbwrap wrapper functions
    
    Avoid direct use of the db_record and db_context structs.

commit 85ae3c3fd46a1ac6f55cb47a7fc4f83b9d53b3cf
Author: Michael Adam <obnox at samba.org>
Date:   Wed Aug 24 22:28:40 2011 +0200

    s3:serverid: convert to using dbwrap wrapper functions only
    
    Avoid direct use of the db_record and db_context structs.

commit 5bfdd73a642616dbeeda30d812f85a0f91f25139
Author: Michael Adam <obnox at samba.org>
Date:   Wed Aug 17 10:10:45 2011 +0200

    s3:net: fix the exit code of net serverid wipe

commit 86455646e32055b7eba6bce42777e05f6b2cebfb
Author: Michael Adam <obnox at samba.org>
Date:   Wed Aug 17 10:09:57 2011 +0200

    s3:net: fix the exit code of net serverid list

commit 91e77f364018eae88344e472516573a51c38170d
Author: Michael Adam <obnox at samba.org>
Date:   Wed Aug 17 10:08:31 2011 +0200

    s3:serverid: use dbwrap_traverse_read() in serverid_traverse_read()
    
    This also fixes the return value: originally the int return value
    of traverse_read which is a count of the records traversed or negative
    upon failure, was simply casted into a bool return value.

commit 81258c01b84de488cb3d33139357fe839c1f3323
Author: Michael Adam <obnox at samba.org>
Date:   Wed Aug 17 10:06:07 2011 +0200

    s3:serverid: use dbwrap_traverse() in serverid_traverse()
    
    This also fixes the return value: Originally, the int returned
    by the traverse method, which is the count of the traverse was
    casted into a bool return value.

commit 0b7108b342c5ae6fefdd76b3dad1a7b17f6f835b
Author: Michael Adam <obnox at samba.org>
Date:   Fri Aug 19 10:55:22 2011 +0200

    s3:dbwrap_torture: convert to using wrapper functions only

commit 64748e8eecf520d7e32bb37c8743f870bf4a0fc5
Author: Michael Adam <obnox at samba.org>
Date:   Wed Aug 17 11:42:45 2011 +0200

    s3:dbwrap_tool: convert to using wrapper functions only

commit f21a66f70bb771a61a353c7e01e89f5873573995
Author: Michael Adam <obnox at samba.org>
Date:   Wed Aug 24 01:01:38 2011 +0200

    s3:dbwrap: convert dbwrap_util.c to use dbwrap wrapper functions

commit e39cd86381404f451668967be05c7cfbb1649bbd
Author: Michael Adam <obnox at samba.org>
Date:   Wed Aug 24 13:15:48 2011 +0200

    s3:dbwrap: use dbwrap_fetch_bystring() in dbwrap_fetch_[u]int32()

commit 0e28448a780cf231ae38fe03a85cf6e1ea9dded0
Author: Michael Adam <obnox at samba.org>
Date:   Wed Aug 24 13:08:13 2011 +0200

    s3:dbwrap: convert dbwrap_fetch(), dbwrap_fetch_bystring() and dbwrap_fetch_bystring_upper() to NTSTATUS

commit 25a9978c2c4d00eb64b212170f64f5cc136e032a
Author: Michael Adam <obnox at samba.org>
Date:   Fri Aug 19 10:53:29 2011 +0200

    s3:dbwrap: add dbwrap_fetch_locked(), a wrapper for db->fetch_locked

commit 46370441b7bc9a205b13b07ab93b97f44bf34b78
Author: Michael Adam <obnox at samba.org>
Date:   Fri Aug 19 10:52:57 2011 +0200

    s3:dbwrap: add dbwrap_record_delete(), a wrapper for record->delete_rec

commit b257e83d898d1e848d3adbed540a7b209943ff34
Author: Michael Adam <obnox at samba.org>
Date:   Fri Aug 19 10:51:27 2011 +0200

    s3:dbwrap: add dbwrap_record_store(), a wrapper for record->store

commit bfed62c1695391076c1d82b312030adca8d971e5
Author: Michael Adam <obnox at samba.org>
Date:   Fri Aug 19 10:50:20 2011 +0200

    s3:dbwrap: add get-functions for db_record key, value and private_data

commit 3ed2fb4a874e8c271fa5976efcc1b0938872c708
Author: Michael Adam <obnox at samba.org>
Date:   Thu Aug 18 14:09:56 2011 +0200

    s3:dbwrap: add wrapper function dbwrap_get_seqnum()

commit 373b0606a35bfb213411dde163058d6ae0486f06
Author: Michael Adam <obnox at samba.org>
Date:   Wed Aug 17 22:51:12 2011 +0200

    s3:dbwrap: add wrappers for transactions start/cancel/commit

commit d8ce5bc656a673612f6587fefbe3acb08d5d8fa0
Author: Michael Adam <obnox at samba.org>
Date:   Wed Aug 17 22:43:01 2011 +0200

    s3:dbwrap: add wrapper dbwrap_get_flags()

commit 7b9bf285140d937de41945170108d9f193baeefd
Author: Gregor Beck <gbeck at sernet.de>
Date:   Wed Aug 17 11:44:12 2011 +0200

    s3:dbwrap: fix db_rbt_traverse() to return the record count on success
    
    this makes it consistent with documented behaviour of tdb_traverse()
    
    Signed-off-by: Michael Adam <obnox at samba.org>

commit ebcb92118241a5bd4be92374b1c257236ba3b1db
Author: Gregor Beck <gbeck at sernet.de>
Date:   Tue Aug 16 14:55:30 2011 +0200

    s3:dbwrap: add specific dbwrap_wipe() implementation to dbwrap_rbt
    
    Signed-off-by: Michael Adam <obnox at samba.org>

commit 97fef0c2fd7dc622bb11cfc374e88f82b77086cf
Author: Gregor Beck <gbeck at sernet.de>
Date:   Tue Aug 16 14:43:29 2011 +0200

    s3:dbwrap: add specific dbwrap_wipe() implementation to dbwrap_tdb
    
    Signed-off-by: Michael Adam <obnox at samba.org>

commit 3dc607c0c6f5b22c95aa88b334f9c0cd2dc8f226
Author: Michael Adam <obnox at samba.org>
Date:   Wed Aug 17 14:42:50 2011 +0200

    s3:dbwrap: add a comment

commit dc4a5f532392bb7e047b11017fa7916a68d67192
Author: Gregor Beck <gbeck at sernet.de>
Date:   Tue Aug 16 14:39:19 2011 +0200

    s3:dbwrap: add function dbwrap_wipe()
    
    Signed-off-by: Michael Adam <obnox at samba.org>

commit 63c5c0eccf3df89135c4e18f5660e6f94978e3d3
Author: Gregor Beck <gbeck at sernet.de>
Date:   Tue Jul 5 15:06:05 2011 +0200

    s3:dbwrap: add specific dbwrap_parse_record() implementation to dbwrap_rbt
    
    Signed-off-by: Michael Adam <obnox at samba.org>

commit c5d03cbff806c564d4903277bd2b866ba8bf9c7e
Author: Gregor Beck <gbeck at sernet.de>
Date:   Tue Jul 5 13:43:59 2011 +0200

    s3:dbwrap: implement dbwrap_fallback_exists() with dbwrap_parse_record()
    
    Signed-off-by: Michael Adam <obnox at samba.org>

commit 99fa6fa4a3845cdb6cbc6be0cdcdf1d8a4b49a3c
Author: Gregor Beck <gbeck at sernet.de>
Date:   Tue Jul 5 13:42:39 2011 +0200

    s3:dbwrap: allow NULL parser for dbwrap_parse_record()
    
    Signed-off-by: Michael Adam <obnox at samba.org>

commit f5b7d87c2563d0753445da8c1b75e67bd7668967
Author: Gregor Beck <gbeck at sernet.de>
Date:   Tue Jul 5 13:41:12 2011 +0200

    s3:dbwrap: dbwrap_parse_record() should always return -1 on "not found"
    
    Signed-off-by: Michael Adam <obnox at samba.org>

commit 893805b99caeb6645c0688c9ec5b9466947dc454
Author: Gregor Beck <gbeck at sernet.de>
Date:   Tue Jul 5 13:10:30 2011 +0200

    s3:dbwrap: add function dbwrap_parse_record()
    
    Signed-off-by: Michael Adam <obnox at samba.org>

commit fff09d066f5b5ba82e268f4251802fd7f3006a5e
Author: Gregor Beck <gbeck at sernet.de>
Date:   Mon Jul 4 10:22:46 2011 +0200

    s3:dbwrap: add specific dbwrap_exists() implementation to dbwrap_rbt

commit 28e4c41d5b69b126d17b2d9cc7452c051f083878
Author: Gregor Beck <gbeck at sernet.de>
Date:   Mon Jul 4 09:54:31 2011 +0200

    s3:dbwrap: factor out db_rpt_search_internal()
    
    Signed-off-by: Michael Adam <obnox at samba.org>

commit 5953839b1890eaf36a3d9a3fd7febe65524a9980
Author: Gregor Beck <gbeck at sernet.de>
Date:   Mon Jul 4 10:27:17 2011 +0200

    s3:dbwrap: add specific dbwrap_exists() implementation to dbwrap_tdb
    
    Signed-off-by: Michael Adam <obnox at samba.org>

commit 87b68cea5bdec1849a275b37ea8a80a73d036734
Author: Gregor Beck <gbeck at sernet.de>
Date:   Mon Jul 4 10:15:44 2011 +0200

    s3:dbwrap: add function dbwrap_exists()
    
    Signed-off-by: Michael Adam <obnox at samba.org>

commit 87f51bfa99889c4700697556466cc694e2e6644d
Author: Michael Adam <obnox at samba.org>
Date:   Wed Aug 17 09:59:25 2011 +0200

    s3:dbwrap: add a wrapper dbwrap_traverse_read()

commit 8f098a635f713652c4846d71e24c0a199c25b8b7
Author: Michael Adam <obnox at samba.org>
Date:   Wed Aug 17 09:51:12 2011 +0200

    s3:dbwrap: change the dbwrap_traverse() wrapper to return the count in an additional parameter

commit 6608ba850b45e2f47cd1c2c4b1ad676150a1deea
Author: Michael Adam <obnox at samba.org>
Date:   Wed Aug 17 08:45:09 2011 +0200

    s3:dbwrap: reorganize dbwrap.h some

commit 2d52f6f8f5ea579fbbfff2d42a4ba9ed897a60ff
Author: Michael Adam <obnox at samba.org>
Date:   Wed Aug 17 08:40:53 2011 +0200

    s3:dbwrap: move dbwrap_traverse() to dbwrap.c, the core of the dbrwap subsystem

commit 663c661b11396076a079a99d1f66fafb732af1d8
Author: Michael Adam <obnox at samba.org>
Date:   Wed Aug 17 08:38:39 2011 +0200

    s3:dbwrap: move dbwrap_store() back to dbwrap.c, the core of the dbwrap subsystem

commit 2aa5601c0aa1c38e2cb3b86331b746261e74b2ce
Author: Michael Adam <obnox at samba.org>
Date:   Wed Aug 17 08:36:52 2011 +0200

    s3:dbwrap: move dbwrap_delete() back to dbwrap.c, the core of the dbwrap subsystem

commit c3868b74889ccce800557a64d2a5ae6a8891a8ee
Author: Michael Adam <obnox at samba.org>
Date:   Wed Aug 17 08:35:21 2011 +0200

    s3:dbwrap: move dbwrap_fetch() back to dbwrap.c, the core of the dbwrap subsystem

commit 7a72c84ee74cb91fd9e98b1edc74e6b3c2ba1c36
Author: Michael Adam <obnox at samba.org>
Date:   Tue Aug 16 16:20:14 2011 +0200

    s3:dbwrap: move the db_open_rbt() prototype to a new header dbwrap_rbt.h

commit c768121661cf5e845ceca3b04181937c36106484
Author: Michael Adam <obnox at samba.org>
Date:   Tue Aug 16 16:02:19 2011 +0200

    s3:dbwrap: move the db_open_file() prototype to a new header dbwrap_file.h

commit 38f7f8e44dd4392097f780175f8599076002f461
Author: Michael Adam <obnox at samba.org>
Date:   Tue Aug 16 15:58:27 2011 +0200

    s3:dbwrap: move the db_open_tdb() prototype to a new header dbwrap_tdb.h

commit 82bc3fa81cc1037e004b94dde7050efc50722294
Author: Michael Adam <obnox at samba.org>
Date:   Tue Aug 16 15:51:58 2011 +0200

    s3:dbwrap: move the db_open_ctdb() prototype to a new header dbwrap_ctdb.h

-----------------------------------------------------------------------

Summary of changes:
 source3/groupdb/mapping_tdb.c                      |   61 ++++---
 source3/include/proto.h                            |   10 +-
 source3/lib/conn_tdb.c                             |   58 +++++--
 source3/lib/dbwrap/dbwrap.c                        |  209 +++++++++++++++++++-
 source3/lib/dbwrap/dbwrap.h                        |  120 +++++-------
 source3/lib/dbwrap/dbwrap_ctdb.c                   |    2 +
 .../winbindd_async.c => lib/dbwrap/dbwrap_ctdb.h}  |   32 ++--
 source3/lib/dbwrap/dbwrap_file.c                   |    1 +
 .../lib/dbwrap/dbwrap_file.h                       |   28 ++--
 source3/lib/dbwrap/dbwrap_open.c                   |    5 +
 source3/lib/dbwrap/dbwrap_private.h                |   37 ++++
 source3/lib/dbwrap/dbwrap_rbt.c                    |  141 +++++++++-----
 .../{passdb/pdb_ipa.h => lib/dbwrap/dbwrap_rbt.h}  |   17 +-
 source3/lib/dbwrap/dbwrap_tdb.c                    |   18 ++
 .../lib/dbwrap/dbwrap_tdb.h                        |   27 ++--
 source3/lib/dbwrap/dbwrap_util.c                   |  196 ++++++++-----------
 source3/lib/g_lock.c                               |   45 +++--
 source3/lib/messages.c                             |    2 +-
 source3/lib/privileges.c                           |   35 +++-
 source3/lib/serverid.c                             |   51 +++--
 source3/lib/sessionid_tdb.c                        |   56 ++++--
 source3/lib/sharesec.c                             |   84 +++++---
 source3/lib/talloc_dict.c                          |   57 ++++--
 source3/libnet/libnet_dssync_passdb.c              |   81 +++++---
 source3/locking/brlock.c                           |   43 +++--
 source3/locking/locking.c                          |   43 +++--
 source3/locking/posix.c                            |   70 ++++---
 source3/modules/nfs4_acls.c                        |    6 +-
 source3/modules/vfs_acl_tdb.c                      |   27 ++--
 source3/modules/vfs_xattr_tdb.c                    |   29 ++-
 source3/param/loadparm.c                           |   22 ++-
 source3/passdb/account_pol.c                       |   33 +++-
 source3/passdb/machine_account_secrets.c           |    2 +-
 source3/passdb/machine_sid.c                       |    6 +-
 source3/passdb/pdb_tdb.c                           |  162 +++++++++-------
 source3/passdb/secrets.c                           |   19 ++-
 source3/printing/printer_list.c                    |   41 +++--
 source3/registry/reg_backend_db.c                  |  107 ++++++----
 source3/registry/reg_objects.c                     |    7 +-
 source3/rpc_server/srvsvc/srv_srvsvc_nt.c          |    7 +-
 source3/smbd/connection.c                          |    6 +-
 source3/smbd/notify_internal.c                     |   58 +++---
 source3/smbd/session.c                             |   24 ++-
 source3/torture/torture.c                          |   56 ++++--
 source3/utils/dbwrap_tool.c                        |   34 ++--
 source3/utils/dbwrap_torture.c                     |   16 +-
 source3/utils/net_idmap.c                          |   69 ++++---
 source3/utils/net_idmap_check.c                    |  105 +++++++----
 source3/utils/net_serverid.c                       |   10 +-
 source3/winbindd/idmap_autorid.c                   |   65 ++++--
 source3/winbindd/idmap_tdb.c                       |  130 ++++++++-----
 source3/winbindd/idmap_tdb2.c                      |   32 ++--
 52 files changed, 1655 insertions(+), 947 deletions(-)
 copy source3/{winbindd/winbindd_async.c => lib/dbwrap/dbwrap_ctdb.h} (61%)
 copy source4/winbind/wb_async_helpers.h => source3/lib/dbwrap/dbwrap_file.h (66%)
 copy source3/{passdb/pdb_ipa.h => lib/dbwrap/dbwrap_rbt.h} (71%)
 copy source4/winbind/wb_async_helpers.h => source3/lib/dbwrap/dbwrap_tdb.h (65%)


Changeset truncated at 500 lines:

diff --git a/source3/groupdb/mapping_tdb.c b/source3/groupdb/mapping_tdb.c
index 47f743d..447f187 100644
--- a/source3/groupdb/mapping_tdb.c
+++ b/source3/groupdb/mapping_tdb.c
@@ -173,6 +173,7 @@ static bool get_group_map_from_sid(struct dom_sid sid, GROUP_MAP *map)
 	TDB_DATA dbuf;
 	char *key;
 	int ret = 0;
+	NTSTATUS status;
 
 	/* the key is the SID, retrieving is direct */
 
@@ -181,8 +182,8 @@ static bool get_group_map_from_sid(struct dom_sid sid, GROUP_MAP *map)
 		return false;
 	}
 
-	dbuf = dbwrap_fetch_bystring(db, key, key);
-	if (dbuf.dptr == NULL) {
+	status = dbwrap_fetch_bystring(db, key, key, &dbuf);
+	if (!NT_STATUS_IS_OK(status)) {
 		TALLOC_FREE(key);
 		return false;
 	}
@@ -205,18 +206,21 @@ static bool get_group_map_from_sid(struct dom_sid sid, GROUP_MAP *map)
 
 static bool dbrec2map(const struct db_record *rec, GROUP_MAP *map)
 {
-	if ((rec->key.dsize < strlen(GROUP_PREFIX))
-	    || (strncmp((char *)rec->key.dptr, GROUP_PREFIX,
+	TDB_DATA key = dbwrap_record_get_key(rec);
+	TDB_DATA value = dbwrap_record_get_value(rec);
+
+	if ((key.dsize < strlen(GROUP_PREFIX))
+	    || (strncmp((char *)key.dptr, GROUP_PREFIX,
 			GROUP_PREFIX_LEN) != 0)) {
 		return False;
 	}
 
-	if (!string_to_sid(&map->sid, (const char *)rec->key.dptr
+	if (!string_to_sid(&map->sid, (const char *)key.dptr
 			   + GROUP_PREFIX_LEN)) {
 		return False;
 	}
 
-	return tdb_unpack(rec->value.dptr, rec->value.dsize, "ddff",
+	return tdb_unpack(value.dptr, value.dsize, "ddff",
 			  &map->gid, &map->sid_name_use, &map->nt_name,
 			  &map->comment) != -1;
 }
@@ -266,7 +270,7 @@ static bool get_group_map_from_gid(gid_t gid, GROUP_MAP *map)
 	state.gid = gid;
 	state.map = map;
 
-	db->traverse_read(db, find_map, (void *)&state);
+	dbwrap_traverse_read(db, find_map, (void *)&state, NULL);
 
 	return state.found;
 }
@@ -283,7 +287,7 @@ static bool get_group_map_from_ntname(const char *name, GROUP_MAP *map)
 	state.name = name;
 	state.map = map;
 
-	db->traverse_read(db, find_map, (void *)&state);
+	dbwrap_traverse_read(db, find_map, (void *)&state, NULL);
 
 	return state.found;
 }
@@ -370,6 +374,7 @@ static bool enum_group_mapping(const struct dom_sid *domsid,
 			       size_t *p_num_entries, bool unix_only)
 {
 	struct enum_map_state state;
+	NTSTATUS status;
 
 	state.domsid = domsid;
 	state.sid_name_use = sid_name_use;
@@ -377,7 +382,8 @@ static bool enum_group_mapping(const struct dom_sid *domsid,
 	state.num_maps = 0;
 	state.maps = NULL;
 
-	if (db->traverse_read(db, collect_map, (void *)&state) < 0) {
+	status = dbwrap_traverse_read(db, collect_map, (void *)&state, NULL);
+	if (!NT_STATUS_IS_OK(status)) {
 		return false;
 	}
 
@@ -404,8 +410,8 @@ static NTSTATUS one_alias_membership(const struct dom_sid *member,
 	slprintf(key, sizeof(key), "%s%s", MEMBEROF_PREFIX,
 		 sid_to_fstring(tmp, member));
 
-	dbuf = dbwrap_fetch_bystring(db, frame, key);
-	if (dbuf.dptr == NULL) {
+	status = dbwrap_fetch_bystring(db, frame, key, &dbuf);
+	if (!NT_STATUS_IS_OK(status)) {
 		TALLOC_FREE(frame);
 		return NT_STATUS_OK;
 	}
@@ -478,6 +484,7 @@ static NTSTATUS add_aliasmem(const struct dom_sid *alias, const struct dom_sid *
 	char *new_memberstring;
 	struct db_record *rec;
 	NTSTATUS status;
+	TDB_DATA value;
 
 	if (!get_group_map_from_sid(*alias, &map))
 		return NT_STATUS_NO_SUCH_ALIAS;
@@ -497,12 +504,12 @@ static NTSTATUS add_aliasmem(const struct dom_sid *alias, const struct dom_sid *
 		return NT_STATUS_NO_MEMORY;
 	}
 
-	if (db->transaction_start(db) != 0) {
+	if (dbwrap_transaction_start(db) != 0) {
 		DEBUG(0, ("transaction_start failed\n"));
 		return NT_STATUS_INTERNAL_DB_CORRUPTION;
 	}
 
-	rec = db->fetch_locked(db, key, string_term_tdb_data(key));
+	rec = dbwrap_fetch_locked(db, key, string_term_tdb_data(key));
 
 	if (rec == NULL) {
 		DEBUG(10, ("fetch_lock failed\n"));
@@ -511,11 +518,13 @@ static NTSTATUS add_aliasmem(const struct dom_sid *alias, const struct dom_sid *
 		goto cancel;
 	}
 
+	value = dbwrap_record_get_value(rec);
+
 	sid_to_fstring(string_sid, alias);
 
-	if (rec->value.dptr != NULL) {
+	if (value.dptr != NULL) {
 		new_memberstring = talloc_asprintf(
-			key, "%s %s", (char *)(rec->value.dptr), string_sid);
+			key, "%s %s", (char *)(value.dptr), string_sid);
 	} else {
 		new_memberstring = talloc_strdup(key, string_sid);
 	}
@@ -526,7 +535,7 @@ static NTSTATUS add_aliasmem(const struct dom_sid *alias, const struct dom_sid *
 		goto cancel;
 	}
 
-	status = rec->store(rec, string_term_tdb_data(new_memberstring), 0);
+	status = dbwrap_record_store(rec, string_term_tdb_data(new_memberstring), 0);
 
 	TALLOC_FREE(key);
 
@@ -535,7 +544,7 @@ static NTSTATUS add_aliasmem(const struct dom_sid *alias, const struct dom_sid *
 		goto cancel;
 	}
 
-	if (db->transaction_commit(db) != 0) {
+	if (dbwrap_transaction_commit(db) != 0) {
 		DEBUG(0, ("transaction_commit failed\n"));
 		status = NT_STATUS_INTERNAL_DB_CORRUPTION;
 		return status;
@@ -544,7 +553,7 @@ static NTSTATUS add_aliasmem(const struct dom_sid *alias, const struct dom_sid *
 	return NT_STATUS_OK;
 
  cancel:
-	if (db->transaction_cancel(db) != 0) {
+	if (dbwrap_transaction_cancel(db) != 0) {
 		smb_panic("transaction_cancel failed");
 	}
 
@@ -564,12 +573,14 @@ static int collect_aliasmem(struct db_record *rec, void *priv)
 	const char *p;
 	char *alias_string;
 	TALLOC_CTX *frame;
+	TDB_DATA key = dbwrap_record_get_key(rec);
+	TDB_DATA value = dbwrap_record_get_value(rec);
 
-	if (strncmp((const char *)rec->key.dptr, MEMBEROF_PREFIX,
+	if (strncmp((const char *)key.dptr, MEMBEROF_PREFIX,
 		    MEMBEROF_PREFIX_LEN) != 0)
 		return 0;
 
-	p = (const char *)rec->value.dptr;
+	p = (const char *)value.dptr;
 
 	frame = talloc_stackframe();
 
@@ -588,7 +599,7 @@ static int collect_aliasmem(struct db_record *rec, void *priv)
 		 * list currently scanned. The key represents the alias
 		 * member. Add that. */
 
-		member_string = strchr((const char *)rec->key.dptr, '/');
+		member_string = strchr((const char *)key.dptr, '/');
 
 		/* Above we tested for MEMBEROF_PREFIX which includes the
 		 * slash. */
@@ -635,7 +646,7 @@ static NTSTATUS enum_aliasmem(const struct dom_sid *alias, TALLOC_CTX *mem_ctx,
 	state.num = num;
 	state.mem_ctx = mem_ctx;
 
-	db->traverse_read(db, collect_aliasmem, &state);
+	dbwrap_traverse_read(db, collect_aliasmem, &state, NULL);
 	return NT_STATUS_OK;
 }
 
@@ -649,7 +660,7 @@ static NTSTATUS del_aliasmem(const struct dom_sid *alias, const struct dom_sid *
 	char *key;
 	fstring sid_string;
 
-	if (db->transaction_start(db) != 0) {
+	if (dbwrap_transaction_start(db) != 0) {
 		DEBUG(0, ("transaction_start failed\n"));
 		return NT_STATUS_INTERNAL_DB_CORRUPTION;
 	}
@@ -724,7 +735,7 @@ static NTSTATUS del_aliasmem(const struct dom_sid *alias, const struct dom_sid *
 		goto cancel;
 	}
 
-	if (db->transaction_commit(db) != 0) {
+	if (dbwrap_transaction_commit(db) != 0) {
 		DEBUG(0, ("transaction_commit failed\n"));
 		status = NT_STATUS_INTERNAL_DB_CORRUPTION;
 		return status;
@@ -733,7 +744,7 @@ static NTSTATUS del_aliasmem(const struct dom_sid *alias, const struct dom_sid *
 	return NT_STATUS_OK;
 
  cancel:
-	if (db->transaction_cancel(db) != 0) {
+	if (dbwrap_transaction_cancel(db) != 0) {
 		smb_panic("transaction_cancel failed");
 	}
 	return status;
diff --git a/source3/include/proto.h b/source3/include/proto.h
index ffc90ff..0fd2281 100644
--- a/source3/include/proto.h
+++ b/source3/include/proto.h
@@ -1675,14 +1675,14 @@ void server_messaging_context_free(void);
 struct sessionid;
 bool sessionid_init(void);
 struct db_record *sessionid_fetch_record(TALLOC_CTX *mem_ctx, const char *key);
-int sessionid_traverse(int (*fn)(struct db_record *rec, const char *key,
-				 struct sessionid *session,
-				 void *private_data),
-		       void *private_data);
-int sessionid_traverse_read(int (*fn)(const char *key,
+NTSTATUS sessionid_traverse(int (*fn)(struct db_record *rec, const char *key,
 				      struct sessionid *session,
 				      void *private_data),
 			    void *private_data);
+NTSTATUS sessionid_traverse_read(int (*fn)(const char *key,
+					   struct sessionid *session,
+					   void *private_data),
+				 void *private_data);
 
 /* The following definitions come from utils/passwd_util.c  */
 
diff --git a/source3/lib/conn_tdb.c b/source3/lib/conn_tdb.c
index f458480..72ba7c6 100644
--- a/source3/lib/conn_tdb.c
+++ b/source3/lib/conn_tdb.c
@@ -48,7 +48,7 @@ static struct db_record *connections_fetch_record(TALLOC_CTX *mem_ctx,
 		return NULL;
 	}
 
-	return ctx->fetch_locked(ctx, mem_ctx, key);
+	return dbwrap_fetch_locked(ctx, mem_ctx, key);
 }
 
 struct db_record *connections_fetch_entry(TALLOC_CTX *mem_ctx,
@@ -79,16 +79,21 @@ struct conn_traverse_state {
 
 static int conn_traverse_fn(struct db_record *rec, void *private_data)
 {
+	TDB_DATA key;
+	TDB_DATA value;
 	struct conn_traverse_state *state =
 		(struct conn_traverse_state *)private_data;
 
-	if ((rec->key.dsize != sizeof(struct connections_key))
-	    || (rec->value.dsize != sizeof(struct connections_data))) {
+	key = dbwrap_record_get_key(rec);
+	value = dbwrap_record_get_value(rec);
+
+	if ((key.dsize != sizeof(struct connections_key))
+	    || (value.dsize != sizeof(struct connections_data))) {
 		return 0;
 	}
 
-	return state->fn(rec, (const struct connections_key *)rec->key.dptr,
-			 (const struct connections_data *)rec->value.dptr,
+	return state->fn(rec, (const struct connections_key *)key.dptr,
+			 (const struct connections_data *)value.dptr,
 			 state->private_data);
 }
 
@@ -96,13 +101,20 @@ int connections_traverse(int (*fn)(struct db_record *rec,
 				   void *private_data),
 			 void *private_data)
 {
+	NTSTATUS status;
+	int count;
 	struct db_context *ctx = connections_db_ctx(False);
 
 	if (ctx == NULL) {
 		return -1;
 	}
 
-	return ctx->traverse(ctx, fn, private_data);
+	status = dbwrap_traverse(ctx, fn, private_data, &count);
+	if (!NT_STATUS_IS_OK(status)) {
+		return -1;
+	}
+
+	return count;
 }
 
 int connections_forall(int (*fn)(struct db_record *rec,
@@ -113,6 +125,8 @@ int connections_forall(int (*fn)(struct db_record *rec,
 {
 	struct db_context *ctx;
 	struct conn_traverse_state state;
+	NTSTATUS status;
+	int count;
 
 	ctx = connections_db_ctx(true);
 	if (ctx == NULL) {
@@ -122,7 +136,12 @@ int connections_forall(int (*fn)(struct db_record *rec,
 	state.fn = fn;
 	state.private_data = private_data;
 
-	return ctx->traverse(ctx, conn_traverse_fn, (void *)&state);
+	status = dbwrap_traverse(ctx, conn_traverse_fn, (void *)&state, &count);
+	if (!NT_STATUS_IS_OK(status)) {
+		return -1;
+	}
+
+	return count;
 }
 
 struct conn_traverse_read_state {
@@ -135,15 +154,20 @@ struct conn_traverse_read_state {
 static int connections_forall_read_fn(struct db_record *rec,
 				      void *private_data)
 {
+	TDB_DATA key;
+	TDB_DATA value;
 	struct conn_traverse_read_state *state =
 		(struct conn_traverse_read_state *)private_data;
 
-	if ((rec->key.dsize != sizeof(struct connections_key))
-	    || (rec->value.dsize != sizeof(struct connections_data))) {
+	key = dbwrap_record_get_key(rec);
+	value = dbwrap_record_get_value(rec);
+
+	if ((key.dsize != sizeof(struct connections_key))
+	    || (value.dsize != sizeof(struct connections_data))) {
 		return 0;
 	}
-	return state->fn((const struct connections_key *)rec->key.dptr,
-			 (const struct connections_data *)rec->value.dptr,
+	return state->fn((const struct connections_key *)key.dptr,
+			 (const struct connections_data *)value.dptr,
 			 state->private_data);
 }
 
@@ -154,6 +178,8 @@ int connections_forall_read(int (*fn)(const struct connections_key *key,
 {
 	struct db_context *ctx;
 	struct conn_traverse_read_state state;
+	NTSTATUS status;
+	int count;
 
 	ctx = connections_db_ctx(false);
 	if (ctx == NULL) {
@@ -163,8 +189,14 @@ int connections_forall_read(int (*fn)(const struct connections_key *key,
 	state.fn = fn;
 	state.private_data = private_data;
 
-	return ctx->traverse_read(ctx, connections_forall_read_fn,
-				  (void *)&state);
+	status = dbwrap_traverse_read(ctx, connections_forall_read_fn,
+				      (void *)&state, &count);
+
+	if (!NT_STATUS_IS_OK(status)) {
+		return -1;
+	}
+
+	return count;
 }
 
 bool connections_init(bool rw)
diff --git a/source3/lib/dbwrap/dbwrap.c b/source3/lib/dbwrap/dbwrap.c
index 6a6d4c6..38404a8 100644
--- a/source3/lib/dbwrap/dbwrap.c
+++ b/source3/lib/dbwrap/dbwrap.c
@@ -22,6 +22,7 @@
 #include "includes.h"
 #include "dbwrap/dbwrap.h"
 #include "dbwrap/dbwrap_private.h"
+#include "util_tdb.h"
 
 /*
  * Fall back using fetch_locked if no genuine fetch operation is provided
@@ -43,6 +44,16 @@ int dbwrap_fallback_fetch(struct db_context *db, TALLOC_CTX *mem_ctx,
 }
 
 /*
+ * Fall back using fetch if no genuine exists operation is provided
+ */
+
+static int dbwrap_fallback_exists(struct db_context *db, TDB_DATA key)
+{
+	int res = dbwrap_parse_record(db, key, NULL, NULL);
+	return  ( res == -1) ? 0 : 1;
+}
+
+/*
  * Fall back using fetch if no genuine parse operation is provided
  */
 
@@ -57,10 +68,206 @@ int dbwrap_fallback_parse_record(struct db_context *db, TDB_DATA key,
 
 	res = db->fetch(db, talloc_tos(), key, &data);
 	if (res != 0) {
-		return res;
+		return -1;
 	}
 
 	res = parser(key, data, private_data);
 	TALLOC_FREE(data.dptr);
 	return res;
 }
+
+
+static int delete_record(struct db_record *rec, void *data)
+{
+	NTSTATUS status = rec->delete_rec(rec);
+	return NT_STATUS_IS_OK(status) ? 0 : -1;
+}
+
+/*
+ * Fallback wipe ipmlementation using traverse and delete if no genuine
+ * wipe operation is provided
+ */
+int dbwrap_fallback_wipe(struct db_context *db)
+{
+	NTSTATUS status = dbwrap_trans_traverse(db, &delete_record, NULL);
+	return NT_STATUS_IS_OK(status) ? 0 : -1;
+}
+
+
+/*
+ * Wrapper functions for the backend methods
+ */
+
+TDB_DATA dbwrap_record_get_key(const struct db_record *rec)
+{
+	return rec->key;
+}
+
+TDB_DATA dbwrap_record_get_value(const struct db_record *rec)
+{
+	return rec->value;
+}
+
+void *dbwrap_record_get_private_data(const struct db_record *rec)
+{
+	return rec->private_data;
+}
+
+NTSTATUS dbwrap_record_store(struct db_record *rec, TDB_DATA data, int flags)
+{
+	return rec->store(rec, data, flags);
+}
+
+NTSTATUS dbwrap_record_delete(struct db_record *rec)
+{
+	return rec->delete_rec(rec);
+}
+
+struct db_record *dbwrap_fetch_locked(struct db_context *db,
+				      TALLOC_CTX *mem_ctx,
+				      TDB_DATA key)
+{
+	return db->fetch_locked(db, mem_ctx, key);
+}
+
+NTSTATUS dbwrap_fetch(struct db_context *db, TALLOC_CTX *mem_ctx,
+		      TDB_DATA key, TDB_DATA *value)
+{
+	if (value == NULL) {
+		return NT_STATUS_INVALID_PARAMETER;
+	}
+
+	if (db->fetch(db, mem_ctx, key, value) != 0) {
+		return NT_STATUS_NOT_FOUND;
+	}
+
+	return NT_STATUS_OK;
+}
+
+bool dbwrap_exists(struct db_context *db, TDB_DATA key)
+{
+	int result;
+	if (db->exists != NULL) {
+		result = db->exists(db, key);
+	} else {
+		result = dbwrap_fallback_exists(db,key);


-- 
Samba Shared Repository


More information about the samba-cvs mailing list