[SCM] Samba Shared Repository - branch master updated - release-4-0-0alpha8-910-g1de9805
Volker Lendecke
vlendec at samba.org
Sat Aug 8 05:45:06 MDT 2009
The branch, master has been updated
via 1de9805fa3d5f05d187df092a65955dfc62a3d81 (commit)
via e8088e16f812d682e08ad558865d0cc6eab2ad9c (commit)
from e1a95e7961a4ffe67ee7abe61faad0e7e65417d6 (commit)
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master
- Log -----------------------------------------------------------------
commit 1de9805fa3d5f05d187df092a65955dfc62a3d81
Author: Volker Lendecke <vl at samba.org>
Date: Sat Aug 8 13:43:41 2009 +0200
Implement db_rbt_traverse
commit e8088e16f812d682e08ad558865d0cc6eab2ad9c
Author: Volker Lendecke <vl at samba.org>
Date: Sat Aug 8 13:42:55 2009 +0200
Make wbinfo also print the members when querying a group
-----------------------------------------------------------------------
Summary of changes:
nsswitch/wbinfo.c | 20 ++++++++++++++++++--
source3/lib/dbwrap_rbt.c | 37 +++++++++++++++++++++++++++++++++----
2 files changed, 51 insertions(+), 6 deletions(-)
Changeset truncated at 500 lines:
diff --git a/nsswitch/wbinfo.c b/nsswitch/wbinfo.c
index 5dd96f9..ac5b4c4 100644
--- a/nsswitch/wbinfo.c
+++ b/nsswitch/wbinfo.c
@@ -233,17 +233,25 @@ static bool wbinfo_get_groupinfo(const char *group)
{
wbcErr wbc_status = WBC_ERR_UNKNOWN_FAILURE;
struct group *grp;
+ char **mem;
wbc_status = wbcGetgrnam(group, &grp);
if (!WBC_ERROR_IS_OK(wbc_status)) {
return false;
}
- d_printf("%s:%s:%u\n",
+ d_printf("%s:%s:%u:",
grp->gr_name,
grp->gr_passwd,
(unsigned int)grp->gr_gid);
+ mem = grp->gr_mem;
+ while (*mem != NULL) {
+ d_printf("%s%s", *mem, *(mem+1) != NULL ? "," : "");
+ mem += 1;
+ }
+ d_printf("\n");
+
wbcFreeMemory(grp);
return true;
@@ -254,17 +262,25 @@ static bool wbinfo_get_gidinfo(int gid)
{
wbcErr wbc_status = WBC_ERR_UNKNOWN_FAILURE;
struct group *grp;
+ char **mem;
wbc_status = wbcGetgrgid(gid, &grp);
if (!WBC_ERROR_IS_OK(wbc_status)) {
return false;
}
- d_printf("%s:%s:%u\n",
+ d_printf("%s:%s:%u:",
grp->gr_name,
grp->gr_passwd,
(unsigned int)grp->gr_gid);
+ mem = grp->gr_mem;
+ while (*mem != NULL) {
+ d_printf("%s%s", *mem, *(mem+1) != NULL ? "," : "");
+ mem += 1;
+ }
+ d_printf("\n");
+
wbcFreeMemory(grp);
return true;
diff --git a/source3/lib/dbwrap_rbt.c b/source3/lib/dbwrap_rbt.c
index cf4faa2..e9b0e46 100644
--- a/source3/lib/dbwrap_rbt.c
+++ b/source3/lib/dbwrap_rbt.c
@@ -335,16 +335,45 @@ static int db_rbt_fetch(struct db_context *db, TALLOC_CTX *mem_ctx,
return 0;
}
+static int db_rbt_traverse_internal(struct rb_node *n,
+ int (*f)(struct db_record *db,
+ void *private_data),
+ void *private_data)
+{
+ struct db_rbt_node *r;
+ struct db_record rec;
+ int ret;
+
+ if (n == NULL) {
+ return 0;
+ }
+
+ ret = db_rbt_traverse_internal(n->rb_left, f, private_data);
+ if (ret != 0) {
+ return ret;
+ }
+
+ r = db_rbt2node(n);
+ ZERO_STRUCT(rec);
+ db_rbt_parse_node(r, &rec.key, &rec.value);
+
+ ret = f(&rec, private_data);
+ if (ret != 0) {
+ return ret;
+ }
+
+ return db_rbt_traverse_internal(n->rb_right, f, private_data);
+}
static int db_rbt_traverse(struct db_context *db,
int (*f)(struct db_record *db,
void *private_data),
void *private_data)
{
- /*
- * Nobody uses this so far, and unused code is broken code :-)
- */
- return -1;
+ struct db_rbt_ctx *ctx = talloc_get_type_abort(
+ db->private_data, struct db_rbt_ctx);
+
+ return db_rbt_traverse_internal(ctx->tree.rb_node, f, private_data);
}
static int db_rbt_get_seqnum(struct db_context *db)
--
Samba Shared Repository
More information about the samba-cvs
mailing list