summaryrefslogtreecommitdiffstats
path: root/src/tools/sss_sync_ops.c
diff options
context:
space:
mode:
authorSimo Sorce <ssorce@redhat.com>2010-03-14 19:50:53 -0400
committerStephen Gallagher <sgallagh@redhat.com>2010-04-12 09:22:16 -0400
commit25465215742b9c78566d44cd06a886c4a4e43ffa (patch)
tree42dc9be4ce5fae70bd33bd9b03b2cf2e73347730 /src/tools/sss_sync_ops.c
parenta298e5b4050a69238593017ccc774336eb332e16 (diff)
downloadsssd-25465215742b9c78566d44cd06a886c4a4e43ffa.tar.gz
sssd-25465215742b9c78566d44cd06a886c4a4e43ffa.tar.xz
sssd-25465215742b9c78566d44cd06a886c4a4e43ffa.zip
sysdb: convert sysdb_getgrnam
Diffstat (limited to 'src/tools/sss_sync_ops.c')
-rw-r--r--src/tools/sss_sync_ops.c81
1 files changed, 24 insertions, 57 deletions
diff --git a/src/tools/sss_sync_ops.c b/src/tools/sss_sync_ops.c
index 70203cf2f..f3721a018 100644
--- a/src/tools/sss_sync_ops.c
+++ b/src/tools/sss_sync_ops.c
@@ -666,75 +666,42 @@ int sysdb_getpwnam_sync(TALLOC_CTX *mem_ctx,
return EOK;
}
-static void sss_getgrnam_done(void *ptr, int status,
- struct ldb_result *lrs);
-
int sysdb_getgrnam_sync(TALLOC_CTX *mem_ctx,
struct tevent_context *ev,
struct sysdb_ctx *sysdb,
const char *name,
struct sss_domain_info *domain,
- struct ops_ctx **out)
+ struct ops_ctx *out)
{
+ struct ldb_result *res;
+ const char *str;
int ret;
- struct sync_op_res *res = NULL;
- res = talloc_zero(mem_ctx, struct sync_op_res);
- if (!res) {
- return ENOMEM;
- }
-
- if (out == NULL) {
- DEBUG(1, ("NULL passed for storage pointer\n"));
- return EINVAL;
+ ret = sysdb_getgrnam(mem_ctx, sysdb, domain, name, &res);
+ if (ret) {
+ return ret;
}
- res->data = *out;
-
- ret = sysdb_getgrnam(mem_ctx,
- sysdb,
- domain,
- name,
- sss_getgrnam_done,
- res);
- SYNC_LOOP(res, ret);
-
- return ret;
-}
+ switch (res->count) {
+ case 0:
+ DEBUG(1, ("No result for sysdb_getgrnam call\n"));
+ return ENOENT;
-static void sss_getgrnam_done(void *ptr, int status,
- struct ldb_result *lrs)
-{
- struct sync_op_res *res = talloc_get_type(ptr, struct sync_op_res );
- const char *str;
+ case 1:
+ /* fill ops_ctx */
+ out->gid = ldb_msg_find_attr_as_uint64(res->msgs[0], SYSDB_GIDNUM, 0);
+ str = ldb_msg_find_attr_as_string(res->msgs[0], SYSDB_NAME, NULL);
+ out->name = talloc_strdup(out, str);
+ if (out->name == NULL) {
+ return ENOMEM;
+ }
+ break;
- res->done = true;
-
- if (status != LDB_SUCCESS) {
- res->error = status;
- return;
- }
-
- switch (lrs->count) {
- case 0:
- DEBUG(1, ("No result for sysdb_getgrnam call\n"));
- res->error = ENOENT;
- break;
-
- /* sysdb_getgrnam also returns members */
- default:
- res->error = EOK;
- /* fill ops_ctx */
- res->data->gid = ldb_msg_find_attr_as_uint64(lrs->msgs[0],
- SYSDB_GIDNUM, 0);
- str = ldb_msg_find_attr_as_string(lrs->msgs[0],
- SYSDB_NAME, NULL);
- res->data->name = talloc_strdup(res, str);
- if (res->data->name == NULL) {
- res->error = ENOMEM;
- return;
- }
- break;
+ default:
+ DEBUG(1, ("More than one result for sysdb_getgrnam call\n"));
+ return EIO;
}
+
+ return EOK;
}