summaryrefslogtreecommitdiffstats
path: root/src/tools/sss_useradd.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_useradd.c
parenta298e5b4050a69238593017ccc774336eb332e16 (diff)
downloadsssd-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.c57
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)