diff options
author | Simo Sorce <ssorce@redhat.com> | 2009-03-04 10:28:09 -0500 |
---|---|---|
committer | Simo Sorce <ssorce@redhat.com> | 2009-03-04 10:28:09 -0500 |
commit | 3257f91e0f39601f36057bec2e0e6c8b5e061cc8 (patch) | |
tree | 2c41edce52c36fc4c8733c112b0cc6c82e398584 /server/db/sysdb.c | |
parent | 4636daa206028b0321014ebddb6b9670c805438a (diff) | |
download | sssd-3257f91e0f39601f36057bec2e0e6c8b5e061cc8.tar.gz sssd-3257f91e0f39601f36057bec2e0e6c8b5e061cc8.tar.xz sssd-3257f91e0f39601f36057bec2e0e6c8b5e061cc8.zip |
Improve sysdb
Add comments in header files to better explain interfaces and intended usage.
Expose function to convert from ldb errors to errnos.
Add sysdb_attrs helper to add a long integer as a value.
Diffstat (limited to 'server/db/sysdb.c')
-rw-r--r-- | server/db/sysdb.c | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/server/db/sysdb.c b/server/db/sysdb.c index 022e33e47..b65584997 100644 --- a/server/db/sysdb.c +++ b/server/db/sysdb.c @@ -116,6 +116,42 @@ int sysdb_attrs_add_string(struct sysdb_attrs *attrs, return sysdb_attrs_add_val(attrs, name, &v); } +int sysdb_attrs_add_long(struct sysdb_attrs *attrs, + const char *name, long value) +{ + struct ldb_val v; + char *str; + int ret; + + str = talloc_asprintf(attrs, "%ld", value); + if (!str) return ENOMEM; + + v.data = (uint8_t *)str; + v.length = strlen(str); + + ret = sysdb_attrs_add_val(attrs, name, &v); + talloc_free(str); + + return ret; +} + +/* TODO: make a more complete and precise mapping */ +int sysdb_error_to_errno(int ldberr) +{ + switch (ldberr) { + case LDB_SUCCESS: + return EOK; + case LDB_ERR_OPERATIONS_ERROR: + return EIO; + case LDB_ERR_NO_SUCH_OBJECT: + return ENOENT; + case LDB_ERR_BUSY: + return EBUSY; + default: + return EFAULT; + } +} + /************************************************ * Initialiazation stuff */ |