diff options
author | Simo Sorce <ssorce@redhat.com> | 2010-03-14 19:50:53 -0400 |
---|---|---|
committer | Stephen Gallagher <sgallagh@redhat.com> | 2010-04-12 09:22:16 -0400 |
commit | 25465215742b9c78566d44cd06a886c4a4e43ffa (patch) | |
tree | 42dc9be4ce5fae70bd33bd9b03b2cf2e73347730 /src/tools/sss_useradd.c | |
parent | a298e5b4050a69238593017ccc774336eb332e16 (diff) | |
download | sssd-25465215742b9c78566d44cd06a886c4a4e43ffa.tar.gz sssd-25465215742b9c78566d44cd06a886c4a4e43ffa.tar.xz sssd-25465215742b9c78566d44cd06a886c4a4e43ffa.zip |
sysdb: convert sysdb_getgrnam
Diffstat (limited to 'src/tools/sss_useradd.c')
-rw-r--r-- | src/tools/sss_useradd.c | 57 |
1 files changed, 17 insertions, 40 deletions
diff --git a/src/tools/sss_useradd.c b/src/tools/sss_useradd.c index 0dc1993e5..620c3b2f0 100644 --- a/src/tools/sss_useradd.c +++ b/src/tools/sss_useradd.c @@ -32,39 +32,13 @@ #include "tools/tools_util.h" #include "tools/sss_sync_ops.h" -static void get_gid_callback(void *ptr, int error, struct ldb_result *res) -{ - struct tools_ctx *tctx = talloc_get_type(ptr, struct tools_ctx); - - if (error) { - tctx->error = error; - return; - } - - switch (res->count) { - case 0: - tctx->error = ENOENT; - break; - - case 1: - tctx->octx->gid = ldb_msg_find_attr_as_uint(res->msgs[0], SYSDB_GIDNUM, 0); - if (tctx->octx->gid == 0) { - tctx->error = ERANGE; - } - break; - - default: - tctx->error = EFAULT; - break; - } -} - /* Returns a gid for a given groupname. If a numerical gid * is given, returns that as integer (rationale: shadow-utils) * On error, returns -EINVAL */ static int get_gid(struct tools_ctx *tctx, const char *groupname) { + struct ldb_result *res; char *end_ptr; int ret; @@ -75,27 +49,30 @@ static int get_gid(struct tools_ctx *tctx, const char *groupname) /* Does not look like a gid - find the group name */ ret = sysdb_getgrnam(tctx->octx, tctx->sysdb, - tctx->octx->domain, groupname, - get_gid_callback, tctx); + tctx->octx->domain, groupname, &res); if (ret != EOK) { DEBUG(1, ("sysdb_getgrnam failed: %d\n", ret)); - goto done; + return ret; } - tctx->error = EOK; - tctx->octx->gid = 0; - while ((tctx->error == EOK) && (tctx->octx->gid == 0)) { - tevent_loop_once(tctx->ev); - } + switch (res->count) { + case 0: + return ENOENT; - if (tctx->error) { - DEBUG(1, ("sysdb_getgrnam failed: %d\n", ret)); - goto done; + case 1: + tctx->octx->gid = ldb_msg_find_attr_as_uint(res->msgs[0], + SYSDB_GIDNUM, 0); + if (tctx->octx->gid == 0) { + return ERANGE; + } + break; + + default: + return EFAULT; } } -done: - return ret; + return EOK; } int main(int argc, const char **argv) |